Searching Direction Strategies

If a step cannot be taken with the current search direction (e.g. computed an invalid search direction or the line search failed on a valid search direction), NCVX may attempt up to four optional fallback strategies to try to continue making progress from the current iterate. The strategies are as follows and are attempted in order:

0. BFGS-SQP steering - default for constrained problems - irrelevant for unconstrained problems

1. BFGS-SQP steering with BFGS’s inverse Hessian approximation replaced by the identity. If strategy #0 failed because quadprog failed on the QPs, this “steepest descent” version of the steering QPs may be easier to solve. - irrelevant for unconstrained problems

2. Standard BFGS update on penalty/objective function, no steering - default for unconstrained problems

3. Steepest descent on penalty/objective function, no steering

4. Randomly generated search direction

min_fallback_level

Integer in [0,4]. Default value: 0

Min number of strategy to be employed NOTE: fallback levels 0 and 1 are only relevant for constrained problems.

max_fallback_level

Integer in [0,4]. Default value: 3

Max number of strategy to be employed (>= min_fallback_level) NOTE: fallback levels 0 and 1 are only relevant for constrained problems.

max_random_attempts

Positive integer. Default value: 5

If max_fallback_level is 4, this is the number of randomly generated directions to attempt if all previous strategies fail on any single iteration