Home About Documentation Install Newsline Links Feedback Appeal Guestbook
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
| Task | Importance | Difficulty | Details | Status |
| Some openopt code clean up | 10 | 10 | for 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 problems | 2 | 2 | it's better to do after some openopt code clean up, especially in ooGraphics.py | Done |
| Unified text output for all NLP solvers (that should be stored in single py-file), including those w/o native callback function | 5 | 5 | Done | |
| implement handling of maximization problems + correct graphic & text output for the ones | 4 | 4 | Not ready for some classes yet (ready for NLP, NSP) | |
| Create some converters like QP -> NLP, LLSP -> QP | 10 | 4*(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-9 | 7-8 | For 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 nonlinfit | requires converter dfp2nlp implementation |
| Write or connect NLSP solver with blockwise decomposition | 9 | 10(write) / ?(connect) | ||
| Add scaling to lpSolve | 1 | 1 | ||
| Provide {OO} <-> {ALGENCAN v.2.0} bridge | 10 | ?(4-5) | Done | |
| Provide discrete problems handling by GLP solver galileo | 7-8 | 2-3 | ||
| Create OO web doc page entry with description of graphic arguments | 2 | 2 | color, show, etc | |
| Create OO web doc page entry with description of NLP parameters | 2 | 2 | maxTime, maxCPUTime, maxIter, contol etc | |
| Connect MUMPS | 9-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 derivatives | 10 | ? | 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-5 | 4-5 | toms/615 could be used; also some ralg-based code could be temporary solution | |
| Connect IPOPT | 10 | ? | most famous free NLP solver from coin-or project, license: CPL | Done (Linux-only) |
| Implement dependency patterns | 10 | 8-9 | main problems are avoiding slow Python loops and minimizing memory consumption via sparse matrices or somehow else | |
| Add scaling | 8 | 7-8 | Done, see OO Doc page or examples/badlyScaled.py | |
| Connect a GLP (global) solver | 8 | ? | 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 CLP | 8 | 5-6? | another free solver from coin-or for LP, license: CPL; the connection is obsolete NumArray-based | |
| Connect constrained LLSP solver | 9-10 | 5-6 | the one would be a good candidate | bvls connected |
| Connect constrained LSP solver | 8? | ? | Maybe, organizing an NLP solver usage would be a feasible temporary solution | |
| Connect QP solver w/o copyleft | 8? | ? | I have tried to connect qld but is yields strange (and seems incorrect) results | |
| Enhance ralg solution precision | 9 | 7-9 | current 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-30 | Some enhancements have been done, some more is intended to be implemented in future |
| Implement ralg-4 instead of ralg-5 | 7-8 | 7-8 | See 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 calculations | 10 | ? | mb something from here could be useful | |
| position to add your own task |
