How Does SNOPT Compare to the Differential Corrector?

« Go Back


QuestionHow does SNOPT compare to the Differential Corrector?
With the release of STK 11.3, SNOPT (Sparse Nonlinear OPTimizer) and IPOPT (Interior Point Optimizer) were introduced as new search profiles in an Astrogator Target Sequence, adding to the existing Differential Corrector (DC) profile. If you are accustomed to using the DC profile for targeting, it is perhaps worth pointing out that the DC serves a somewhat different use case than the optimizers. Briefly, the DC iteratively adjusts free parameters such as the initial velocity, final time, etc., to meet a set of target constraints, while the optimizers iteratively adjust similar free variables to minimize/maximize a certain quantity and meet a set of constraints. For example, use the DC to determine the requisite DeltaV to attain a certain mission orbit, and use SNOPT to reach your target orbit within a minimum amount of time, if feasible.

Two commonly used DC options that modelers have found useful in accelerating convergence are the maximum step size and the perturbation step size for your control variables. Customers have frequently asked whether these options also exist for SNOPT. These two DC concepts do not literally carry over to SNOPT, but there are other settings that you can use to potentially help with convergence. Some common SNOPT options are exposed in the STK GUI. You can set some others using a SNOPT “specs” file. An example file is attached to this article; change the file extension from .txt to .specs if you intend to use it in STK. The file shows a list of SNOPT options; instruction for setting these are documented on page 63 of the User's Guide for SNOPT Version 7.7

There is no option for a perturbation step size, since optimizers such as SNOPT work fundamentally differently compared to the DC. The DC is essentially a “shooting” algorithm that solves a set of algebraic equations obtained at the conclusion of a numerical integration, which itself is, for example, started with some unknown initial conditions you are interested in determining. The perturbation in that case is used to compute the sensitivity matrix (the Jacobian) of this set of algebraic equations with respect to those initial conditions or other appropriate parameters that need tweaking. DC does this through finite differencing by perturbing the independent variables by a degree specified in the perturbation option. SNOPT, on the other hand, is a numerical optimizer with behavior that you can control via many settings but not a perturbation step size. This is because you shouldn’t have any control over how much the decision variables are perturbed during each iteration; SNOPT computes that automatically. The literal translation of the DC-type “perturbation” in the SNOPT world would be the mesh size for the derivative computation by SNOPT — SNOPT also computes a Jacobian matrix repeatedly — but that perturbation size is not exposed as a user option.

Although there is not a directly equivalent SNOPT option for the maximum step size, there is a SNOPT setting called the “Major step limit”.  Normally, it defaults to 2.0, but users of SNOPT in Astrogator have had success dropping it to between 0.1 and 0.001. It limits the maximum excursions of the SNOPT free parameters each time it searches for the “best direction” of perturbation, and it may help convergence in problems with many closely spaced stationary points. However, the Major step limit is still just a limit and not a fixed number like the DC perturbation size. The actual step size is automatically computed by SNOPT.

It can also be useful to look at the SNOPT return message in the log if SNOPT is struggling to converge. This message can provide a hint at which of the many SNOPT options you could tweak. Two settings that are often helpful to look into are the feasibility and optimality tolerances. You can begin by lowering them by a couple of orders of magnitude, for example.

For more tips using SNOPT with STK's Astrogator capability, try this Tips and Tricks for the Sparse Nonlinear Optimizer (SNOPT) Profile in Astrogator article.
TitleHow Does SNOPT Compare to the Differential Corrector?
URL NameHow-does-SNOPT-compare-to-the-Differential-Corrector

Related Files