Hi everyone,
I've been noticing something with my SNOPT optimizations, and I'm not sure why this is happening.
My optimization problem has 82 design variables, and 8 nonlinear constraints. I provide all of the gradients. What I am seeing is that as soon as the optimizer enters the infeasible region, it takes one last large step, and then begins to take only very small design steps, but sometimes a large step every so often. It has a very hard time getting out of the infeasible region, and seems to me to be wasting so many expensive function evaluations, since it is testing virtually the same design over and over again.
Attached is a plot of my normalized design variable history, objective history, and constraint history. Every design point after the vertical red line is infeasible. You can see in the design variable history that, after the vertical red line, it only makes very small changes, except for a few large "spikes", and similarly in the objective and constraint histories, the objective and constraint values changes very little. In the constraint history plot, a value > 0 means the constraint is violated.
The SNOPT Log is attached as well.
In a previous run with a smaller set of design variables, I was able to obtain a much better design than the one that this optimization obtained before going infeasible. I have verified that the previous design is attainable with this new set of design variables, so it should at least be able to do just as well.
Does anyone know what could be going on here? Are there any settings in SNOPT that could help with this?
I checked the constraint gradients against finite differencing (outside of SNOPT) and they were quite good.
Thanks,
Josh