webcounter

    Home    About    Documentation    Install    Newsline    Links    Feedback    Appeal    Guestbook

free html hit
counter
since 2007/10/24

The page is obsolete, we have moved to openopt.org

Non-linear problems (NLP)

f(x) -> min
subjected to

  • Box - bound constraints
    • lb <= x <= ub (some coords of lb and ub can be +/- inf)
  • General linear constraints
    • A*x <= b
    • Aeq*x = beq
  • Non-linear constraints
    • ci(x) <= 0, i = 0...I
    • hj(x) = 0, j = 0...J

OpenOpt NLP example >>>


NLP solvers

  • Single-variable:
solverlicenserequires finite lb-ubuses x0 valueuses gradientinfo
goldenSectionBSDYesNoNoAlg: golden section (pure)
scipy_fminboundBSDYesNoNoAlg: golden section + quadratic spline approximation. Seems like the scipy solver works incorrectly (sometimes solution out of lb-ub bounds is returned)

  • Unconstrained:
solverlicenseinfo
scipy_powellBSDcannot handle user-supplied gradient
scipy_bfgsBSD
scipy_cgBSD
scipy_ncgBSD can handle d2f, see the example

  • Box-bound constraints only (lb <= x <= ub):
SolverLicenseMade by
scipy_lbfgsbBSDCiyou Zhu, Richard Byrd, and Jorge Nocedal <nocedal(at)ece.nwu.edu>, connected to scipy by David M. Cooke <cookedm(at)physics.mcmaster.ca> and Travis Oliphant
scipy_tncBSDStephen G. Nash

  • All types of constraints (lb <= x <= ub, A*x <= b, Aeq*x = beq, c(x) <= 0, h(x) = 0):
SolverLicenseMade byInfoSplitting non-linear constraints can benefit
ralgBSDDmitreyfor medium-scaled problems (nVars = 1...1000); ill-conditioned, piecewise linear and polynomial, non-smooth & noisy ones are also allowed. r-algorithm with adaptive space dilation had been invented by Ukrainian academician Naum Z. Shor (my teacher //Dmitrey). This solver is intended to be enhanced from time to time. Detailed ralg info: >>>Yes
scipy_cobylaBSDM.J.D. Powell, connected to scipy by Jean-Sebastien Roycan't handle user-supplied gradient info. Recommended: read the issue about iterfcn connection.No
algencan (requires algencan v >= 2.0.3)GPL (project webpage informs that you can contact authors for obtaining another license)J. M. Martinez, Ernesto G. Birgin, connected to Python by Jan Marcel Paiva Gentil The solver is developed at the Department of Applied Mathematics of the State University of Campinas and at the Department of Computer Science of the University of São Paulo (largest higher education and research institution in Brazil), under the coordination of Professor J. M. Martínez. Based on Augmented Lagrangian multipliers. Use the URL for download and install instructions. Copy pywrapper.so to a folder from PYTHONPATH (for example /usr/lib/python2.5/site-packages/) or ensure it is already present in a PYTHONPATH folder via "try: import pywrapper; except: print 'not found' ". Currently ALGENCAN requires a good user-supplied estimation of stop criterion gtol (try p.gtol = 1e-1...1e-6); ignores xtol, ftol, so using maxTime, maxCPUTime, maxIter, maxFunEvals is welcome. Recommended! Read some algencan issues here and hereYes (inequalities only)
scipy_slsqpBSDDieter Kraft, connected to scipy by Rob Falck requires scipy.__version__ = 0.7.0 or more recentNo
ipopt (currently linux-only)CPLCarl Laird (Carnegie Mellon University) and Andreas Wachter requires installation of ipopt and pyipopt (latter is made by Eric You Xu), and currently pyipopt is available for linux only. Some stop criteria don't work (maxTime, maxCPUTime etc) because Python (2.5) can't catch exception though ipopt's code. IPOPT requires one of 3 linear system solvers, and IIRC only MUMPS has OSI-approved license (IIRC GPL);see /Ipopt-3.*.*/ThirdParty/Mumps for more details and installation script; also, during installation MUMPS can be turned up to use several CPU. OpenOpt use tol=1e-6 by default instead of 1e-8 value that is used by default in ipopt; set p.ftol = <your value> to modify tol, p.cpntol to modify constr_viol_tol (OpenOpt pass 1e-6 by default), p.maxIter to modify max_iter; other parameters from ipopt.opt file specification can be set via r=p.solve('ipopt', options = 'param1=value1, param2=value2; param3 value3 [etc...]') (comma- or semicolon-separated, space or "=" for name-value separation; however, mb this approach will be changed in future). See also some pyipopt install issues.No
lincherBSDDmitrey for constraints more than lb-ub the solver requires QP solver, and the only one connected for now is CVXOPT one (GPL). This solver is very primitive for now, we intend to enhance the one from time to time.No