Changes between Version 2 and Version 3 of OptimizationProblems

Show
Ignore:
Timestamp:
04/20/07 04:35:05 (6 years ago)
Author:
jarrod.millman
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • OptimizationProblems

    v2 v3  
    1 As far as I understood there are very few constrained solvers for Python. In google I failed to find anything but the CVXOPT, which consists mostly of wrappers to commercial mosek; some LP/MIP wrappers to GNU C- or f- code; and some optimization routines from scipy, of course.  
     1[[PageOutline]] 
     2 
     3= Introduction = 
     4As far as I understood there are very few constrained solvers for Python. There is CVXOPT, which consists mostly of wrappers to commercial mosek; some LP/MIP wrappers to GNU C- or f- code; and some optimization routines from scipy, of course.  
    25 
    36There are lots of commercial modeling systems for numerical optimization like [http://www.ampl.com AMPL], [http://www.gams.com GAMS], [http://tomopt.com TOMLAB].  I propose to create a free Python-based equivalent to them, + connecting some non-smooth & network solvers that our optimization department researches, + inviting our collaborators from other optimization departments of our & some other institutes to provide their own solvers. 
     
    2023The environment will provide scaling, unified convenient text & graphics output, checking user-supplied analytical derivatives, parallel calculations (for example for numerical gradient/subgradient obtaining), easy comparison & similar to TOMLAB unified for all solvers call: 
    2124{{{ 
    22 prob = NLP(myObjFun, x0, <optional params:> TolX=1e-4, TolCon=1e-3, doPlot=true, MaxTime=1e3, MaxIter =1e4, ...) (similar prob=LP(f, other_args), prob=QP(...), ...) 
     25prob = NLP(myObjFun, x0, <optional params:> TolX=1e-4, TolCon=1e-3, doPlot=true, MaxTime=1e3, MaxIter =1e4, ...) 
     26(similar prob=LP(f, other_args), prob=QP(...), ...) 
    2327r = prob.run(solverName (or names of some solvers), <optional params>) 
    2428}}} 
     29 
    2530output structure r will include algorithm used, licence of the solver used, its authors, web homepage of the solver, time, cputime elapsed, and much more. Some of the info will be printed (by default) before or after solver's work. 
    2631All of the above is already done in my OpenOpt version for MATLAB/Octave (parallel - currently only for objfun gradient obtaining, not constraints) but for many reasons (the main is pass-by-copy in MATLAB/Octave vs pass-by-reference in Python) I'm rewriting all the code to Python now & intend to continue development using Python language. GSoC support would helped me very much. 
     
    2833Also in future I intend to connect glpk, lpsolve, COIN-OR & other free solvers to the environment. I don't mean writing python-c connection once again, I mean simple unified call {{{prob=LP(...), r=prob.run(solver, <optional options>)}}} with some benchmarking elements. As lot solvers as it can be done will be Python-written, for to avoid problems with installation C- & Fortran-code & for to RAD ability. 
    2934 
    30  * write ralg() & ShorEllipsoid() solvers 
    31 (Unconstrained: ~1 week, constrained: +2-3 weeks) 
     35 * write ralg() & ShorEllipsoid() solvers (Unconstrained: ~1 week, constrained: +2-3 weeks) 
    3236 * write nonSmoothSolve() : ~ 1-2 weeks 
    33  * writing MATLAB bintprog equivalent 
    34 (f*x->min, A*x<=b, Aeq*x=beq) 
    35 based on rd.  Shilo (& others) 
     37 * writing MATLAB bintprog equivalent (f*x->min, A*x<=b, Aeq*x=beq) based on rd.  Shilo (& others) 
    3638 * write a Python version of GRASP: ~2-3 weeks 
    37  * create an optimization environment for Python that is 
    38 similar to MATLAB/Octave (1-1.5 months) 
    39  * write MATLAB fmincon equivalent (smooth constrained 
    40 optimization, c(x)<=0, h(x)=0, linear constraints +1st 
    41 & 2nd derivatives) based on Nikitin & Pshenichniy 
    42  * writing or connecting of some already existing NLP UC or 
    43 box-bounded solvers 
    44  * write module for checking 1st derivatives provided by user 
    45 (less than 1 week) 
     39 * create an optimization environment for Python that is similar to MATLAB/Octave (1-1.5 months) 
     40 * write MATLAB fmincon equivalent (smooth constrained optimization, c(x)<=0, h(x)=0, linear constraints +1st & 2nd derivatives) based on Nikitin & Pshenichniy 
     41 * writing or connecting of some already existing NLP UC or box-bounded solvers 
     42 * write module for checking 1st derivatives provided by user (less than 1 week) 
    4643 
     44= Timeline = 
     45 
     46Two milestones are defined. 
     47 
     48== Milestone 1 == 
     49 
     50 
     51Due *9th July.* 
     52 
     53== Milestone 2 == 
     54 
     55 
     56Due *August 20.* 
     57 
     58= Documentation and development methodology = 
     59== bug tracking and source control == 
     60... 
     61 
     62== Doc format == 
     63Doc format: the numpy community has recently defined a standard for documenting code, using a reST derived format. 
     64 
     65= About the author = 
     66My name is Dmitrey Kroshko.  I'm last-year post-graduate ([http://www.icyb.kiev.ua/ Institute of Cybernetics, Ukraine National Science Academy, Optimization Department]) (former NSAU calculus center). Our department researches methods of optimization for non-smooth (& noisy) functions since 1964 or so (under leadership of academician Naum Z. Shor till 2002 when he left).  
     67 
     68= License = 
     69Same as SCIPY, that is BSD-like license (without advertisement clause).