- The new API now only exports the
ALTROSolvertype, no longer exportingAugmentedLagrangianSolver,iLQRSolver, andProjectedNewtonSolver. - Use the
projected_newtonsolver option to turn off to get the same behavior asAugmentedLagrangianSolver. Passing an unconstrained problem is equivalent to solving withiLQRSolver. - Solver options are now shared between all solvers, and implemented as
SolverOptions. Usesolver.optsorset_options!(solver; opts...)to change solver options. Solver options can also be passed into the solver constructor. - Solver stats have also been improved, and contains a single log for all iteration types. Accessible via
solver.statsorAltro.stats(solver).
- iLQR iterations now provide a brief description for why they terminate.
- The
show_summaryoption can be used to display a brief summary of the solve upon completion.
- Each solve now saves a solver status in
solver.stats.status, accessible viastatus(solver), which provides some information about how the solver exited. - Runtime errors in Altro.jl were removed in favor of exiting the solver with a specific solver status. Runtime errors are still possible if they originate from TrajetoryOptimization.jl or bugs (nothing is wrapped in
try/catchloops). - Changed convergence criteria for the iLQR solver: it must satisfy both the change in cost tolerance and the gradient tolerance at the same time.
- The
ProjectedNewtonSolvernow does a projection of the dual variables in order to accurately calculation the residual of dual optimality (gradient of the Lagrangian). Can be disabled via themultiplier_projectionoption.