[Ipopt] Objective function decreases extremely slowly
Ana Maria Barragan Montero
ana.barragan at uclouvain.be
Fri Aug 14 05:25:33 EDT 2015
Dear all,
I am using IPOPT (through Matlab interface) with the option limited memory bfgs hessian approximation to solve a problem of the following characteristics (the total number of variables can change but it is often between 5000 and 10000).
*************************************************************************
This is Ipopt version 3.11.8, running with linear solver ma57.
Number of nonzeros in equality constraint Jacobian...: 0
Number of nonzeros in inequality constraint Jacobian.: 60613
Number of nonzeros in Lagrangian Hessian.............: 0
Total number of variables............................: 8659
variables with only lower bounds: 8659
variables with lower and upper bounds: 0
variables with only upper bounds: 0
Total number of equality constraints.................: 0
Total number of inequality constraints...............: 7
inequality constraints with only lower bounds: 7
inequality constraints with lower and upper bounds: 0
inequality constraints with only upper bounds: 0
**************************************************************************
Here below you can find the ipopt options I am using (those which do not appear are set by the program to their default value)
% Initialization
options.ipopt.bound_frac = 0.01;
options.ipopt.bound_push = 0.001;
options.ipopt.dual_inf_tol = 1;
options.ipopt.constr_viol_tol = 0.0001;
options.ipopt.compl_inf_tol = 0.0001;
options.ipopt.acceptable_constr_viol_tol = 0.01;
% NLP scaling
options.ipopt.nlp_scaling_max_gradient = 100;
% Quasi-Newton
options.ipopt.hessian_approximation = 'limited-memory';
options.ipopt.limited_memory_update_type = 'bfgs';
% Barrier parameter
options.ipopt.mu_strategy = 'monotone';
options.ipopt.mu_init = 0.1;
My problem is that I need a lot of iterations (more than 1500) to get a good result because the objective function (which has a very big value in the beginning) is decreasing extremely slowly. As an example here you have the print output for the iteration 10 and 500:
iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls
10 5.4760000e+10 0.00e+00 6.20e+02 -0.2 3.33e+02 - 6.13e-02 1.23e-02f 1 sigma=1.00e-06 qf=13Ws
500 2.9078333e+10 1.38e+10 1.00e+00 -2.9 9.18e+13 - 4.66e-09 3.06e-10f 1 sigma=6.04e-01 qf=12Wp
I wonder if I could use any other ipopt options to make the objective function decrease faster so that I can reduce the number of iterations. Moreover, I am using ma57 solver, do you recommend me any other (as PARDISO for example) for large problems as this one?
I guess that it is normal that the program takes longer at the beginning to find the good search direction since it does not have the information about the hessian because I am using the bfgs approx. In my case I have the information to calculate analytically the hessian. To calculate it at each iteration would increase considerably the computation time, however, I could calculate it at the beginning and thus initialize the hessian to the right value. Do you think that would reduce the number of iterations?
I am new with IPOPT and I don't have much experience in the field of optimization so please let me know if you need more information about my problem (formulation, variables, etc..) that can help you to find a solution.
Thank you in advance,
Ana
________________________________
Ana María Barragán Montero,
PhD student
Université catholique de Louvain
Molecular Imaging, Radiotherapy and Oncology (MIRO)
Avenue Hippocrate 54
B-1200 Bruxelles, Belgium
ana.barragan at uclouvain.be
+32(0) 27649527
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/ipopt/attachments/20150814/4776f75a/attachment.html>
More information about the Ipopt
mailing list