Skip to content
/ sipopt2 Public

Sensitivity calculations for nonlinear programming in IPOPT

License

Notifications You must be signed in to change notification settings

athrpf/sipopt2

Repository files navigation

This is sIpopt version 2.0
==========================

sIpopt 2.0 is a fork of the popular NLP solver IPOPT (https://projects.coin-or.org/Ipopt). The difference between the two is that sIpopt 2.0 allows the explicitly declaration of parameters in the optimization problem. This enables the implementation of algorithms that are based on the partial derivatives of the lagrangian and the constraints w.r.t. these parameters, such as sensitivity calculation, etc.

sIpopt 2.0 was developed in an effort to make the implementation of sensitivity calculations cleaner and more efficient than it would be without changing some core elements of Ipopt. If you would like to calculate sensitivities of the optimal solution, but would like to use the original version of Ipopt, there is sIpopt 1.0, which is in the contrib subdirectory of the Ipopt trunk.

For more information on the theory behind this, see
H. Pirnay, R. Lopez-Negrete, and L.T. Biegler, ​Optimal Sensitivity Based on IPOPT, Submitted for publication to Math Prog Comp, (Apr. 2011)

Installation
------------

So far, sIPOPT2.0 has only been tested on linux. However, the issues for getting it to work on other operating systems should be exactly the same as those you encounter when installing regular IPOPT, so the same solutions should be applicable.

In the following $SIPOPT2 is supposed to be the base directory for sIPOPT2.

To install sIPOPT2, the follow these steps:

1. clone sIPOPT
----------------

for example, run

git clone https://github.com/athrpf/sipopt2.git $sIPOPT2

on the terminal.

2. get the ThirdParty stuff
----------------------------

You don't need to install it, just check out the trunk from svn (version 3.10.x should work as well).
Follow the directions for getting all the ThirdParty code that you'd like to use, just like when building Ipopt in

http://www.coin-or.org/Ipopt/documentation/node14.html

Now execute the following code:

cd $sIPOPT2/
ln -s $IPOPT_DIR/ThirdParty .

3. configure, build
--------------------

It makes sense to separate source and build files. Therefore, start with

mkdir build
cd build

For the configure step, the same options apply as for Ipopt. When testing the code, I usually compile with these flags:

configure ../ --with-blas="-lblas" --with-lapack="-llapack" --enable-debug --with-ipopt-verbosity=10

then

make && make install

and you're ready to go!

4. running the AMPL interface
-----------

If you arrived at this point, you successfully built the AMPL executable and the Ipopt/sIpopt2 library.
To run the AMPL interface, put $sIPOPT2/build/bin/ipopt into your $PATH.

Caveat
------------
* Make sure you obey all copyrights / licenses
* This is a development code. Do not trust its results!


This package contains several subdirectories corresponding to COIN-OR
projects (www.coin-or.org). The AUTHORS, LICENSE and README files in
each of the subdirectories give more information about these projects.

About

Sensitivity calculations for nonlinear programming in IPOPT

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published