When using the SciPyOptimize SLSQP driver in OpenMDAO, bounds on design variables seem to be strongly enforced (i.e. the optimizer does not seem to ever pick values that are outside those bounds). However, with the PyOptSparse SLSQP driver, the bounds are still treated as constraints, but it does seem to try to evaluate cases outside the bounds. Is there a way to force the PyOptSparse driver to behave more like the SciPyOptimize one in this sense?
1 Answer
despite both having the SLSQP name, Scipy and pyoptsparse use different implementations of the algorithm. The Scipy one was updated with stricter bounds enforcement a few years ago, but the one in pyoptsparse was not.
To fix this, someone would need to spend some time updating the SLSQP fortran code pyoptsparse itself. Jacob Williams has done a decent job of creating an updated SLSQP codebase. Perhaps you could collaborate with him to add his version of the algorithm to pyoptsparse.