RecursiveMinimumEigenOptimizer#
- class RecursiveMinimumEigenOptimizer(optimizer, min_num_vars=1, min_num_vars_optimizer=None, penalty=None, history=IntermediateResult.LAST_ITERATION, converters=None)[source]#
Bases:
OptimizationAlgorithmA meta-algorithm that applies a recursive optimization.
The recursive minimum eigen optimizer applies a recursive optimization on top of
OptimizationAlgorithm. This optimizer can useMinimumEigenOptimizeras an optimizer that is called at each iteration. The algorithm is introduced in [1].Examples
Outline of how to use this class:
from qiskit_algorithms import QAOA from qiskit_optimization.problems import QuadraticProgram from qiskit_optimization.algorithms import ( MinimumEigenOptimizer, RecursiveMinimumEigenOptimizer ) problem = QuadraticProgram() # specify problem here # specify minimum eigen solver to be used, e.g., QAOA qaoa = QAOA(...) internal_optimizer = MinimumEigenOptimizer(qaoa) optimizer = RecursiveMinimumEigenOptimizer(internal_optimizer) result = optimizer.solve(problem)
References
[1] Bravyi et al. (2019), Obstacles to State Preparation and Variational Optimization from Symmetry Protection. arXiv:1910.08980
Initializes the recursive minimum eigen optimizer.
This initializer takes an
OptimizationAlgorithm, the parameters to specify until when to to apply the iterative scheme, and the optimizer to be applied once the threshold number of variables is reached.- প্যারামিটার:
optimizer (OptimizationAlgorithm) -- The optimizer to use in every iteration.
min_num_vars (int) -- The minimum number of variables to apply the recursive scheme. If this threshold is reached, the min_num_vars_optimizer is used.
min_num_vars_optimizer (OptimizationAlgorithm | None) -- This optimizer is used after the recursive scheme for the problem with the remaining variables. Default value is
MinimumEigenOptimizercreated on top ofNumPyMinimumEigensolver.penalty (float | None) -- The factor that is used to scale the penalty terms corresponding to linear equality constraints.
history (IntermediateResult | None) -- Whether the intermediate results are stored. Default value is
LAST_ITERATION.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
QuadraticProgramToQubowill be used.
- রেইজেস:
QiskitOptimizationError -- In case of invalid parameters (num_min_vars < 1).
TypeError -- When there one of converters is an invalid type.
Methods
- get_compatibility_msg(problem)[source]#
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.
- রিটার্ন টাইপ:
- is_compatible(problem)#
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.
- রিটার্ন টাইপ:
- solve(problem)[source]#
Tries to solve the given problem using the recursive optimizer.
Runs the optimizer to try to solve the optimization problem.
- প্যারামিটার:
problem (QuadraticProgram) -- The problem to be solved.
- রিটার্নস:
The result of the optimizer applied to the problem.
- রেইজেস:
QiskitOptimizationError -- Incompatible problem.
QiskitOptimizationError -- Infeasible due to variable substitution
- রিটার্ন টাইপ: