Free Python optimization framework

Thursday, March 27, 2008

GSoC tasks for OO further development

hi all,
my GSoC 2007 mentor Alan G Isaac recommends to specify in my proposition which tasks from OO TODO list and/or beyond the one are intended to be done during GSoC 2008. So if you have a feature request(s) and/or other OpenOpt enhancement proposition(s) they can be considered to be appended to the list as well till student application deadline (March 31).

Saturday, March 22, 2008

constraints handling for NLSP solver nssolve

I'm glad to inform that NLSP solver nssolve now can handle all types of constraints; user-supplied derivatives to f, c, h can be handled as well.

See NLSP constrained example.

Also, a small bugfix for nssolve iprint parameter handling has been made.

However, currently graphic output for constrained NLSP does not work properly yet, it's intended to be fixed in future.

Connecting IPOPT, Part 1

a Ph.D. student from Washington University has informed me, that he spent just a single day and already has working Python-IPOPT connection (of course, it requires some more time to make it appropriate enough). That one is implemented via Python's C-API, but maybe in future numpy's C-API or something else will be used.

Unfortunately, I still have some problems with build, for me it yields "/usr/lib/ undefined symbol: _gfortran_concat_string".
You could take a look at the code by yourself, the one is available here

You must have IPOPT installed (I have tried 3.3.1 and 3.3.5, note that this one requires LP solver installed such as MUMPS); modify links to IPOPT directories in and run the file (note that for now the code is usable in Linux only).

Thursday, March 20, 2008

paypal does not allow payments to Ukraine

I have been informed that paypal link from OO page refuses to make donation to OpenOpt, because paypal does not allow payments to Ukraine. So I will try to find another approach. Ideas or leads are very welcome.
(Last edit: 2008/04/16 09:39 by Dmitrey)

ALGENCAN connection bugfix

I have fixed a bug in ALGENCAN <-> openopt connection.
svn and tarball from OO install page have been updated.

to openopt users

hi all,

I decided to create a list of openopt users, similar to T0M0PT's one (i.e. that one mentioned in OO start page)

could anyone provide some info like the one from here?

It would increase openopt's chances for obtaining participation in GSoC 2008 (students propositions start soon, some days later) or mb an other one.


Sunday, March 16, 2008

mb CVXOPT will include glpk milp solver

I have contacted CVXOPT developers (Lieven Vandenberghe, Joachim Dahl) about implementing glpk milp solver available in CVXOPT (since they already have glpk lp solver connected).
They have answered: maybe next CVXOPT version will include connection to glpk milp solver (then it will be connected to OO as well).

Saturday, March 15, 2008

OpenOpt 0.17

We're pleased to announce:
OpenOpt 0.17 (release), free (license: BSD) optimization framework for Python language programmers, is available for download.

Changes since previous release (December 15, 2007):
  • new classes: GLP (global problem), MMP (mini-max problem)

  • several new solvers written: goldenSection, nsmm

  • some more solvers connected: scipy_slsqp, bvls, galileo

  • possibility to change default solver parameters

  • user-defined callback functions

  • changes in auto derivatives check

  • "noise" parameter for noisy functions

  • some changes to NLP/NSP solver ralg

  • some changes in graphical output: initial estimations xlim, ylim

  • scaling

  • some bugfixes

changes in auto derivatives check

Old-style p.check.df=1, p.check.dc=1, p.check.dh=1 is no longer valid. That one was inspired from MATLAB syntax.

So for now you should use p.checkdf(), p.checkdc(), p.checkdh() instead. If you want to check 1st derivatives in point x (i.e. other than p.x0) than you should use p.checkdf(x), p.checkdc(x), p.checkdh(x). See updated example from openopt/examples (or the link from OO Doc webpage).

Friday, March 14, 2008

new LLSP solver: bvls

I have searched for free constrained LLS solvers for some my own purposes - connecting the ones to scikits.openopt and using the ones for solving ralg/lincher subproblems (in future).

So now new LLSP solver is available:bvls. It requires separate installation, see OO LLSP webpage for more details. Other well-known routines - NNLS and WNNLS - are BVLS ancestors.

Thanks to Alan G Isaac and solver authors (Robert L. Parker & Philip B. Stark) who came to agreement of turning bvls license from free-for-non-commercial to GPL and then, moreover, to BSD.

Also, thanks to Pearu Peterson for help with f2py usage.

I have tried some examples with nVars ~ 400...500 and bvls returns better results (r.ff) than translating the problem to NLP and soling via scipy_lbfgsb or scipy_tnc (you could try /examples/ for more details. As for ralg, results are same, but currently time elapsed is much greater).
The solver is intended to be connected to future scipy version. Unfortunately, the BVLS routine is intended for dense problems only (and it's quite bad for my ralg/lincher purposes).

There are other free routines that could be considered - toms/587 (I don't know is the one intended for dense problems only or for sparse ones as well) and BCLS. Latter has GPL (written in ANSI C) and is capable of handling sparse problems, moreover, implicit A matrix via defining funcs Ax and A^T x. BCLS consists of lots files; it has convenient MATLAB API (2 single standalone func for implicit and explicit matrix A) but calling it from C API is very inconvenient, one function is not enough, so I can't connect it to Python via ctypes, the task is too complicated.

As for toms/587, my OS KUBUNTU yields same bug as this one(with ALGENCAN), so I intend to try using the one with next KUBUNTU version.

Sunday, March 9, 2008

maybe ralg-related bug in recent svn changes

Some users inform that recent openopt version from svn yields bug for ralg solver:

OpenOptException: incorrect solver is called, maybe the solver "ralg" is not installed

I can't reproduce the bug in my OS (KUBUNTU 7.10 & Ubuntu 7.04), so I'll try to find and fix the one ASAP.