-
Notifications
You must be signed in to change notification settings - Fork 109
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
Consider updating SLSQP to a modern and maintained implementation #303
Comments
@ewu63 Question for you on this - does pyOptSparse add any measurable advantage over just using SciPy minimize for SLSQP? If the end result is using a dense Jacobean anyway. I understand the usefulness of the common interface between various optimizers, but as an OpenMDAO user where the ScipyOptimizeDriver is available, in your opinion is there any advantage to using pyOptSparse for SLSQP? |
It's not clear to us - we did some benchmarking years ago and did not find conclusively whether our version or SciPy's version is superior. @marcomangano can add more on this probably. Like you said, key features are generally not supported since SLSQP is a very old and little-maintained optimizer that has been pretty static, so I don't expect performance to differ too much between versions, and the bounds issue is the only notable divergent aspect that I am aware of. |
I don't have much to add to what @ewu63 said. I did some benchmarking at the beginning of my PhD using the Rosenbrock, Sellar, and the scalable function on Sec.5.4 of this paper by Tedford and Martins, also testing different MDO architectures. Maybe there is value in resurrecting these scripts? I also agree on @ewu63's last point. I think the value of SLSQP is its simplicity and ease of use, but I would not rely on it for complex optimization problems. It has a very simple termination criteria and failure handling approach, among other things. There are better SQP-based optimizers out there. SNOPT is our go-to but it is a commercial code, so you need to obtain a licence. IPOPT has shown some great performance but might have a steeper learning curve and tweaking the options to work for your case might take some more trial and error. |
Description of feature
Currently, the version of SLSQP provided is quite old, and suffers from several bugs that have been fixed elsewhere. See #301 for some discussion. Since SLSQP remains a rather popular optimizer, to maintain long term viability, I think it would be best to switch to using a version that is better maintained. This would also avoid any duplication in maintenance efforts.
Potential solution
As far as I'm aware, there are three versions out there:
This thread will serve as a place to discuss future plans regarding SLSQP.
The text was updated successfully, but these errors were encountered: