Skip to main contentIBM Quantum Documentation
You are viewing the API reference for an old version of Qiskit SDK. Switch to latest version




It contains a variety of classical optimizers for use by quantum variational algorithms, such as VQE. Logically, these optimizers can be divided into two categories:

Local Optimizers

Given an optimization problem, a local optimizer is a function that attempts to find an optimal value within the neighboring set of a candidate solution.

Global Optimizers

Given an optimization problem, a global optimizer is a function that attempts to find an optimal value among all possible solutions.

Optimizer Base Class

OptimizerResultThe result of an optimization routine.
OptimizerSupportLevelSupport Level enum for features such as bounds, gradient and initial point
OptimizerBase class for optimization algorithm.
MinimizerCallable Protocol for minimizer.

Steppable Optimizer Base Class

optimizer_utilsUtils for optimizers
SteppableOptimizerBase class for a steppable optimizer.
AskDataBase class for return type of ask().
TellDataBase class for argument type of tell().
OptimizerStateBase class representing the state of the optimizer.

Local Optimizers

ADAMAdam and AMSGRAD optimizers.
AQGDAnalytic Quantum Gradient Descent (AQGD) with Epochs optimizer.
CGConjugate Gradient optimizer.
COBYLAConstrained Optimization By Linear Approximation optimizer.
L_BFGS_BLimited-memory BFGS Bound optimizer.
GSLSGaussian-smoothed Line Search.
GradientDescentThe gradient descent minimization routine.
GradientDescentStateState of GradientDescent.
NELDER_MEADNelder-Mead optimizer.
NFTNakanishi-Fujii-Todo algorithm.
P_BFGSParallelized Limited-memory BFGS optimizer.
POWELLPowell optimizer.
SLSQPSequential Least SQuares Programming optimizer.
SPSASimultaneous Perturbation Stochastic Approximation (SPSA) optimizer.
QNSPSAThe Quantum Natural SPSA (QN-SPSA) optimizer.
TNCTruncated Newton (TNC) optimizer.
SciPyOptimizerA general Qiskit Optimizer wrapping scipy.optimize.minimize.
UMDAContinuous Univariate Marginal Distribution Algorithm (UMDA).

Qiskit also provides the following optimizers, which are built-out using the optimizers from the scikit-quant package. The scikit-quant package is not installed by default but must be explicitly installed, if desired, by the user - the optimizers therein are provided under various licenses so it has been made an optional install for the end user to choose whether to do so or not. To install the scikit-quant dependent package you can use pip install scikit-quant.

BOBYQABound Optimization BY Quadratic Approximation algorithm.
IMFILIMplicit FILtering algorithm.
SNOBFITStable Noisy Optimization by Branch and FIT algorithm.

Global Optimizers

The global optimizers here all use NLopt for their core function and can only be used if their dependent NLopt package is manually installed.

CRSControlled Random Search (CRS) with local mutation optimizer.
DIRECT_LDIviding RECTangles Locally-biased optimizer.
DIRECT_L_RANDDIviding RECTangles Locally-biased Randomized optimizer.
ESCHESCH evolutionary optimizer.
ISRESImproved Stochastic Ranking Evolution Strategy optimizer.
Was this page helpful?
Report a bug or request content on GitHub.