Dymos

Latest version: v1.10.0

Safety actively analyzes 638773 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 2 of 5

1.6.1

November 14, 2022

Version 1.6.1 of Dymos addresses bugs described below.

This release also includes the start of an implementation to allow calculated expressions to be used as
constraints and timeseries outputs, but this feature is still undergoing development and documentation.

Backwards Incompatible API Changes & Deprecations

None

Enhancements

* Added the ability to include calculation expressions in timeseries outputs. This feature is still undergoing development and is not supported as of this release. [846](https://github.com/OpenMDAO/dymos/pull/846)
* Added ability to specify constraint metadata (scaler, ref, linear, etc) when calling `link_phases`. [858](https://github.com/OpenMDAO/dymos/pull/858)

Bug Fixes

* Fixed a bug in polynomial controls and rates were included in timeseries outputs for ExplicitShooting. [840](https://github.com/OpenMDAO/dymos/pull/840)
* Fixed an interpolation issue where scipy now requires unique x-axis values. [842](https://github.com/OpenMDAO/dymos/pull/842)
* Added a better error message when time units are `None` and state rate introspection fails to find valid state units based on state rate units. [851](https://github.com/OpenMDAO/dymos/pull/851)
* Fixed an issue that was causing states not to show up in the timeseries outputs for AnalyticPhase. [853](https://github.com/OpenMDAO/dymos/pull/853)
* Fixed a bug that was causing errors when phase linkages involved parameters. [858](https://github.com/OpenMDAO/dymos/pull/858)

Miscellaneous

* Various github workflow issues addressed due to changes in dependencies. [844](https://github.com/OpenMDAO/dymos/pull/844) [#849](https://github.com/OpenMDAO/dymos/pull/849) [#854](https://github.com/OpenMDAO/dymos/pull/854)

1.6.0

October 17, 2022

Version 1.6.0 of Dymos implements many improvements since our last release.

The new AnalyticPhase is useful for when the state values are analytically known as functions of time and other parameters.
States are not only outputs and therefore values cannot be fixed or bounded, though they can be constrained with boundary and path constraints.
AnalyticPhase does not support controls (or polynomial controls).
Unlike other phase types which use the ODE solver in scipy.solve_ivp to propagate a trajectory based on the current control history, AnalyticPhase simply provides its outputs.
AnalyticPhase does not have a notion of segments.
Instead, it simply evaluates the value of the states at some set of `N` nodes, where `N` is given by the user and the node locations are the Legendre-Gauss-Lobatto nodes in non-dimensional phase time.

It will also be the last version of the code before we introduce more tailored phase classes that are more closely coupled to their transcription.
In the following 1.7.0 release, instantiating `Phase` will result in a deprecation warning and inform the user on how to change their phase instantiation calls.

Dymos now automatically generates a linkage report html file when appropriate.
This report looks similar to the N2, and helps to visualize the continuity of variables across phases within a trajectory.

Other changes include a significant cleanup of the timeseries output code, allowing users to rename states/controls/etc. in the timeseries outputs as they see fit.
Timeseries can now also provide approximate rates of outputs (based on fitting them on the current grid and interpolating the derivative of the resulting polynomial).
In an upcoming release, the user will be able to easily apply constraints to these approximated rates.

Backwards Incompatible API Changes & Deprecations

* State option `connected_initial` is deprecated in favor of `input_initial`. This is more in-line with the time option, and reflects the fact that there's no requirement that the user actually connect to the value.
* The Lagrange interpolation and differentiation matrices are now generated much more efficiently, but change in the order of operations may result in small numerical differences in interpolatation of states and controls (generally on the order of 1E-12).

Enhancements

* Refactored TimeComp to avoid unnecessary recalculation of partials. [759](https://github.com/OpenMDAO/dymos/pull/759)
* Added a new N2-like linkage report to show continuity of variables between phases. [764](https://github.com/OpenMDAO/dymos/pull/764)
* Added timeseries rates for pseudospectral transcriptions. [781](https://github.com/OpenMDAO/dymos/pull/781)
* Trajectory.phases subgroup is now available before setup. [782](https://github.com/OpenMDAO/dymos/pull/782)
* Changed time series plots directory to be under the problem reports directory. [784](https://github.com/OpenMDAO/dymos/pull/784)
* `run_problem` argument `restart` now allows a specific Case to be provided. [801](https://github.com/OpenMDAO/dymos/pull/801)
* Added warning when restarting with fix_final=True. [804](https://github.com/OpenMDAO/dymos/pull/804)
* Added the classic cart-pole example problem - thank you kanekosh! [808](https://github.com/OpenMDAO/dymos/pull/808)
* Updated assert_timeseries_near_equal to work with more general cases [810](https://github.com/OpenMDAO/dymos/pull/810)
* Refactored the timeseries handling to be more general and less transcription-specific. [816](https://github.com/OpenMDAO/dymos/pull/816)
* Added AnalyticPhase for phases in which no numerical integration is necessary. [833](https://github.com/OpenMDAO/dymos/pull/833)

Bug Fixes

* Fixed an error when an invalid rate source is provided for a state. [761](https://github.com/OpenMDAO/dymos/pull/761)
* Fixed a bug in size of trajectory parameters as passed to phases. [770](https://github.com/OpenMDAO/dymos/pull/770)
* Minor changes to fix occasional report testing failures. [785](https://github.com/OpenMDAO/dymos/pull/785)
* Fixed example code impacted by matplotlib change [826](https://github.com/OpenMDAO/dymos/pull/826)
* Fixed condition under which trajectory linkage reports are generated. [828](https://github.com/OpenMDAO/dymos/pull/828)
* Fixed issue in reentry example that was causing optimization to fail under SLSQP. [831](https://github.com/OpenMDAO/dymos/pull/831)

Miscellaneous

* Updated optimizer settings to improve convergence of the racecar example. [752](https://github.com/OpenMDAO/dymos/pull/752)
* Changed setup to use setuptools instead of distutils. [757](https://github.com/OpenMDAO/dymos/pull/757)
* Changes to use OpenMDAOs updated report system. [763](https://github.com/OpenMDAO/dymos/pull/763)
* Updated github workflow and setup.py. [768](https://github.com/OpenMDAO/dymos/pull/768)
* Switched to using mamba in CI workflow due to issues with conda. [772](https://github.com/OpenMDAO/dymos/pull/772)
* Updated optimizer settings to improve convergence of two-burn orbit raise example. [775](https://github.com/OpenMDAO/dymos/pull/775)
* Cleaned up error message from `assert_cases_equal` test utility a bit. [779](https://github.com/OpenMDAO/dymos/pull/779)
* Cleaned up CI and testing. [788](https://github.com/OpenMDAO/dymos/pull/788)
* Fixed two problems with the linkage report test [793](https://github.com/OpenMDAO/dymos/pull/793)
* Updated pyoptsparse build in github workflows [805](https://github.com/OpenMDAO/dymos/pull/805)
* Added small changes to improve coverage. [809](https://github.com/OpenMDAO/dymos/pull/809)
* Fixed CI dependency issues based on some broken jupyter-book dependencies. [812](https://github.com/OpenMDAO/dymos/pull/812)
* Various code cleanup items added. [807](https://github.com/OpenMDAO/dymos/pull/807)
* Made a few minor cleanups for the cartpole example. [815](https://github.com/OpenMDAO/dymos/pull/815)

1.5.0

May 05, 2022

This is version 1.5.0 of Dymos.

This version adds better support for OpenMDAO's automatic generation of reports.
Sub-problems, used to wrap ODEs for simulation or the ExplicitShooting transcription, will no longer generate problem reports by default.

Phase parameters have been refactored so that they are always available as an input (`path.to.phase.parameters:{param_name}`) and an output (`path.to.phase.parameter_vals:{param_name}`). This should make connecting parameters to downstream models more intuitive since the user is no longer required to do so via promotion. We also fixed some instances where Dymos would not detect invalid targets for parameters in some situations. This may detect issues in existing models that were previously undetected by Dymos.


The model for providing the 1976 standard atmosphere, `USatm1976Comp`, was originally intended to support some tests in Dymos but over time has been used by other projects. It has been changed such that it can accept either geodetic or geopotential altitude as input. The default is currently geopotential input (no transformation is performed on the altitude before interpolating the atmosphere table). In the future this will likely change to geodetic, since it's more likely to be the intent of the user that the provided altitude is geodetic. This will result in a minor change in the interpolated atmospheric properties, especially at higher altitudes, but we've found it to have only minor impact on results of several cases.


Several enhancements and bug fixes have been performed regarding constraints. The recent constraint aliasing update in OpenMDAO allows us to apply separate constraints to different indices of the same variables, meaning that we can apply path and boundary constraints directly to the timeseries outputs and no longer need separate pass-thru components to handle them. Also, importantly, all boundary constraints and path constraints are currently marked as nonlinear. Dymos previously attempted to determine when constraints could potentially be linear, but it's difficult to know the linearity of inputs from outside the trajectory or phase. The logic to determine this was starting to get quite complex, so we decided to remove it entirely for now. If the user is 100% certain that a boundary constraint or path constraint can validly be treated as linear, then the `linear=True` argument can be added to `add_boundary_constraint` or `add_path_constraint`. Just note that this WILL cause the failure of the optimization if the constraint output is not actually a linear function of the design variables. This assumption of non-linearity also works around some issues we were seeing with the way OpenMAO and pyOptSparse handle linear constraints with nonzero y-intercepts.
**This assumption of nonlinearity in boundary and path constraints may cause some models to have different convergence behavior and we welcome feedback if you experience problems due to this.**

Enhancements

* Users can now pass `simulate_kwargs` from `dymos.run_problem`. [720](https://github.com/OpenMDAO/dymos/pull/720)
* Added `set_parameter_options` method to `Trajectory` for better API consistency. [721](https://github.com/OpenMDAO/dymos/pull/721)
* USatm1976Comp now accepts altitude as either geopotential or geodetic. [735](https://github.com/OpenMDAO/dymos/pull/735)
* Disabled reports by default for subproblems under simulate and ExplicitShooting. [741](https://github.com/OpenMDAO/dymos/pull/741)
* Constraints are now applied directly to timeseries outputs, and several other constraint improvements. [743](https://github.com/OpenMDAO/dymos/pull/743)

Bug Fixes

* Fixed a bug that caused a hang when running the constraint report on MPI. [731](https://github.com/OpenMDAO/dymos/pull/731)
* Fixed a bug where trajectory parameters with no valid target will not flag an error. [744](https://github.com/OpenMDAO/dymos/pull/744)

Miscellaneous

* Fixed plots on several of the documentation examples. [709](https://github.com/OpenMDAO/dymos/pull/709)
* Added an example of using OpenMDAO's FunctionComp API for an ODE. [710](https://github.com/OpenMDAO/dymos/pull/710)
* Cleanup of the configuration/introspection stack. [713](https://github.com/OpenMDAO/dymos/pull/713)
* Reuse the OpenMDAO _ReprClass for `_unspecified` to deal with some issues with MPI operation. [724](https://github.com/OpenMDAO/dymos/pull/724)
* Added workflow_dispatch trigger on github so Dymos tests can be triggered by OpenMDAO pull requests. [732](https://github.com/OpenMDAO/dymos/pull/732) [#736](https://github.com/OpenMDAO/dymos/pull/736)
* Fixed an incorrect equation in the documentation of the calculation of flight path angle. [734](https://github.com/OpenMDAO/dymos/pull/734)

1.4.0

January 05, 2022

This is version 1.4.0 of Dymos.
It includes a fix for grid refinement and simulation with parameters, some minor performance improvements, and various documentation updates.

Enhancements

* Disabled check_partials of Dymos core components by default. [686](https://github.com/OpenMDAO/dymos/pull/686)
* Added performance improvements for PseudospectralTimeseriesOutputComp. [688](https://github.com/OpenMDAO/dymos/pull/688)
* Added a warning if bounds are applied to a state during solve_segments. [691](https://github.com/OpenMDAO/dymos/pull/691)
* Expanded the included 1976 standard atmosphere model to cover -15000 ft to 250000 ft and doc cleanup. [699](https://github.com/OpenMDAO/dymos/pull/699)
* Added the Bryson-Denham example problem and other various documentation improvements. [700](https://github.com/OpenMDAO/dymos/pull/700) [#702](https://github.com/OpenMDAO/dymos/pull/702) [#704](https://github.com/OpenMDAO/dymos/pull/704)
* Changed deprecated 'value' metadata usages to 'val'. [706](https://github.com/OpenMDAO/dymos/pull/706)

Bug Fixes

* Fixed a bug that could result in incorrect parameter values in simulation. [684](https://github.com/OpenMDAO/dymos/pull/684)
* Fixed example that doesn't work in google collab. [690](https://github.com/OpenMDAO/dymos/pull/690)
* Fixed a bug in grid refinement error estimation for state rates not from ODE. [703](https://github.com/OpenMDAO/dymos/pull/703)

Miscellaneous

* Added [notebooks] spec when installing with pip. [695](https://github.com/OpenMDAO/dymos/pull/695)
* Added CI matrix entry for testing without pyoptsparse. [697](https://github.com/OpenMDAO/dymos/pull/697)

1.3.0

November 19, 2021

This is version 1.3.0 of Dymos.

This release of Dymos introduces an ExplicitShooting transcription that provides an explicit Runge-Kutta integration of the ODE across a phase. This transcription is currently limited to fixed-step RK methods (RK4 being the default). Timeseries outputs are provided at the start/end of each segment in the phase. This is similar to the solve-segments capability in the collocation transcriptions, but fixed-step will provide _an_ answer (albeit inaccurate) across the integration rather than failing to converge if the dynamics become highly nonlinear.

Enhancements

* Added path constraints to the explicit shooting transcription. [659](https://github.com/OpenMDAO/dymos/pull/659)
* Added control continuity enforcement to ExplicitShooting transcription, and refactored continuity components in general. [660](https://github.com/OpenMDAO/dymos/pull/660)
* Added indication of fixed variables to linkage report. [662](https://github.com/OpenMDAO/dymos/pull/662)
* Replaced the tensordot in the compute method of timeseries_output_comp with a regular dot product to remove a performance bottleneck. [665](https://github.com/OpenMDAO/dymos/pull/665)
* Added constraint report to summarize boundary and path constraints for each phase of a trajectory. [666](https://github.com/OpenMDAO/dymos/pull/666)
* Added ExplicitShooting to transcriptions [669](https://github.com/OpenMDAO/dymos/pull/669)
* Significantly improved speed of ExplicitShooting [670](https://github.com/OpenMDAO/dymos/pull/670)
* Added Radau, BDF and LSODA as options for scipy's integration method when using simulate [675](https://github.com/OpenMDAO/dymos/pull/675)

Bug Fixes

* Removed solver for connected linkages. Its only needed for solve_segments. [668](https://github.com/OpenMDAO/dymos/pull/668)
* Changed default value of units in Trajectory.add_parameter to _unspecified. [673](https://github.com/OpenMDAO/dymos/pull/673)
* Added fix to allow parameters with static_targets=True to work with ExplicitShooting [679](https://github.com/OpenMDAO/dymos/pull/679)
* Fixed formatting in the constraint report [680](https://github.com/OpenMDAO/dymos/pull/680)

Miscellaneous

* None

1.2.0

October 12, 2021

This is version 1.2.0 of Dymos.

The release provides compatibility with OpenMDAO >=3.13.0 and adds
some performance improvements.

While we are beginning to bring a true explicit shooting capability
to Dymos, those capabilities are not fully filled out as of this release.

Backwards Incompatible API Changes & Deprecations

* Dymos 1.2.0 requires OpenMDAO >= 3.13.0, due to changes in the way indices are specified in OpenMDAO.

Enhancements

* Update run_problem.py to return success state [634](https://github.com/OpenMDAO/dymos/pull/634)
* Added an experimental explicit shooting transcription to dymos [637](https://github.com/OpenMDAO/dymos/pull/637)
* Added control rates and their derivatives when using ExplicitShooting. [645](https://github.com/OpenMDAO/dymos/pull/645)
* Rewrite of the USatm1976Comp to use pre-computed akima coefficients for interpolation. It is now complex-safe and considerably faster. [652](https://github.com/OpenMDAO/dymos/pull/652)
* Allow addition of ODE outputs to ExplicitShooting timeseries [654](https://github.com/OpenMDAO/dymos/pull/654)

Bug Fixes

* Fixed an issue where simulation was not working when running under MPI in run_problem [628](https://github.com/OpenMDAO/dymos/pull/628)
* Added a better error message when simulate fails due to the inability to find a good step size. [630](https://github.com/OpenMDAO/dymos/pull/630)
* Fixes a bug where t_initial_targets and t_duration_targets would not work if input_initial or input_duration were True, respectively. [656](https://github.com/OpenMDAO/dymos/pull/656)
* Fix to eliminate warning messages related to the recent indexing update to OpenMDAO. [Requires OpenMDAO >= 3.12.0] [636](https://github.com/OpenMDAO/dymos/pull/636)
* Removed exceptions introduced in OpenMDAO PR [2279](https://github.com/OpenMDAO/OpenMDAO/pull/2279). [#653](https://github.com/OpenMDAO/dymos/pull/653)

Miscellaneous

* Fixed issue in executable notebooks. [631](https://github.com/OpenMDAO/dymos/pull/631)
* Updated CI matrix to test against latest release and development versions of OpenMDAO. [638](https://github.com/OpenMDAO/dymos/pull/638)

Page 2 of 5

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.