# Optimizer#

This section is about setting up an optimization method for the variational algorithm.

## Type#

optimizer has the following options

• BFGS [Details]: Supports gtol, max_iter options

• BFGS_FTOL: Supports ftol, max_iter options

• L_BFGS_B: Supports ftol, gtol, max_iter, max_fev options

• NFT [Nak20][Details]: Supports ftol, max_iter, max_fev options

• NELDER_MEAD:Supports max_iter, max_fev options

• POWELL [Details]: Supports ftol, max_iter, max_fev options

• CG: Supports gtol, max_iter options

• TNC: Supports ftol, gtol, max_iter options

• SLSQP: Supports ftol, max_iter options

Each optimizer other than BFGS_FTOL and NFT is the same as one in scipy.optimize.minimize.

For BFGS the cost function gradient difference gtol is used for convergence condition. For BFGS_FTOL the cost function difference ftol is used for convergence condition.

## Options#

The following options allow you to specify the condition to stop the optimization.

• ftol: stop the optimization when the increase or decrease from the previous iteration of the cost function is less than or equal to this value. (default: $$10^{-6}$$)

• gtol: Stops optimization when the slope of the cost function becomes less than or equal to this value. (default: $$10^{-6}$$)

• max_iter: Maximum number of iterations. (default: $$10^3$$)

• max_fev: Maximum number of times the cost function is evaluated. (default: $$10^4$$)

• max_run: maximum number of times to run the quantum circuit (default: $$10^4$$)

## Input example#

"optimizer": {
"type": "BFGS",
"ftol": 1e-06,
"gtol": 1e-06,
"max_iter": 100000,
"max_fev": 100000,
"max_run": 100000
}


## Differential type#

The following options allow you to specify the differential type of gradient in optimization calculation. Note there are some optimizers that do not require gradients.

• differential_type: Choice of the numerical derivative NUMERICAL or the analytical derivative ANALYTICAL [Mit18]. By default, NUMERICAL or ANALYTICAL is chosen automatically when QuantumDevice is set to EXACT_SIMULATOR or SAMPLING_SIMULATOR, respectively.

## References:#

[Mit18] “Quantum circuit learning”, K. Mitarai, M. Negoro, M. Kitagawa, and K. Fujii, Phys. Rev. A 98, 032309.