[Ipopt-tickets] [Ipopt] #111: MA57 interface

Ipopt coin-trac at coin-or.org
Thu Oct 29 09:48:41 EDT 2009


#111: MA57 interface
------------------------------+---------------------------------------------
Reporter:  hmartin            |       Owner:  ipopt-team
    Type:  enhancement        |      Status:  new       
Priority:  normal             |   Component:  Ipopt     
 Version:  3.7 (C++ Version)  |    Severity:  normal    
Keywords:                     |  
------------------------------+---------------------------------------------
 I solve a large scale NLP, in which the jacobian is sometimes ill
 conditionned. Whereas MA27 works fine on this problem (typically, the
 residual ratio of the linear system before iterative refinement is of the
 order 1e-10), MA57 fails to factorize the matrix unless I increase the
 pivot threshold to values like 0.01.[[BR]]

 By playing with the MA57 options, I found that it is due to the automatic
 scaling with MC64 included in MA57. If I deactivate it, MA57 recovers the
 same stability as MA27, with the default pivot threshold. I suggest then
 the MA57 scaling to become an Ipopt option, as it does not seem to always
 be beneficial.[[BR]]

 On a different topic, I tried to improve the memory consumption of MA57 by
 lowering ma57_pre_alloc. Indeed, on my problem the symbolic factorization
 estimates the needed memory to 400MB, but the actual memory needed is
 around 700. With the default pre_alloc of 3, 1200MB are allocated... I
 think it would be better to use a smaller ma57_pre_alloc, but to also use
 it for reallocations. In this way, the memory needed by the linear solver
 would be much reduced, to the price of only 1 reallocation in most cases.
 I also found that sometimes the copy of the factorization data to a new
 larger array fails in MA57, due to an initialized wd_keep_ array. I do not
 know if it is a compiler bug, or a MA57 bug, but anyway it can be fixed by
 initializing wd_keep_ to 0.[[BR]]

 Please find attached my modified IpMa57TSolverInterface.cpp, hoping it can
 be useful.

-- 
Ticket URL: <https://projects.coin-or.org/Ipopt/ticket/111>
Ipopt <http://projects.coin-or.org/Ipopt>
Interior-point optimizer for nonlinear programs.



More information about the Ipopt-tickets mailing list