Optimal Finite Maneuver Segment

The Optimal Finite Maneuver segment has four tabs that define its parameters: Solver, Engine, Log, and Steering/Nodes. Solver and Engine appear immediately, while Log and Steering/Nodes appear after you provide an initial guess.

Usage of SNOPT in the Astrogator target sequence profiles and optimal finite maneuvers now requires a complimentary license. Please contact AGI support if you require such a license for use with Astrogator.


The Solver tab defines the variables of the finite maneuver optimization computation and its boundary conditions. It has two parts: Problem Setup and Problem Execution. The following are descriptions for the parameters that appear in each part.

Solver - Problem Setup

Number of Nodes

This enables you to specify the number of discretization nodes for the direct transcription algorithm. For the global collocation-based transcription method used by Astrogator, this is equal to the number of quadrature nodes at which the states and control functions are sampled/approximated.

Algorithm Options

The following are additional options to define the maneuver optimization problem:

Parameter Description
Discretization Strategy This is the quadrature node type that enforces collocation. Choose between Legendre-Gauss-Lobatto (LGL) and Legendre Gauss-Radau (LGR).
Working Variables

This is a variable set used to formulate maneuver optimization problem. The choices are Equinoctial and Modified Equinoctial .

Scaling Options Scaling typically improves the numerical behavior of optimization problems. This option specifies how, if at all, to accomplish scaling. Choose from one of the following:
  • No Scaling means that scaling does not apply.
  • Scale based on Canonical units scales down the distance-dimensioned state variable by dscale = radius of the central body, scales down time by , where µ is the gravitational parameter of the central body of the maneuver, and scales down mass by the total mass of the vehicle at the maneuver start time, as provided in the initial guess.
  • Scale based on initial state means that the distance-dimensioned state is scaled down by , time is scaled down by , and mass is scaled down by the total mass of the vehicle at the maneuver start time, as provided in the initial guess. Here and are the lower and upper bounds of the distance-dimensioned state at the Optimal Finite Maneuver start time.
Guess Interpolation Method Specify the mode of resampling the initial guess at the collocation nodes. Choose between Lagrange polynomial (default) and Piecewise linear. For Finite Maneuver seeding, only Lagrange polynomial resampling is available.
Use Unit Vector for Thrust Direction Selecting this option makes the unit vectors in the maneuver frame become the control functions, instead of the azimuth and elevation angles. Using a unit vector for the thrust vector could be beneficial in some problems as a way to avoid ambiguities due to angle “wrapping”.

Initial Guess File

You can use the Initial Guess File (*.nod extension) as the initial guess for the finite maneuver optimization. If you source the initial guess from an existing Finite Maneuver (see below), then you can leave this field blank.

Seed from

Choose between Initial Guess File or Finite Maneuver. If you select the latter option, a finite maneuver must already exist in the current Maneuver segment.


Clicking this button causes data from the Initial Guess File or Finite Maneuver to be appropriately resampled in preparation for the maneuver optimization problem.

Node Status

This indicates what data, if any, the discretization nodes store at a certain point in the process.

The orbit states, mass, and the thrust attitude for an Optimal Finite Maneuver are ultimately solved for at a set of discrete time nodes, suitably placed between maneuver start and end times (which themselves may be variables). It is precisely at these nodes that the initial guess states and controls are also sampled after accomplishing seeding using one of the two methods described earlier. Thus, a certain set of time nodes, as determined by the Number of Nodes and the algorithm Discretization Strategy, can have one of the following associated with them:

  • No data, if neither an initial guess nor a solution exists
  • Only an initial guess after seeding is complete but before attempting optimization
  • A solution from the optimization process, either converged or otherwise

Refer to Seeding an Optimal Finite Maneuver for more information.

Status Explanation
not initialized The nodes have no data, neither an initial guess or an optimizer output.
N nodes seeded from file This populates the N discretization nodes with initial guess data from a file of format *.nod.
N nodes seeded from finite maneuver This populates the N discretization nodes with initial guess data from a finite maneuver.
N nodes from current collocation result This populates the N discretization nodes with values of the orbital states, mass, and thrust attitude from the numerical optimizer.

Initial Boundary … / Final Boundary…

Use these buttons to specify the upper and lower bounds of the initial and final orbit states. The buttons and other controls become available after you seed an initial guess.

Parameter Explanation
Set from Initial Guess

Use this option only if none of the initial/final states are free to optimize. If you select this, the initial/final orbit states are assigned the initial guess values at the maneuver start time/end time. To explicitly set the bounds on each variable, clear this box and use the option below.

