SlsqpOptimizer#

class SlsqpOptimizer(iter=100, acc=1e-06, iprint=0, trials=1, clip=100.0, full_output=False)[source]#

Bases: MultiStartOptimizer

The SciPy SLSQP optimizer wrapped as an Qiskit OptimizationAlgorithm.

This class provides a wrapper for scipy.optimize.fmin_slsqp (https://docs.scipy.org/doc/scipy-0.13.0/reference/generated/scipy.optimize.fmin_slsqp.html) to be used within the optimization module. The arguments for fmin_slsqp are passed via the constructor.

Examples

>>> from qiskit_optimization.problems import QuadraticProgram
>>> from qiskit_optimization.algorithms import SlsqpOptimizer
>>> problem = QuadraticProgram()
>>> # specify problem here
>>> x = problem.continuous_var(name="x")
>>> y = problem.continuous_var(name="y")
>>> problem.maximize(linear=[2, 0], quadratic=[[-1, 2], [0, -2]])
>>> optimizer = SlsqpOptimizer()
>>> result = optimizer.solve(problem)

Initializes the SlsqpOptimizer.

This initializer takes the algorithmic parameters of SLSQP and stores them for later use of fmin_slsqp when solve() is invoked. This optimizer can be applied to find a (local) optimum for problems consisting of only continuous variables.

Parameters:
  • iter (int) – The maximum number of iterations.

  • acc (float) – Requested accuracy.

  • iprint (int) –

    The verbosity of fmin_slsqp :

    • iprint <= 0 : Silent operation

    • iprint == 1 : Print summary upon completion (default)

    • iprint >= 2 : Print status of each iterate and summary

  • trials (int) – The number of trials for multi-start method. The first trial is solved with the initial guess of zero. If more than one trial is specified then initial guesses are uniformly drawn from [lowerbound, upperbound] with potential clipping.

  • clip (float) – Clipping parameter for the initial guesses in the multi-start method. If a variable is unbounded then the lower bound and/or upper bound are replaced with the -clip or clip values correspondingly for the initial guesses.

  • full_output (bool) – If False, return only the minimizer of func (default). Otherwise, output final objective function and summary information.

Attributes

clip#

Returns the clip value for this optimizer.

Returns:

The clip value.

trials#

Returns the number of trials for this optimizer.

Returns:

The number of trials.

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 contains only continuous variables, and otherwise, returns a message explaining the incompatibility.

Parameters:

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

Returns:

Returns a string describing the incompatibility.

Return type:

str

is_compatible(problem)#

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

Parameters:

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

Returns:

Returns True if the problem is compatible, False otherwise.

Return type:

bool

multi_start_solve(minimize, problem)#

Applies a multi start method given a local optimizer.

Parameters:
Returns:

The result of the multi start algorithm applied to the problem.

Return type:

OptimizationResult

solve(problem)[source]#

Tries to solves the given problem using the optimizer.

Runs the optimizer to try to solve the optimization problem.

Parameters:

problem (QuadraticProgram) – The problem to be solved.

Returns:

The result of the optimizer applied to the problem.

Raises:

QiskitOptimizationError – If the problem is incompatible with the optimizer.

Return type:

OptimizationResult