How To Use the Line Search for Krotov’s Lambda_a

QDYN offers the possibility to perform a line search for Krotov’s \(\lambda_a\), which aimes to provide a optimal \(\lambda_a\) for each OCT-step. However, this increases the time needed per OCT-step by a factor of roughly 0.5 for each line search sampling point and it should be carefully considered if this is needed.

Config File Parameters

The relevant config file parameters for using the line search for \(\lambda_a\) are

oct:use_krotov_line_search

Used to turn the line search on and off. Set this to T in the config file to enable the use of the line search.

oct:lnsrch_nrsteps

Determines the number of \(\lambda_a\)-samples used for each OCT-step.

oct:lnsrch_mode

Currently there are two different ways for performing the line search, which both use a logarithmic sampling of the \(\lambda_a\)-parameter space and simply take the best result. The default mode “log-full” simply starts at the initially provided oct:lambda_a value and reduces the value for each sampling point by a fixed factor oct:lnsrch_la_stepsize. If the mode is changed to “log-centered”, the values are sampled around the initial oct:lambda_a value. Afterwards, the new central value is the optimal value from the previous OCT-step.

oct:lnsrch_la_stepsize

Step size used for the line search or each optimization step. If a ‘log-*’ mode is specified, it sets the factor between the two steps. So if a value of 2 is given, the value of \(\lambda_a\) is changed by a factor of 2 or 0.5, respectively.

An example for the usage in the config file could be

use_krotov_line_search = T, lnsrch_mode = log-centered, lnsrch_nrsteps = 5, &
lnsrch_la_stepsize = 2

which would result in a \(\lambda_a\) sample of

lambda_a = 400
lambda_a = 200
lambda_a = 100
lambda_a = 50
lambda_a = 25

assuming a initial oct:lambda_a value =100. Provided the optimal \(\lambda_a\) in this run is =200, the next OCT-step sample would be

lambda_a = 800
lambda_a = 400
lambda_a = 200
lambda_a = 100
lambda_a = 50

and so on.