Tips
This is a collection of some experiences we made during development of this package. IPOPT and the find_local_max_ipopt
function itself allow for custom settings of many parameters. A complete list of IPOPT options can be found here. IPOPT options can be passed to the optimizer as a dictionary via the ipopt_options
argument. If you are not satisfied with the results you get, it might be worth a try playing around with one or more of these parameters.
disp
: If you do not know what caused your problems or you want to find out more about the behavior of the optimizer you can change the value of this IPOPT option. IPOPT allows for values between 0 and 12 where the level of verbosity is higher for higher values. For values larger than 12 a message is generated infind_local_max_ipopt
and printed before termination of the function.maxiter
: The maximum number of iterations performed by IPOPT. This is especially relevant for complicated problem, where the optimizer does not find an optimum in an appropriate amount of time.acceptable_tol
: The situation can occur that IPOPT terminates at an unsatisfactory point with the message "EXIT: Solved To Acceptable Level.". In this case, it can help to set the value of this parameter to the same value as the IPOPT optiontol
(do not mix this with thefind_local_max_ipopt
argumenttol
) or some other lower value.tol
: This argument defines the size of a small "safety margin" around the set of feasible solution that will also be considered as feasible. Increasing this value can make it easier for the algorithm to find feasible solutions. However this also means a perturbation of the original problem/problem set definition. The default value is 0.delta
: This is the regularization parameter for the information matrix. Setting it to a larger value means a stronger regularization. Note that this also means a larger perturbation of the objective function.sampling
: By defaultfind_local_max_ipopt()
will try to use thesample_inputs()
method of the opti problem passed to the function for sampling the initial values. However, you can also pass your own initial guess or use a different sampling strategy assampling
parameter.