[Ipopt] IPOPT takes very long before the first iteration

Andreas Waechter andreasw at watson.ibm.com
Tue Sep 29 19:14:34 EDT 2009


Hi Uwe,

The derivative checker is not run by default, so this cannot be the 
reason.

What happens before the first iteration is that Ipopt calls the linear 
solver (your output tells me that it is MA27) to compute initial values 
for the multiplers.  here, it first does a "symbolic factorization" (an 
initialization step that is done once at the beginning but not in further 
iterations), and depending on your matrix structure, this can take a long 
time.   Similarly, the factorization itself can take time.  (You could 
switch off the initialization of the multipliers by setting 
constr_mult_init_max to 0, but that would just postpone the problem to the 
point where Ipopt has to compute the search direction in the first 
iteration.)

To find out what the specific step is that runs so slow you can set the 
option

print_timing_statistics yes

This should show you in more detail, which part of the run takes most of 
the time.

In order to fix your problem, you probably want to consider experimenting 
with a different linear solver (there a bunch of options [see 
documentation], and Olaf already suggest to use Pardiso, which seems to 
work very efficiently).  But of course you need to compile Ipopt with such 
a linear solver.

Hope this helps,

Andreas



On Tue, 29 Sep 2009, Uwe Nowak wrote:

> Hello!
>
> Thank you for your guess. I already deactivated the derivative check.
> The list of user options is
>
>                                     Name   Value                used
>                           acceptable_tol = 1                     yes
>                         file_print_level = 6                     yes
>                    hessian_approximation = limited-memory        yes
>                                 max_iter = 1000                  yes
>                                  max_soc = 0                     yes
>                       nlp_scaling_method = none                  yes
>                              output_file = ipopt.out             yes
>                              print_level = 5                     yes
>                       print_user_options = yes                   yes
>                                      tol = 1                     yes
>          watchdog_shortened_iter_trigger = 0                     yes
>
> Thank you,
> Uwe
>
>
> Sebastian Walter schrieb:
>> -----BEGIN PGP SIGNED MESSAGE-----
>> Hash: SHA1
>>
>> My speculative guess: It's the derivative checker of IPOPT that is the resource hog.
>> Depending on the dimension of your problem, the computation of finite differences approximations of gradient and jacobian
>> can take much longer than the evaluation your implemented  gradient and jacobian function.
>>
>> The derivative check is performed once before the iteration starts.
>>
>>
>> regards,
>> Sebastian
>>
>>
>>
>>
>> Uwe Nowak schrieb:
>>> Hello!
>>>
>>> I am using IPOPT and really like the solver. But with larger problem
>>> instances the solver takes very long time before the first iteration.
>>>
>>> Below there is the output. After the first line ("This is IPOPT...") the
>>> solver takes (estimated) 350 CPU seconds.
>>>
>>> What does IPOPT do there? Is there a way to speed this part of IPOPT up?
>>> The Iterations itself are fast enough.
>>>
>>> I am using IPOPT to successively solve nonlinear problems that have
>>> similar, but not equal structure. So I usually expect only few
>>> iterations to be
>>> necessary.
>>>
>>> Thank you,
>>> Uwe Nowak
>>>
>>>
>>> ------------------------- OUTPUT ------------------------------
>>>
>>>
>>> This is Ipopt version 3.7.0, running with linear solver ma27.
>>>
>>> Number of nonzeros in equality constraint Jacobian...: 196
>>> Number of nonzeros in inequality constraint Jacobian.: 13624
>>> Number of nonzeros in Lagrangian Hessian.............: 0
>>>
>>> Total number of variables............................: 180
>>>   variables with only lower bounds: 0
>>>   variables with lower and upper bounds: 0
>>>   variables with only upper bounds: 0
>>> Total number of equality constraints.................: 49
>>> Total number of inequality constraints...............: 1703
>>>   inequality constraints with only lower bounds: 1703
>>>   inequality constraints with lower and upper bounds: 0
>>>   inequality constraints with only upper bounds: 0
>>>
>>> [...]
>>>
>>> Number of Iterations....: 15
>>>
>>> [...]
>>>
>>> Number of objective function evaluations = 18
>>> Number of objective gradient evaluations = 16
>>> Number of equality constraint evaluations = 18
>>> Number of inequality constraint evaluations = 18
>>> Number of equality constraint Jacobian evaluations = 16
>>> Number of inequality constraint Jacobian evaluations = 16
>>> Number of Lagrangian Hessian evaluations = 0
>>> Total CPU secs in IPOPT (w/o function evaluations) = 392.561
>>> Total CPU secs in NLP function evaluations = 8.939
>>>
>>> EXIT: Optimal Solution Found.
>>>
>>> _______________________________________________
>>> Ipopt mailing list
>>> Ipopt at list.coin-or.org
>>> http://list.coin-or.org/mailman/listinfo/ipopt
>>
>> -----BEGIN PGP SIGNATURE-----
>> Version: GnuPG v2.0.4-svn0 (GNU/Linux)
>> Comment: Using GnuPG with SUSE - http://enigmail.mozdev.org
>>
>> iD8DBQFKwe4q9PBA5IG0h0ARAqbKAJ0TLmQ338eEUGQCBH78mmRtRypOxgCfaKhl
>> Om47RZaa6iFbgE7j9RqDlsg=
>> =CvjV
>> -----END PGP SIGNATURE-----
>
> _______________________________________________
> Ipopt mailing list
> Ipopt at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/ipopt
>
>



More information about the Ipopt mailing list