diff --git a/qiskit/aqua/algorithms/minimum_eigen_solvers/qaoa/qaoa.py b/qiskit/aqua/algorithms/minimum_eigen_solvers/qaoa/qaoa.py index a97c1c0af286..144bf438db89 100755 --- a/qiskit/aqua/algorithms/minimum_eigen_solvers/qaoa/qaoa.py +++ b/qiskit/aqua/algorithms/minimum_eigen_solvers/qaoa/qaoa.py @@ -16,6 +16,7 @@ import logging import numpy as np +from qiskit.circuit import QuantumCircuit from qiskit.providers import BaseBackend from qiskit.providers import Backend from qiskit.aqua import QuantumInstance @@ -67,7 +68,7 @@ def __init__(self, operator: Union[OperatorBase, LegacyBaseOperator] = None, optimizer: Optimizer = None, p: int = 1, - initial_state: Optional[InitialState] = None, + initial_state: Optional[Union[QuantumCircuit, InitialState]] = None, mixer: Union[OperatorBase, LegacyBaseOperator] = None, initial_point: Optional[np.ndarray] = None, gradient: Optional[Union[GradientBase, Callable[[Union[np.ndarray, List]], diff --git a/qiskit/aqua/algorithms/minimum_eigen_solvers/qaoa/var_form.py b/qiskit/aqua/algorithms/minimum_eigen_solvers/qaoa/var_form.py index 6180cd66c27d..f124d467730b 100755 --- a/qiskit/aqua/algorithms/minimum_eigen_solvers/qaoa/var_form.py +++ b/qiskit/aqua/algorithms/minimum_eigen_solvers/qaoa/var_form.py @@ -12,10 +12,11 @@ """Global X phases and parameterized problem hamiltonian.""" -from typing import Optional +from typing import Optional, Union import numpy as np +from qiskit import QuantumCircuit from qiskit.aqua.operators import (OperatorBase, X, I, H, CircuitStateFn, EvolutionFactory, LegacyBaseOperator) from qiskit.aqua.components.variational_forms import VariationalForm @@ -31,7 +32,7 @@ class QAOAVarForm(VariationalForm): def __init__(self, cost_operator: OperatorBase, p: int, - initial_state: Optional[InitialState] = None, + initial_state: Optional[Union[QuantumCircuit, InitialState]] = None, mixer_operator: Optional[OperatorBase] = None): """ Constructor, following the QAOA paper https://arxiv.org/abs/1411.4028 @@ -81,9 +82,10 @@ def construct_circuit(self, parameters, q=None): )) # initialize circuit, possibly based on given register/initial state - if self._initial_state is not None: - stateVector = CircuitStateFn(self._initial_state.construct_circuit('circuit')) - circuit = stateVector.to_circuit_op() + if isinstance(self._initial_state, QuantumCircuit): + circuit = CircuitStateFn(self._initial_state) + elif self._initial_state is not None: + circuit = CircuitStateFn(self._initial_state.construct_circuit('circuit')) else: circuit = (H ^ self._num_qubits) diff --git a/qiskit/aqua/operators/legacy/weighted_pauli_operator.py b/qiskit/aqua/operators/legacy/weighted_pauli_operator.py index 0893cbf86320..4f1ab276491b 100644 --- a/qiskit/aqua/operators/legacy/weighted_pauli_operator.py +++ b/qiskit/aqua/operators/legacy/weighted_pauli_operator.py @@ -1250,7 +1250,7 @@ def two_qubit_reduction(operator, num_particles): "Return the empty operator back.") return operator - if isinstance(num_particles, list): + if isinstance(num_particles, (tuple, list)): num_alpha = num_particles[0] num_beta = num_particles[1] else: