[Ipopt] new_x

Bierlaire Michel michel.bierlaire at epfl.ch
Mon Mar 27 09:23:38 EDT 2017

Dear all,

I am using IPOPT through the C++ interface.
I am not sure how to use correctly the option “new_x” in the eval_* functions.

My problem calculates a likelihood function by scanning a large database. 
It means that f takes a long time, g a very long time, and h a huge amount of time. 
But, when I calculate h, I have f and g almost for free. 
And when I calculate g, I have f almost for free.

It means that, 
- for iterations that require f, g and h, I would need to only call h (and store f and g),
- for iterations that require f and g, I would need to call g (and store f).
- for iterations that require only f, I would calculate only f. 

But how can I use the ’new_x’ mechanism to implement that? 
The documentation says “The boolean variable new_x will be false if the last call to any of the evaluation methods (eval_*) used the same  values.”
I do not want to calculate g and h each time eval_f is called. At the time of the call, how do I know if IPOPT will need g and h for this iteration? new_x does not tell me anything about it, does it? 

Thank you for your help.

Best regards,

Michel Bierlaire
Transport and Mobility Laboratory
School of Architecture, Civil and Environmental Engineering
EPFL - Ecole Polytechnique Fédérale de Lausanne

More information about the Ipopt mailing list