OCTScheme
OCTScheme
Section Calculation Modes::Optimal Control
Type integer
Default oct_zbr98
Optimal Control Theory can be performed with Octopus with a variety of different
algorithms. Not all of them can be used with any choice of target or control function
representation. For example, some algorithms cannot be used if
OCTControlRepresentation = control_function_real_time
(OCTScheme > oct_straight_iteration), and others cannot be used
if OCTControlRepresentation = control_function_parametrized
(OCTScheme < oct_straight_iteration).
Options:
- oct_zbr98:
Backward-Forward-Backward scheme described in JCP 108, 1953 (1998).
Only possible if target operator is a projection operator.
Provides fast, stable and monotonic convergence.
- oct_zr98:
Forward-Backward-Forward scheme described in JCP 109, 385 (1998).
Works for projection and more general target operators also. The convergence is
stable but slower than ZBR98.
Note that local operators show an extremely slow convergence. It ensures monotonic
convergence.
- oct_wg05:
Forward-Backward scheme described in J. Opt. B. 7, 300 (2005).
Works for all kinds of target operators, can be used with all kinds of filters, and
allows a fixed fluence.
The price is a rather unstable convergence.
If the restrictions set by the filter and fluence are reasonable, a good overlap can be
expected within 20 iterations.
No monotonic convergence.
- oct_mt03:
Basically an improved and generalized scheme.
Comparable to ZBR98/ZR98. See [Y. Maday and G. Turinici, J. Chem. Phys. 118, 8191 (2003)].
- oct_krotov:
The procedure reported in [D. Tannor, V. Kazakov and V.
Orlov, in Time-Dependent Quantum Molecular Dynamics, edited by J. Broeckhove
and L. Lathouweres (Plenum, New York, 1992), pp. 347-360].
- oct_straight_iteration:
Straight iteration: one forward and one backward propagation is performed at each
iteration, both with the same control field. An output field is calculated with the
resulting wavefunctions.
- oct_cg:
Conjugate-gradients, as implemented in the GNU GSL library. In particular, the
Fletcher-Reeves version.
The seed for the random number generator can be modified by setting
GSL_RNG_SEED environment variable.
- oct_bfgs:
The methods use the vector Broyden-Fletcher-Goldfarb-Shanno (BFGS) algorithm.
Also, it calls the GNU GSL library version of the algorithm. It is a quasi-Newton
method which builds up an approximation to the second derivatives of the function using
the difference between successive gradient vectors. By combining the first and second
derivatives the algorithm is able to take Newton-type steps towards the function minimum,
assuming quadratic behavior in that region. We have chosen to implement the "bfgs2" version,
as GSL calls it, which is supposed to be the most efficient version available, and a faithful
implementation of the line minimization scheme described in "Practical Methods of Optimization",
(Fletcher), Algorithms 2.6.2 and 2.6.4.
- oct_direct:
This is a "direct" optimization scheme. This means that we do not make use of the
"usual" QOCT equations (backward-forward propagations, etc), but we use some gradient-free
maximization algorithm for the function that we want to optimize. In this case, the
maximization algorithm is the Nelder-Mead algorithm as implemented in the GSL. The function
values are obtained by successive forward propagations.
The seed for the random number generator can be modified by setting
GSL_RNG_SEED environment variable.
- oct_nlopt_bobyqa:
The BOBYQA algorithm, as implemented in the NLOPT library -- therefore, octopus has to
be compiled with it in order to be able to use this option.
The seed for the random number generator can be modified by setting
GSL_RNG_SEED environment variable.
- oct_nlopt_lbfgs:
The local BFGS, as implemented in the NLOPT library -- therefore, octopus has to
be compiled with it in order to be able to use this option.
The seed for the random number generator can be modified by setting
GSL_RNG_SEED environment variable.