RecursiveMinimumEigenOptimizer#

class RecursiveMinimumEigenOptimizer(optimizer, min_num_vars=1, min_num_vars_optimizer=None, penalty=None, history=IntermediateResult.LAST_ITERATION, converters=None)[ソース]#

ベースクラス: OptimizationAlgorithm

A meta-algorithm that applies a recursive optimization.

The recursive minimum eigen optimizer applies a recursive optimization on top of OptimizationAlgorithm. This optimizer can use MinimumEigenOptimizer as an optimizer that is called at each iteration. The algorithm is introduced in [1].

サンプル

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)

参照

[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.

パラメータ:
例外:

Methods

get_compatibility_msg(problem)[ソース]#

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.

戻り値の型:

str

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.

戻り値の型:

bool

solve(problem)[ソース]#

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.

例外:
戻り値の型:

OptimizationResult