OpenOpt and GenericOpt ====================== Introducing two new optimization packages. OpenOpt and GenericOpt are 100% Python with a single dependency: NumPy. For more detail see below and also <URL:https://projects.scipy.org/scipy/scikits/wiki/Optimization>
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 <email:openopt AT ukr.net> (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 the downloads.) 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 <email:matthieu.brucher AT gmail.com> 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 Brucher'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. See <URL:https://projects.scipy.org/scipy/scikits/> OpenOpt and GenericOpt are available together as a SciPy scikit. The provides a unified optimization framework along with a collection of solvers. 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> 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, but we would particularly like to thank Nils Wagner. Appeal ====== The primary author and current maintainer of OpenOpt is Dmitrey Kroshko. The primary author and current maintainer of GenericOpt is Matthieu Brucher. These packages are already functional and extensible, but both would profit from additional intensive development. This will require sponsorship, especially for substantial additions to OpenOpt. 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. -- http://mail.python.org/mailman/listinfo/python-list