[SciPy-dev] draft announcement

Alan G Isaac aisaac@american....
Thu Sep 6 16:50:28 CDT 2007


Hoping Dmitrey and Matthieu (and others) like this ...
Alan Isaac


OpenOpt and GenericOpt
======================

OpenOpt and GenericOpt are 100% Python
with a single dependency: NumPy.

OpenOpt
-------

OpenOpt is new open source optimization framework.
OpenOpt is released under the BSD license.

The primary author and current maintainer of
OpenOpt is Dmitrey Kroshko.
(Optimization Department, Cybernetics Institute, Ukrainian Science Academy)

OpenOpt goal: provide an open source alternative
to TomOpt TOMLAB (optimization framework for MATLAB)
and related optimization frameworks.  Currently OpenOpt
offers connections to a variety of open source solvers,
primarily for unconstrained optimization. (See below.)

OpenOpt provides provides connections a vraity of solvers,
including those in GenericOpt, which are included.
(Users will need to download other solvers;
we provide URLs for download.)


GenericOpt
----------

GenericOpt is a toolkit for building specialized optimizers.
GenericOpt is released under the BSD license.

The primary author and current maintainer of GenericOpt is Matthieu Brucher.

GenericOpt goal: provide an open source, extensible
toolit for "component-wise" construction of specialized
optimizers.  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 
<URL:https://projects.scipy.org/scipy/scikits/wiki/Optimization/tutorial>.  

Limitation: currently GenericOpt provides only unconstrained solvers. 

SciKits
-------

The SciPy project is developing a collection of open source packages for
scientific computing which are allowed to have more dependencies and
more varied licenses than those allowed for SciPy proper.
In contrast to SciPy, the related scikits may host any 
OSI-approved licensed code.

OpenOpt and GenericOpt are available together as a
SciPy scikit.  However, neither depends on the other.


OpenOpt Details
---------------

Key feature: a unified calling interface for all solvers,
a variety of pure Python solvers, and connections to 
numerous external solvers.

Example::

    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 
<URL:http://projects.scipy.org/scipy/scikits/browser/trunk/openopt/scikits/openopt/examples/nlp_ALGENCAN.py> 




OpenOpt Connected External Solvers
----------------------------------

Non-linear problems (NLP)
~~~~~~~~~~~~~~~~~~~~~~~~~

- ALGENCAN <http://www.ime.usp.br/%7Eegbirgin/tango/py.php> 
  (GPL)
- 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)
- ShorEllipsoid (BSD)
  (for small-scale problems with nVars = 1..10, former for 
  medium-scaled problems with nVars = 1...1000, 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 
<http://projects.scipy.org/scipy/scikits/browser/trunk/openopt/scikits/openopt/examples/nlp_1.py>, 
NSP 
<http://projects.scipy.org/scipy/scikits/browser/trunk/openopt/scikits/openopt/examples/nsp_1.py>, 
QP 
<http://projects.scipy.org/scipy/scikits/browser/trunk/openopt/scikits/openopt/examples/qp_1.py>, 
LP 
<http://projects.scipy.org/scipy/scikits/browser/trunk/openopt/scikits/openopt/examples/lp_1.py>, 
MILP 
<http://projects.scipy.org/scipy/scikits/browser/trunk/openopt/scikits/openopt/examples/milp_1.py> 
usage 


Acknowledgements
================

Development of OpenOpt was supported by Google through the 
Google Summer of Code (GSoC) program, with Alan G. Isaac
as mentor.  Additonal mentorship was provided by Jarrod Milman. 
Debts to the SciPy community are many.


Appeal
======

The primary author and current maintainer of OpenOpt is Dmitrey Kroshko.  The
primary author and current maintainer of GenericOpt is Matthieu Brucher.
OpenOpt would profit from additiona intensive development, but this will
require a sponsor.  The use of Python for scientific programming is only
nascent in the Ukraine, so really an outside sponsor is needed.  Ideas or leads
are very welcome.









More information about the Scipy-dev mailing list