Free Python optimization framework

Tuesday, June 3, 2008

Connecting IPOPT, Part 2

I intend to have OpenOpt<->IPOPT bridge (via Eric's pyipopt) till next OO release.

However, currently it works for Linux only (and I'm certainly not the one who could try to make it cross-platform) and requires hand-turn of makefile, first of all related to paths (python and numpy directories); also, probably you'll have to add -llapack (provided lapack-dev installation, if you have message "undefined symbol @dswap_") and -lgfortran (if you have "/usr/lib/libipopt.so.0: undefined symbol: _gfortran_concat_string", mb it requires gfortran installation, if you haven't the one installed). For more details see comments here (somehow they are not mentioned in Eric's README file).

So after the issues I have IPOPT working for me. Here's picture below. This one referrs to nlp_bench2.py (from /examples) with modified h3: instead of
(x[-5]+x[-6]-2*M+1.5)**6=0
I have taken
(x[-5]+x[-6]-2*M+1.5)**2=0
(because, as I have noticed, IPOPT handles the constraint so badly that I thought I have bug(s) in IPOPT connection, and hunting for those ones took a long time for me, because that constraint is present in my other NLP tests involved). And (despite IPOPT work probably can be somehow enhances via ipopt.opt file options modification) this is another one proof that having several solvers (like OO provides) is always better than having a single one, even so famous as IPOPT, isn't it?

2 comments:

Eric said...

Hi Dmitrey, I followed the trackback. Thanks for posting and figuring out the poor document :) I will take your suggestion and add more info about compiling.

Again, sorry for delaying the oo-ipopt development. I am so glad that you finally decided to pick it up. I am currently very busy for my master thesis....

Good luck

Eric

Dmitrey said...

Hi Eric,
initial version of openopt < - > pyipopt connection is already in svn, so you could try the one by yourself. Some problems are with involving ipopt.opt file (first of all to suppress text output by "print_level -2" and modify stop criteria (via "tol"?), while seems like contol and ftol for ipopt are same values, mb xtol as well).

I will add detailed installation instructions and more info to the solver fields till next oo release.

Regards, D.