Skip to content

Commit ae89d58

Browse files
dongreenbergmanoelmarquesCryoris
authored
Fix Change Operator Size in QAOA (qiskit-community/qiskit-aqua#929)
* Fix qiskit-community/qiskit-aqua#928 * trigger CLA check * Really fix. * Add test for changing Operator size. * Fix style Co-authored-by: Manoel Marques <manoel@us.ibm.com> Co-authored-by: Julien Gacon <jules.gacon@googlemail.com>
1 parent 4334e70 commit ae89d58

File tree

3 files changed

+8
-3
lines changed

3 files changed

+8
-3
lines changed

qiskit/aqua/algorithms/minimum_eigen_solvers/qaoa/qaoa.py

+2
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,8 @@ def __init__(self,
123123
@VQE.operator.setter
124124
def operator(self, operator: Union[OperatorBase, LegacyBaseOperator]) -> None:
125125
""" Sets operator """
126+
# Need to wipe the var_form in case number of qubits differs from operator.
127+
self.var_form = None
126128
# Setting with VQE's operator property
127129
super(QAOA, self.__class__).operator.__set__(self, operator)
128130
self.var_form = QAOAVarForm(self.operator,

qiskit/aqua/algorithms/minimum_eigen_solvers/vqe.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,9 @@ def __init__(self,
131131

132132
self._max_evals_grouped = max_evals_grouped
133133
self._circuit_sampler = None
134+
self._expectation = expectation
134135
self._expect_op = None
136+
self._operator = None
135137

136138
super().__init__(var_form=var_form,
137139
optimizer=optimizer,
@@ -143,8 +145,6 @@ def __init__(self,
143145
self._optimizer.set_max_evals_grouped(max_evals_grouped)
144146
self._callback = callback
145147

146-
self._expectation = expectation
147-
self._operator = None
148148
if operator is not None:
149149
self.operator = operator
150150
self.aux_operators = aux_operators

qiskit/aqua/algorithms/vq_algorithm.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ def var_form(self) -> Optional[Union[QuantumCircuit, VariationalForm]]:
8484
return self._var_form
8585

8686
@var_form.setter
87-
def var_form(self, var_form: Union[QuantumCircuit, VariationalForm]):
87+
def var_form(self, var_form: Optional[Union[QuantumCircuit, VariationalForm]]):
8888
""" Sets variational form """
8989
if isinstance(var_form, QuantumCircuit):
9090
# store the parameters
@@ -93,6 +93,9 @@ def var_form(self, var_form: Union[QuantumCircuit, VariationalForm]):
9393
elif isinstance(var_form, VariationalForm):
9494
self._var_form_params = ParameterVector('θ', length=var_form.num_parameters)
9595
self._var_form = var_form
96+
elif var_form is None:
97+
self._var_form_params = None
98+
self._var_form = var_form
9699
else:
97100
raise ValueError(
98101
"Unsupported type '{}' of var_form".format(

0 commit comments

Comments
 (0)