Dear users,
A new tool was added to Manopt on the GitHub version:
This tool makes it easy to find critical points of an optimization problem. This can be useful for research, when investigating saddle points in particular.
Given a problem structure,
newproblem = criticalpointfinder(problem);
creates a new Manopt problem whose cost function is (half) the squared norm of the gradient of the original problem. Thus, critical points of
problem are global optima of
newproblem, with cost value 0. A random critical point can then be found by calling any solver on
newproblem, such as for example:
[x, fx] = trustregions(newproblem);
(One must of course check afterwards that the returned
x is indeed a critical point, by checking that
sqrt(2*fx)(the gradient norm) is close to 0.) If an initial guess is passed to
trustregions as second input, it is of course also possible to aim for a critical point in a particular neighborhood.
We hope this proves useful.
Best,
The Manopt team