Otherwise, you would probably want to decide which solvers to purchase in conjunction with a GAMS license. If your problems are sufficiently small in size, then you may not even need to purchase a GAMS license and licenses to solvers, because an evaluation copy of GAMS may be downloaded from their web site. (Disclaimer: I have no affiliation with GAMS, but my lab does own a GAMS license.) The commercial solvers should be no worse than fmincon in fact, I'd be surprised if they weren't a lot better. GAMS has Python language bindings, and a very responsive support staff willing to help out if there's any trouble. (CONOPT and SNOPT are convex solvers.) A kludgey solution that I've used in the past is to use the Fortran (or Matlab) language bindings to GAMS to write a GAMS file and call GAMS from Fortran (or Matlab) to calculate the solution of an optimization problem. Of particular mention are the interfaces to the solvers CONOPT, SNOPT, and BARON. If you can purchase a commercial optimization solver, you might consider looking at the GAMS modeling language, which includes several nonlinear optimization solvers. Alternatively, you could use Bonmin or Couenne, both of which are deterministic non-convex optimization solvers that perform serviceably well compared to the state-of-the-art solver, BARON. In order to obtain good solutions, you would also have to wrap any nonlinear, convex solver you found in appropriate stochastic global optimization heuristics, or in a deterministic global optimization algorithm such as branch-and-bound. To my knowledge, the nonlinear solvers do not have Python bindings provided by the developers any bindings you find would be third-party. Other free solvers can be found on the COIN-OR web site. If you can formulate your problem as an explicit system of equations and need a free solver, your best bet is probably IPOPT, as Aron said. My experience with open source optimization solvers has been that the better ones are typically written in a compiled language, and they fare poorly compared to commercial optimization packages. I work in a lab that does global optimization of mixed-integer and non-convex problems. The Jacobian of the equality constraints is dense, as is the Jacobian of the inequality constraints. The objective function is one of the decision variables.A number of rational inequality constraints equal to about twice the number of decision variables.4-100 polynomial equality constraints (polynomial degree ranges from 1 to about 8).Geoff points out that some characteristics of the problem may be relevant. My goal is merely to change languages in order to have a more streamlined workflow. Just for emphasis I already have a tractable formulation and a good solver. I have tried several of the solvers available through OpenOpt and found them to be inferior to MATLAB's fmincon/sqp. I'm looking for something that robustly converges to a local optimum even for challenging problems, and even if it's slightly slower than fmincon(). It's okay if it doesn't guarantee a global optimum ( fmincon() does not). not require the user to provide a Jacobian.be able to handle nonlinear equality and inequality constraints. Is there a NLP solver with Python bindings that can compete with fmincon()? It must However, most of my code is in Python, and I'd love to do the optimization in Python as well. Currently I use MATLAB's Optimization Toolbox (specifically, fmincon() with algorithm= 'sqp'), which is quite effective. I have several challenging non-convex global optimization problems to solve.
0 Comments
Leave a Reply. |