This is set to True by default in a new Maneuver segment.

Set Explicitly These are the upper and lower bounds for each variable. Equal upper and lower bounds enforce an equality constraint and effectively remove an initial state from the set of optimization variables.
  • The label Tf in the Final Time row refers to the final time from a seeded Finite Maneuver or from the Initial Guess File.
  • For free-final-time problems, such as minimum-time maneuvers, the final boundary conditions must always be set explicitly.

Path Boundaries

Use this button to specify the upper and lower bounds of the orbit states and thrust spherical angles on the trajectory at all but the initial and terminal points.

Parameter Explanation
Compute from Initial Guess If true, the upper bound is the maximum value of a quantity in the supplied initial guess. Likewise, the lower bound is the minimum value of this quantity in the initial guess. This is set to True by default in a new Maneuver segment.
Set Explicitly These are the upper and lower bounds for each variable.
  • For mass, the upper bound is automatically taken to be Dry Mass + Fuel Mass, and the lower bound is the Dry Mass.
  • If using a unit-vector triad for thrust attitude, Astrogator automatically sets appropriate bounds internally.

Solver - Problem Execution

Run Mode

Choose between Run current nodes and Optimize via direct transcription. Select the first option to propagate the states with an existing thrust-attitude time history, either from an initial guess or from an existing direct-transcription solution. Select the second option to start the finite maneuver optimization process.

Parameter Explanation
Run current nodes

If you select this, running the MCS propagates the vehicle states with a thrust vector of a magnitude equal to that provided by the chosen Engine type. It also propagates with an attitude from either an initial guess or from the optimizer output.

When an Optimal Finite Maneuver is first seeded from an initial guess, running the current nodes propagates the vehicle from the states associated with the initial guess. The maneuver uses the thrust pointing history supplied by the guess. After attempting maneuver optimization, running the current nodes propagates the vehicle with the states returned from the optimizer and, if successful, the optimal maneuver pointing history.

Optimize via direct transcription Running the sequence with this option initiates the finite maneuver optimization process. A console window displays the numerical optimizer iterations in real time. Select Optimizer… (see below) before running the MCS with this option.
  • Astrogator finite maneuver optimization uses the SNOPTnumerical optimization library. Please refer to the SNOPT manual for a detailed explanation of various items in the iteration console. You need an additional license for this. Contact AGI Support for more information.
  • After attempting a finite maneuver optimization, the result automatically becomes available as the initial guess for a later optimization run. To discard this guess and seed from a file or a finite maneuver, you must repeat the seeding process.


Use this button to specify the maneuver optimization objective or cost functional and optimization algorithm options. For details on the role of an objective functional in Finite Maneuver Optimization, see Maneuver Optimization Using Direct Transcription Methods.

Parameter Explanation
Minimize total time of flight This determines the thrust attitude program (and any other optimizable variables) to minimize the total maneuver duration.
Minimize propellant use This determines the thrust attitude program (and any other optimizable variables) to minimize the net propellant mass expended over the maneuver duration. If you select this, Astrogator effectively maximizes the propellant mass at the maneuver final time.
Maximize final spherical radius This determines the thrust attitude program (and any other optimizable variables) to maximize the separation between the vehicle and the central body attracting center at the end of the maneuver.

For details on the optimizer algorithm options, refer to the Sparse Nonlinear Optimizer (SNOPT) Profile options.

  • In addition to the final maneuver time, other optimizable variables include the initial/final conditions with unequal lower and upper bounds.
  • The Minimize propellant use objective may not produce a meaningful result with all engine models, such as those with a constant mass flow rate.
  • The final spherical radius to be maximized is calculated as , where {xf,yf,zf} are the inertial Cartesian coordinates of the vehicle at the end of the maneuver.

Halt MCS and Discard Result if Optimization is Unsuccessful

If you select this and the numerical optimizer indicates unsuccessful convergence to a locally best solution, the MCS stops and the result from the direct-transcription-collocation system is not stored or available for further use. Selecting Run Mode as Run current nodes at this point runs the most recently provided initial guess or the most recent result from the optimizer.


Optimal Finite Maneuver Engine parameters are the same as Finite Maneuver Engine parameters.


This tab displays the optimizer iteration log. For more information, please refer to the Sparse Nonlinear Optimizer (SNOPT) Profile log.


This displays information on the maneuver Thrust Axes and Node Status, and enables the export of node data (either initial guess or optimizer output) into a *.nod file format, which you may subsequently use for seeding purposes. Choose between TimePosVelMassRaDec and TimePosVelMassDirCos thrust attitude export formats.