sitemeter

    Home    About    Documentation    Install    Newsline    Links    Feedback    Appeal    Guestbook

html countersince 2007/10/24

brief introduction

hi OpenOpt users,
as you probably know OpenOpt lacks finance support, so we should take care of OO further evolution by ourselves. Of course, I had applied for money support (and will apply furthermore), but some Ukrainian organizations answered they are not interested in Python scientific software, some (foreign ones) explained me I'm required to be their country's resident, and several (like Enthought) hadn't answered at all (OK, I don't mind); PSF doesn't accept propositions (at least for last several years), so GSoC2007 (that had finished) donation remains being single one for now, and I'm not sure I'll will be able to participate in GSoC2008 because maybe I'll already finished being (PHD) student for the date required (April 11 or kind of).
Unfortunately, OpenOpt for Python is not related neither to my work nor to my graduation work (latter is MATLAB code for Electro-Energetic Systems State Estimation problem), so I can't pay OpenOpt too much time, at least for now.
So, here's list of OpenOpt TODO tasks, some of the ones can be done by yourselves for to speed up OpenOpt development.
Making donations would also speed up making this and others tasks done.
Regards, Dmitrey.
2008-Jan-15

Let me also note once again: information of solver authors, homepage, license, alg is stored in output structure.

OpenOpt TODO list

TaskImportanceDifficultyDetailsStatus
Some openopt code clean up1010for efficient further OO development code clean up is required, especially for files runProbSolver.py, Residuals.py, objFunRelated.py (latter should be modified before dependency patterns implementation). More object-oriented code and attributes should be added instead of the lines like "if p.probType in [LP, QP, ...]" Some % are done
Fix nssolve graphics output for constrained problems22it's better to do after some openopt code clean up, especially in ooGraphics.pyDone
Unified text output for all NLP solvers (that should be stored in single py-file), including those w/o native callback function55 Done
implement handling of maximization problems + correct graphic & text output for the ones44 Not ready for some classes yet (ready for NLP, NSP)
Create some converters like QP -> NLP, LLSP -> QP104*(number of the converters)I intend to do something like p = QP(...), r=p.solve('nlp:ralg'), so converter qp2nlp will translate p to NLP and use ralg solver. Of course specialized solvers usually show much better results but they can fail to be compiled/installed and/or currently absent in OO at all
Create DFP class (Data Fit), with syntax similar to MATLAB's lsqcurvefit (+constraints), provide solver(s)8-97-8For UC problems converter to MINPAC's leastsq could be used, for constrained - converter dfp2nlp. DFP could be very convenient (vs LSP) for translating MATLAB code with lsqcurvefit or nonlinfitrequires converter dfp2nlp implementation
Write or connect NLSP solver with blockwise decomposition910(write) / ?(connect)
Add scaling to lpSolve11
Provide {OO} <-> {ALGENCAN v.2.0} bridge10?(4-5)Done
Provide discrete problems handling by GLP solver galileo7-82-3
Create OO web doc page entry with description of graphic arguments22color, show, etc
Create OO web doc page entry with description of NLP parameters22maxTime, maxCPUTime, maxIter, contol etc
Connect MUMPS9-10?free LP solver, capable of handling multiCPU; btw MUMPS is one of 3 LP solvers required by IPOPT
Make available at least one constrained NLP solver with 2nd derivatives10?Most inconvenient issue is lots of sparse matrix formats in Python, incompatible with each other: PySparse, CVXOPT (is required in CVXOPT nlp solver), scipy.sparse, simple list of [i,j,val] (ALGENCAN style), so it requires lots of translatrs from each one to another one. Maybe, it's better to wait till numpy will have native sparse matrices
Connect bvls.f to scipy?very simple for those who are very skilled in fortran & f2py I want to implement callback function (for using native OO stop criteria like maxTime, maxCPUTime, text & graphic output), but it requires more advanced knowledge of f2py
Add more GLP solvers?? currently single GLP galileo solver, AFAIK w/o efficient vectorization and loops avoiding
Implement LLAVP class (linear least absolute value problem), connect solver(s)4-54-5toms/615 could be used; also some ralg-based code could be temporary solution
Connect IPOPT10 ? most famous free NLP solver from coin-or project, license: CPLDone (Linux-only)
Implement dependency patterns108-9main problems are avoiding slow Python loops and minimizing memory consumption via sparse matrices or somehow else
Add scaling87-8 Done, see OO Doc page or examples/badlyScaled.py
Connect a GLP (global) solver8?scipy.optimize.anneal doesn't work correctly; I had tried to rewrite this and this MATLAB fileexchange solvers to Python (latter is especially good because it is vectorized) but it still don't work properly"galileo" solver (license: GPL) has been connected
Connect CLP85-6?another free solver from coin-or for LP, license: CPL; the connection is obsolete NumArray-based
Connect constrained LLSP solver9-105-6the one would be a good candidatebvls connected
Connect constrained LSP solver8??Maybe, organizing an NLP solver usage would be a feasible temporary solution
Connect QP solver w/o copyleft8??I have tried to connect qld but is yields strange (and seems incorrect) results
Enhance ralg solution precision97-9current implementation will hardly give solution with better precision than deltaX ~1e-6, while its possible (like in ralg Fortran version) to achieve deltaX ~1e-20...1e-30Some enhancements have been done, some more is intended to be implemented in future
Implement ralg-4 instead of ralg-57-87-8See chapter 2 from "Other ralg features" here
Implement SDP class, connect solver(s)9-10?? CVXOPT solver could be a good candidate. 1st of all it should be decided which arguments will be present in OO SDP constructor, according to one of the forms
Implement MINLP class (mixed-integer NLP), connect solver(s)5-7?? mb something like "branch and bound" would be useful; mb translating of fminconset (MATLAB-written routine) + OO NLP solver(s)?
Implement MMP class (mini-max), connect solver(s)5-7?? Done. Some ralg-based code is temporary solution
Possibility to obtain 1st derivatives df, dc, dh via parallel calculations10?mb something from here could be useful
position to add your own task

See also

  • Why OpenOpt? (is one of best choices for users) >>>
  • Some reasons to connect your solvers to OpenOpt (Info for optimization software owners/developers) >>>