[SciPy-dev] openopt (prelimenary) announce

dmitrey openopt@ukr....
Thu Sep 6 13:00:35 CDT 2007

Hi all,
here's a message that I intend to publish in Python and scipy-user mail lists, some changes were made by Alan Isaac.
If you don't mind I want to publish it before in scipy-dev mail-list, maybe you would like to propose some changes.
Regards, D.

Announcing: OpenOpt (a SciPy scikit)

OpenOpt is new open source optimization framework, provided as a SciPy scikit.

Goal: provide an essential open source alternative to TomOpt TOMLAB <http://tomopt.com/tomlab/> (optimization framework for MATLAB) and related commercial optimization frameworks and solvers.

key features are: a unified calling interface for all solvers,
a variety of pure Python solvers, graphic output <http://openopt.blogspot.com/2007/09/examples-of-openopt-graphics-output.html> and connections to 
numerous external solvers.


    from scikits.openopt import NLP
    p = NLP(lambda x: (x-1)**2, 4)
    r = p.solve('ralg')

In this example,
the objective function is (x-1)2,
the start point is x0=4,
and 'ralg' specifies the name of solver involved.

See much more detailed example here 


OpenOpt itself is released under the BSD license.  It provides connections to various solvers, which may have licenses (first of all we are interested in connecting opensource ones).

In contrast to SciPy, the related scikits may host any OSI-approved licensed code.  OpenOpt provides several solvers (ralg, lincher, ShorEllipsoid), and provides connections to still more.  (For the latter, it provides URLs for download.)  Our own solvers are 100% Python with a single dependency: NumPy, so no problems with installation Fortran or C code will be encountered.

Solvers available for now

Non-linear problems (NLP)

- ALGENCAN <http://www.ime.usp.br/%7Eegbirgin/tango/py.php> 
- lincher (BSD) (all types of constraints and 1st derivatives),
- ralg (BSD) (currently unconstrained only)
- scipy_tnc and scipy_lbfgsb (box-bounded, requires scipy 
  installed, BSD)

Non-smooth problems (NSP)

- ralg (BSD) (for medium-scaled problems with nVars = 1...1000)
- ShorEllipsoid (BSD)
  (for small-scale problems with nVars = 1..10, requires r0)
(both are unconstrained for now).

Linear problems (LP)

- lp_solve <http://sourceforge.net/projects/lpsolve> (LGPL)
- glpk <http://www.gnu.org/software/glpk/> (GPL)
- CVXOPT <http://www.ee.ucla.edu/%7Evandenbe/cvxopt/> (GPL) 
  (currently glpk requires CVXOPT installed)

Mixed-integer problems (MILP)

- lp_solve <http://sourceforge.net/projects/lpsolve> 

Quadratic problems (QP)
- CVXOPT <http://www.ee.ucla.edu/%7Evandenbe/cvxopt/> (GPL) 
  (please note - NLP lincher solver requires QP solver, and 
  the only one for now is CVXOPT one)

Here you can look at examples for NLP 


Of related interest is GenericOpt, a package that is 
connected to OpenOpt but is also available as separate 
module "optimizers".  The primary author is Matthieu 
Brucher.  GenericOpt allows users who want detailed control 
to construct their own solvers by choosing among a variety 
of algorithm components (currently, most choices are among 
step and line-search algorithms.)

Usage: see Matthieu's tutorial 

Limitation: currently GenericOpt provides only unconstrained solvers. 


The OpenOpt project was sponsored by Google throught the GSoC program (Google Summer of Code). Most of code was written by GSoC student Dmitrey Kroshko (Optimization Department, Cybernetics Institute, Ukrainian Science Academy, and the dept staff suggestions were very useful) under the mentoring of SciPy developers Alan G Isaac and Jarrod Milman. 


scikits.openopt development is intended to continue but to keep it intensive OpenOpt requires a new sponsor (since google Summer of Code 2007 program is finished), since in Ukraine interest in the use of Python for scientific programming is lagging. Ideas or leads are very welcome.

More information about the Scipy-dev mailing list