The Transcriptions API#

The transcription is the means by which Dymos converts the problem of finding a continuous control function which optimizes the operation of some system into a discrete optimization problem which can be solved by an off-the-shelf optimizer.

Dymos currently supports the following transcriptions

  • Radau Pseudospectral Method

  • Gauss-Lobatto Collocation

  • Explicit Shooting

Radau Options#

OptionDefaultAcceptable ValuesAcceptable TypesDescription
compressedTrue[True, False]['bool']Use compressed transcription, meaning state and control valuesat segment boundaries are not duplicated on input. This implicitly enforces value continuity between segments but in some cases may make the problem more difficult to solve.
num_segments1N/A['int']Number of segments
order5N/A['int', 'Sequence', 'ndarray']Order of the state transcription. The order of the control transcription is `order - 1`.
segment_endsN/AN/A['Sequence', 'ndarray']Locations of segment ends or None for equally spaced segments
solve_segmentsFalse[False, 'forward', 'backward']N/AApplies 'solve_segments' behavior to _all_ states in the Phase. If 'forward', collocation defects within each segment are solved with a Newton solver by fixing the initial value in the phase (if using compressed transcription) or segment (if not using compressed transcription). This provides a forward shooting (or multiple shooting) method. If 'backward', the final value in the phase or segment is fixed and a solver finds the other ones to mimic reverse propagation. Set to False (the default) to explicitly disable the use of a solver to converge the state time history.

GaussLobatto Options#

OptionDefaultAcceptable ValuesAcceptable TypesDescription
compressedTrue[True, False]['bool']Use compressed transcription, meaning state and control valuesat segment boundaries are not duplicated on input. This implicitly enforces value continuity between segments but in some cases may make the problem more difficult to solve.
num_segments1N/A['int']Number of segments
order[5]N/A['int', 'Sequence', 'ndarray']Order of the state transcription. The order of the control transcription is `order - 1`.
segment_endsN/AN/A['Sequence', 'ndarray']Locations of segment ends or None for equally spaced segments
solve_segmentsFalse[False, 'forward', 'backward']N/AApplies 'solve_segments' behavior to _all_ states in the Phase. If 'forward', collocation defects within each segment are solved with a Newton solver by fixing the initial value in the phase (if using compressed transcription) or segment (if not using compressed transcription). This provides a forward shooting (or multiple shooting) method. If 'backward', the final value in the phase or segment is fixed and a solver finds the other ones to mimic reverse propagation. Set to False (the default) to explicitly disable the use of a solver to converge the state time history.

Birkhoff Options#

tx = dm.transcriptions.Birkhoff(num_nodes=5, grid_type='cgl')
om.show_options_table(tx)

OptionDefaultAcceptable ValuesAcceptable TypesDescription
compressedTrue[True, False]['bool']Use compressed transcription, meaning state and control valuesat segment boundaries are not duplicated on input. This implicitly enforces value continuity between segments but in some cases may make the problem more difficult to solve.
grid_typecgl['cgl', 'lgl']N/ASpecifies which type of grid is to be used. Options are Chebyshev-Gauss-Lobatto ("cgl") and Legendre-Gauss-Lobatto ("lgl")
num_nodes5N/A['int']The number of nodes in the grid
num_segments**Required**N/A['int']Number of segments
order3N/A['int', 'Sequence', 'ndarray']Order of the state transcription. The order of the control transcription is `order - 1`.
segment_endsN/AN/A['Sequence', 'ndarray']Locations of segment ends or None for equally spaced segments
solve_segmentsFalse[False, 'forward', 'backward']N/AApplies 'solve_segments' behavior to _all_ states in the Phase. If 'forward', collocation defects within each segment are solved with a Newton solver by fixing the initial value in the phase (if using compressed transcription) or segment (if not using compressed transcription). This provides a forward shooting (or multiple shooting) method. If 'backward', the final value in the phase or segment is fixed and a solver finds the other ones to mimic reverse propagation. Set to False (the default) to explicitly disable the use of a solver to converge the state time history.

ExplicitShooting Options#

OptionDefaultAcceptable ValuesAcceptable TypesDescriptionDeprecation
atol1e-06N/A['float']N/A
compressedTrue[True, False]['bool']Use compressed transcription, meaning state and control valuesat segment boundaries are not duplicated on input. This implicitly enforces value continuity between segments but in some cases may make the problem more difficult to solve.N/A
control_interpvandermonde['vandermonde', 'barycentric', 'cubic']N/AControl interpolation algorithm, one of either "vandermonde", "barycentric", or "cubic". In general, Vandermonde is faster but Barycentric is necessary for the Birkhoff transcription where the number of nodes per segment can exceed 20 to 30. Cubic uses the scipy interpolate cubic spline method and is typically the fastest of the threeN/A
first_stepN/AN/A['float']N/A
gridGaussLobattoGridN/A['GaussLobattoGrid', 'RadauGrid', 'BirkhoffGrid', 'str']The grid distribution used to layout the control inputs and provide the default output nodes.N/A
max_stepinfN/A['float']N/A
methodDOP853N/A['str']The integration method used.N/A
num_segments1N/A['int']Number of segmentsN/A
num_steps_per_segmentN/AN/A['int']Number of integration steps in each segmentOption `num_steps_per_segment is deprecated. ExplicitShooting now uses adaptive-step methods.
order5N/A['int', 'Sequence', 'ndarray']Order of the state transcription. The order of the control transcription is `order - 1`.N/A
output_gridN/AN/A['GaussLobattoGrid', 'RadauGrid', 'UniformGrid', 'BirkhoffGrid']The grid distribution determining the location of the output nodes. The default value of None will result in the use of the grid for outputs. This is useful for the implementation of path constraints but can result in highly nonlinear dynamics being smoothed over in the outputs. When used for validation through simulation, it is generally wise to choose an output grid that is more dense than the input grid to capture this nonlinearity.N/A
propagate_derivsTrue[True, False]['bool']If True, propagate the state and derivatives of the state and time with respect to the integration parameters. If False, only propagate the primal states. If only using this transcription to propagate an ODE and derivatives are nof needed, setting this option to False should result in faster execution.N/A
rtol1e-09N/A['float']N/A
segment_endsN/AN/A['Sequence', 'ndarray']Locations of segment ends or None for equally spaced segmentsN/A
subprob_reportsFalseN/AN/AControls the reports made when running the subproblems for ExplicitShootingN/A