class WarmStartQAOAOptimizer(pre_solver, relax_for_pre_solver, qaoa, epsilon=0.25, num_initial_solutions=1, warm_start_factory=None, aggregator=None, penalty=None, converters=None)[source]#

Bases: MinimumEigenOptimizer

A meta-algorithm that uses a pre-solver to solve a relaxed version of the problem. Users must implement their own pre solvers by inheriting from the base class.


[1]: Daniel J. Egger et al., Warm-starting quantum optimization.


Initializes the optimizer. For correct initialization either

epsilon or circuit_factory must be passed. If only epsilon is specified (either an explicit value or the default one), then an instance of WarmStartQAOACircuitFactory is created. If circuit_factory is specified then this instance is used in the implementation and epsilon value is ignored.

  • pre_solver (OptimizationAlgorithm) -- An instance of an optimizer to solve the relaxed version of the problem.

  • relax_for_pre_solver (bool) -- True if the problem must be relaxed to the continuous case before passing it to the pre-solver.

  • qaoa (QAOA) -- A QAOA instance to be used in the computations.

  • epsilon (float) -- the regularization parameter that changes the initial variables according to xi = epsilon if xi < epsilon xi = 1-epsilon if xi > epsilon. The regularization parameter epsilon should be between 0 and 0.5. When it is 0.5 then warm start corresponds to standard QAOA. If circuit_factory is specified then this parameter is ignored. Default value is 0.25.

  • num_initial_solutions (int) -- An optional number of relaxed (continuous) solutions to use. Default value is 1.

  • warm_start_factory (WarmStartQAOAFactory | None) -- An optional instance of the factory to warm start QAOA. This factory is used to create circuits for initial state and mixer. If None is specified then a default one, an instance of WarmStartQAOACircuitFactory is created using the value of the epsilon parameter.

  • aggregator (BaseAggregator | None) -- Class that aggregates different results. This is used if the pre-solver returns several initial states.

  • penalty (float | None) -- The penalty factor to be used, or None for applying a default logic.

  • converters (QuadraticProgramConverter | List[QuadraticProgramConverter] | None) -- The converters to use for converting a problem into a different form. By default, when None is specified, an internally created instance of QuadraticProgramToQubo will be used.


QiskitOptimizationError -- if epsilon is not in the range [0, 0.5].



Returns the minimum eigensolver.



Checks whether a given problem can be solved with this optimizer.

Checks whether the given problem is compatible, i.e., whether the problem can be converted to a QUBO, and otherwise, returns a message explaining the incompatibility.


problem (QuadraticProgram) -- The optimization problem to check compatibility.


A message describing the incompatibility.

রিটার্ন টাইপ:



Checks whether a given problem can be solved with the optimizer implementing this method.


problem (QuadraticProgram) -- The optimization problem to check compatibility.


Returns True if the problem is compatible, False otherwise.

রিটার্ন টাইপ:



Tries to solves the given problem using the optimizer.

The pre-solver is run to warm-start the solver. Next, the optimizer is run to try to solve the optimization problem.


problem (QuadraticProgram) -- The problem to be solved.


The result of the optimizer applied to the problem.


QiskitOptimizationError -- If problem not compatible or the presolver can't solve a problem.

রিটার্ন টাইপ: