Major changes compared to pyOpt
The following list summarizes some of the changes/improvements made to pyOpt to get pyOptSparse:
Elimination of \(\mathcal{O} (n^2)\) scaling behaviour when adding large numbers of design variables (>10,000)
Proper handling of all optimizers when run in parallel environment (only a single optimization instance is run, not one instance per processor)
More flexible return specification of constraints
More flexible return specification of constraint gradients
Complete elimination of gradient indexing errors using dictionary-based returns
Substantial improvement of optimization script robustness through indexing elimination
Automatic assembly of sparse Jacobians with both dense and sparse sub-blocks
Automatic conversion of sparse Jacobian to dense for optimizers that cannot handle sparse constraints
User specification of design variable scaling
User specification of constraint scaling
Design variable returns in dictionary format only
Specification of linear constraints, dense or sparse
Sparse non-linear Jacobians
New history file format. Uses SQLite dictionaries.
Fixed hot start bug where first call to user functions is a gradient. It is now guaranteed, that the first call is to the function evaluation, not the gradient.
Various bug fixes in SNOPT
Constraints can be in any order, independent of what the individual optimizer requires
Python 3.x compatibility