Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

More NLP Solver Options for OptimTraj #22

Open
stumarcus314 opened this issue Sep 9, 2016 · 1 comment
Open

More NLP Solver Options for OptimTraj #22

stumarcus314 opened this issue Sep 9, 2016 · 1 comment

Comments

@stumarcus314
Copy link

stumarcus314 commented Sep 9, 2016

The MATLAB code fminsdp: https://www.mathworks.com/matlabcentral/fileexchange/43643-fminsdp would make it really easy for OptimTraj to easily switch between several different 3rd party NLP solvers like IPOPT, SNOPT, KNITRO, and fmincon, assuming the user already has them installed. The documentation says that fminsdp is designed for small-scale optimization problems, but as long as there are no matrix inequality constraints (which is the novelty of fminsdp), fminsdp should be able to solve large-scale NLP problems (like those formulated from an optimal control problem by OptimTraj) via the third-party solvers. The fminsdp and fmincon interfaces are almost the same, so you would basically just have to replace the fmincon call in the OptimTraj code to fminsdp.

@stumarcus314 stumarcus314 changed the title More NLP solver options for OptimTraj More NLP Solver Options for OptimTraj Sep 9, 2016
@MatthewPeterKelly
Copy link
Owner

This sounds good, although I'm a bit wary of this due to a problem that I ran into a few years ago, converting optimization problems between FMINCON and SNOPT.

These programs handle inequality constraints g(x) < Bnd differently. In particular, SNOPT requires that all constant terms be placed in the limit Bnd of the constraint, while FMINCON requires that all constant terms be placed in the function g(x), and that Bnd==0. SNOPT handles constraints numerically, and tends to drop constant terms in the g(x) function (yes, this sounds crazy, but I tested this very carefully a few years back). The result is that you can take a problem that is posed for SNOPT and easily convert it to be solved by FMINCON, but you cannot do the reverse.

I'm open to support for multiple solvers, but any pull requests would have to demonstrate that they are reliable on a wide set of problems, to ensure that problems like the one above don't arise.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants