@@ -259,7 +259,7 @@ def compute_eigenvalues(
259259
260260 eval_time = time () - start_time
261261
262- self ._update_vqd_result (result , opt_result , eval_time , self .ansatz )
262+ self ._update_vqd_result (result , opt_result , eval_time , self .ansatz . copy () )
263263
264264 if aux_operators is not None :
265265 aux_value = estimate_observables (
@@ -388,6 +388,7 @@ def _build_vqd_result() -> VQDResult:
388388 result .optimizer_times = []
389389 result .eigenvalues = []
390390 result .optimizer_results = []
391+ result .optimal_circuits = []
391392 return result
392393
393394 @staticmethod
@@ -400,6 +401,7 @@ def _update_vqd_result(result, opt_result, eval_time, ansatz) -> VQDResult:
400401 result .optimizer_times .append (eval_time )
401402 result .eigenvalues .append (opt_result .fun + 0j )
402403 result .optimizer_results .append (opt_result )
404+ result .optimal_circuits .append (ansatz )
403405 return result
404406
405407
@@ -414,6 +416,7 @@ def __init__(self) -> None:
414416 self ._optimal_points = None
415417 self ._optimal_parameters = None
416418 self ._optimizer_results = None
419+ self ._optimal_circuits = None
417420
418421 @property
419422 def cost_function_evals (self ) -> Sequence [int ] | None :
@@ -474,3 +477,13 @@ def optimizer_results(self) -> Sequence[OptimizerResult] | None:
474477 def optimizer_results (self , value : Sequence [OptimizerResult ]) -> None :
475478 """Sets optimizer results"""
476479 self ._optimizer_results = value
480+
481+ @property
482+ def optimal_circuits (self ) -> list [QuantumCircuit ]:
483+ """The optimal circuits. Along with the optimal parameters,
484+ these can be used to retrieve the different eigenstates."""
485+ return self ._optimal_circuits
486+
487+ @optimal_circuits .setter
488+ def optimal_circuits (self , optimal_circuits : list [QuantumCircuit ]) -> None :
489+ self ._optimal_circuits = optimal_circuits
0 commit comments