[SciPy-dev] Derivative-based nonlinear optimization with linear ineqality constraints

Bill Baxter wbaxter@gmail....
Mon May 21 20:31:38 CDT 2007


There don't seem to be any optimizers in SciPy that have all of these
attributes:
1) nonlinear objective function
2) uses analytical derivatives
3) allows (non-)linear (in)equality constraints

Did I just miss it?  The only things I see are methods that can only
handle simple bounds, or don't make use of derivative info.

BFGS isn't that difficult to adapt to accept linear constraints using
the active set approach and lagrange multipliers.

I have a BFGS routine I've been using for a while based on code from the book:
  //    Optimization of Dynamic Systems
  //    by Sunil Agrawal and Brian Fabien
  //    http://abs-5.me.washington.edu/pub/fabien/book/code.tar.gz

The code seems to be AWOL now, but I'm sure I have a copy I could dig
up if anyone's interested.  Or there's my C++ adaptation of it, that I
do have handy.

Given a working BFGS implementation, the basic idea with active set is
simple though. Either you're pinned against a constraint, and treating
it as an equality constraint (active), or the constraint is off
(inactive).  If your line search leads you away from an active
constraint, you make it inactive.  If it takes you up against an
inactive constraint, make it active.  The active constraints can be
handled using Lagrange multipliers.


--bb


More information about the Scipy-dev mailing list