From ea5faad04e8f7dfe5b0e0e9817161b1c18773fe0 Mon Sep 17 00:00:00 2001 From: kaushikponnapalli Date: Tue, 6 Aug 2024 07:41:45 -0500 Subject: [PATCH] Birkhoff Docs (#1088) * Added documentation for birkhoff method * Simplified initialization of Birkhoff transcription and updated examples to use new API * added an example using Birkhoff transcription to the docs * fixed references on moon landing problem * added moon landing problem to toc tree * Fixed a bug with min time climb where number of nodes was specified incorrectly and updated new load case test --------- Co-authored-by: Kaushik Ponnapalli --- docs/dymos_book/_toc.yml | 1 + docs/dymos_book/api/transcriptions_api.ipynb | 24 ++ .../examples/moon_landing/moon_landing.ipynb | 287 ++++++++++++++++++ .../getting_started/collocation.ipynb | 49 ++- .../scripts/birkhoff_animation_1.png | Bin 0 -> 14756 bytes .../scripts/birkhoff_animation_2.png | Bin 0 -> 16446 bytes .../scripts/birkhoff_animation_3.png | Bin 0 -> 17897 bytes .../scripts/birkhoff_animation_4.png | Bin 0 -> 19263 bytes .../scripts/birkhoff_animation_5.png | Bin 0 -> 22527 bytes docs/dymos_book/references.bib | 12 + .../test/test_aircraft_cruise.py | 4 +- .../test/test_ex_aircraft_steady_flight.py | 2 +- .../test/ex_brachistochrone.py | 5 +- .../test/ex_brachistochrone_vector_states.py | 4 +- ...st_brachistochrone_birkhoff_constraints.py | 12 +- ...test_brachistochrone_callable_ode_class.py | 5 +- ...doc_brachistochrone_polynomial_controls.py | 12 +- .../test_ex_brachistochrone_refine_grid.py | 4 +- .../test/test_cannonball_matrix_state.py | 4 +- .../test_two_phase_cannonball_birkhoff.py | 4 +- .../test/test_double_integrator.py | 2 +- .../test/test_double_integrator_breakwell.py | 3 +- .../flying_robot/test/test_flying_robot.py | 3 +- .../test/test_goddard_rocket_problem.py | 2 +- .../test/test_hyper_sensitive.py | 2 +- .../test/test_low_thrust_spiral.py | 2 +- .../test/test_ex_min_time_climb.py | 2 +- .../test/test_moon_landing_problem.py | 2 +- dymos/examples/racecar/test/test_racecar.py | 2 +- .../robot_arm/doc/test_doc_robot_arm.py | 4 +- .../examples/robot_arm/test/test_robot_arm.py | 4 +- .../shuttle_reentry/test/test_reentry.py | 8 +- dymos/test/test_load_case.py | 2 +- .../transcriptions/pseudospectral/birkhoff.py | 18 +- 34 files changed, 421 insertions(+), 64 deletions(-) create mode 100644 docs/dymos_book/examples/moon_landing/moon_landing.ipynb create mode 100644 docs/dymos_book/getting_started/scripts/birkhoff_animation_1.png create mode 100644 docs/dymos_book/getting_started/scripts/birkhoff_animation_2.png create mode 100644 docs/dymos_book/getting_started/scripts/birkhoff_animation_3.png create mode 100644 docs/dymos_book/getting_started/scripts/birkhoff_animation_4.png create mode 100644 docs/dymos_book/getting_started/scripts/birkhoff_animation_5.png diff --git a/docs/dymos_book/_toc.yml b/docs/dymos_book/_toc.yml index 9d3147daf..c1c2fb882 100644 --- a/docs/dymos_book/_toc.yml +++ b/docs/dymos_book/_toc.yml @@ -30,6 +30,7 @@ parts: - file: examples/length_constrained_brachistochrone/length_constrained_brachistochrone - file: examples/min_time_climb/min_time_climb - file: examples/mountain_car/mountain_car + - file: examples/moon_landing/moon_landing - file: examples/multi_phase_cannonball/multi_phase_cannonball - file: examples/multibranch_trajectory/multibranch_trajectory - file: examples/racecar/racecar diff --git a/docs/dymos_book/api/transcriptions_api.ipynb b/docs/dymos_book/api/transcriptions_api.ipynb index 1a3b1569a..4bb2c42fe 100644 --- a/docs/dymos_book/api/transcriptions_api.ipynb +++ b/docs/dymos_book/api/transcriptions_api.ipynb @@ -102,6 +102,23 @@ "om.show_options_table(tx)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Birkhoff Options" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "tx = dm.transcriptions.Birkhoff(num_nodes=5, grid_type='cgl')\n", + "om.show_options_table(tx)" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -122,6 +139,13 @@ "tx = dm.transcriptions.ExplicitShooting(num_segments=1, order=5)\n", "om.show_options_table(tx)" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { diff --git a/docs/dymos_book/examples/moon_landing/moon_landing.ipynb b/docs/dymos_book/examples/moon_landing/moon_landing.ipynb new file mode 100644 index 000000000..2b69b3136 --- /dev/null +++ b/docs/dymos_book/examples/moon_landing/moon_landing.ipynb @@ -0,0 +1,287 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "8f7334f0", + "metadata": { + "tags": [ + "active-ipynb", + "remove-input", + "remove-output" + ] + }, + "outputs": [], + "source": [ + "# This cell is mandatory in all Dymos documentation notebooks.\n", + "missing_packages = []\n", + "try:\n", + " import openmdao.api as om\n", + "except ImportError:\n", + " if 'google.colab' in str(get_ipython()):\n", + " !python -m pip install openmdao[notebooks]\n", + " else:\n", + " missing_packages.append('openmdao')\n", + "try:\n", + " import dymos as dm\n", + "except ImportError:\n", + " if 'google.colab' in str(get_ipython()):\n", + " !python -m pip install dymos\n", + " else:\n", + " missing_packages.append('dymos')\n", + "try:\n", + " import pyoptsparse\n", + "except ImportError:\n", + " if 'google.colab' in str(get_ipython()):\n", + " !pip install -q condacolab\n", + " import condacolab\n", + " condacolab.install_miniconda()\n", + " !conda install -c conda-forge pyoptsparse\n", + " else:\n", + " missing_packages.append('pyoptsparse')\n", + "if missing_packages:\n", + " raise EnvironmentError('This notebook requires the following packages '\n", + " 'please install them and restart this notebook\\'s runtime: {\",\".join(missing_packages)}')" + ] + }, + { + "cell_type": "markdown", + "id": "c9df3b73", + "metadata": {}, + "source": [ + "# Moon Landing Problem\n", + "\n", + "The Moon landing problem is a version of the soft landing problem presented in {cite}`Meditch1964`. The problem is simplified to have one degree-of-freedom and normalized such that the Moon's gravity is unity. The goal is to minimize the amount of fuel consumed or, stated differently, maximize the final mass, while bringing the lander down to the surface for a soft landing." + ] + }, + { + "cell_type": "markdown", + "id": "a8b1357a", + "metadata": {}, + "source": [ + "## State and control variables\n", + "\n", + "This system has three state variables, the altitude ($h$), velocity ($v$), and mass ($m$) of the lander.\n", + "\n", + "This system has one control variable, ($T$), the thrust applied to the vehicle.\n", + "\n", + "The dynamics of the system are given by\n", + "\n", + "\\begin{align}\n", + " \\dot{h} &= v \\\\\n", + " \\dot{v} &= -1 + \\frac{T}{m} \\\\\n", + " \\dot{m} &= -\\frac{T}{2.349}\n", + "\\end{align}" + ] + }, + { + "cell_type": "markdown", + "id": "71a99c51", + "metadata": {}, + "source": [ + "## Problem Definition\n", + "\n", + "We seek to maximize the final mass of the vehicle while bringing it to a soft landing.\n", + "\n", + "\\begin{align}\n", + " \\mathrm{Minimize} \\, J &= m_f\n", + "\\end{align}\n", + "\n", + "The initial conditions are\n", + "\\begin{align}\n", + " h_0 &= 1 \\\\\n", + " v_0 &= -0.783 \\\\\n", + " m_0 &= 1\n", + "\\end{align}\n", + "and the terminal constraints are\n", + "\\begin{align}\n", + " h_f &= 0 \\\\\n", + " v_f &= 0\n", + "\\end{align}\n", + "\n", + "Additionally, the thrust is constrained to be positive but remain under 1.227.\n", + "\n", + "\\begin{align}\n", + " 0 \\le T \\le 1.227 \n", + "\\end{align}" + ] + }, + { + "cell_type": "markdown", + "id": "48fa15f1", + "metadata": {}, + "source": [ + "## Defining the ODE\n", + "\n", + "The following implements the dynamics of the Moon landing problem described above." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d1fa5d91", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import openmdao.api as om\n", + "\n", + "\n", + "class MoonLandingProblemODE(om.ExplicitComponent):\n", + " def initialize(self):\n", + " self.options.declare('num_nodes', types=int)\n", + "\n", + " def setup(self):\n", + " nn = self.options['num_nodes']\n", + "\n", + " # inputs\n", + " self.add_input('h', val=np.ones(nn), units=None, desc='Altitude')\n", + " self.add_input('v', val=np.ones(nn), units='1/s', desc='Velocity')\n", + " self.add_input('m', val=np.ones(nn), units=None, desc='Mass')\n", + " self.add_input('T', val=np.ones(nn), units=None, desc='Thrust')\n", + "\n", + " # outputs\n", + " self.add_output('h_dot', val=np.ones(nn), units='1/s', desc='Rate of change of Altitude')\n", + " self.add_output('v_dot', val=np.ones(nn), units='1/s**2', desc='Rate of change of Velocity')\n", + " self.add_output('m_dot', val=np.ones(nn), units='1/s', desc='Rate of change of Mass')\n", + "\n", + " # partials\n", + " ar = np.arange(nn)\n", + " self.declare_partials(of='h_dot', wrt='v', rows=ar, cols=ar, val=1.0)\n", + " self.declare_partials(of='v_dot', wrt='m', rows=ar, cols=ar)\n", + " self.declare_partials(of='v_dot', wrt='T', rows=ar, cols=ar)\n", + " self.declare_partials(of='m_dot', wrt='T', rows=ar, cols=ar, val=-1/2.349)\n", + " self.declare_partials(of='m_dot', wrt='T', rows=ar, cols=ar, val=-1/2.349)\n", + "\n", + " def compute(self, inputs, outputs, discrete_inputs=None, discrete_outputs=None):\n", + " v = inputs['v']\n", + " m = inputs['m']\n", + " T = inputs['T']\n", + "\n", + " outputs['h_dot'] = v\n", + " outputs['v_dot'] = -1 + T/m\n", + " outputs['m_dot'] = -T/2.349\n", + "\n", + " def compute_partials(self, inputs, partials, discrete_inputs=None):\n", + " m = inputs['m']\n", + " T = inputs['T']\n", + "\n", + " partials['v_dot', 'T'] = 1/m\n", + " partials['v_dot', 'm'] = -T/m**2" + ] + }, + { + "cell_type": "markdown", + "id": "18e69427", + "metadata": {}, + "source": [ + "## Solving the Moon landing problem with Dymos\n", + "\n", + "The optimal solution to this problem is known to have _bang-bang_ control. That is, the control has a \"jump\" that render it discontinuous in time. Capturing this behavior accurately requires the use of grid refinement for the Gauss-Lobatto and Radau pseudospectral transcriptions but the Birkhoff pseudospectral transcription can be used to handle this behavior without the use of any grid refinement. The following code shows the use of the Birkhoff pseudospectral transcription to solve the problem." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "65ab9d17", + "metadata": {}, + "outputs": [], + "source": [ + "import dymos as dm\n", + "import matplotlib.pyplot as plt\n", + "\n", + "p = om.Problem(model=om.Group())\n", + "p.driver = om.pyOptSparseDriver()\n", + "p.driver.declare_coloring()\n", + "p.driver.options['optimizer'] = 'IPOPT'\n", + "p.driver.opt_settings['hessian_approximation'] = 'limited-memory'\n", + "p.driver.opt_settings['print_level'] = 0\n", + "p.driver.opt_settings['linear_solver'] = 'mumps'\n", + "p.driver.declare_coloring()\n", + "\n", + "t = dm.Birkhoff(num_nodes=20)\n", + "\n", + "traj = p.model.add_subsystem('traj', dm.Trajectory())\n", + "phase = dm.Phase(ode_class=MoonLandingProblemODE, transcription=t)\n", + "\n", + "phase.set_time_options(fix_initial=True, fix_duration=False)\n", + "phase.add_state('h', fix_initial=True, rate_source='h_dot')\n", + "phase.add_state('v', fix_initial=True, rate_source='v_dot')\n", + "phase.add_state('m', fix_initial=True, lower=1e-3, rate_source='m_dot')\n", + "phase.add_control('T', lower=0.0, upper=1.227)\n", + "\n", + "phase.add_boundary_constraint('h', loc='final', equals=0.0)\n", + "phase.add_boundary_constraint('v', loc='final', equals=0.0)\n", + "\n", + "phase.add_objective('m', scaler=-1)\n", + "phase.set_simulate_options(atol=1.0E-1, rtol=1.0E-2)\n", + "\n", + "traj.add_phase('phase', phase)\n", + "\n", + "p.setup(check=True, force_alloc_complex=True)\n", + "\n", + "phase.set_time_val(initial=0.0, duration=1.0)\n", + "phase.set_state_val('h', [1.0, 0.0])\n", + "phase.set_state_val('v', [-0.783, 0.0])\n", + "phase.set_state_val('m', [1.0, 0.2])\n", + "phase.set_control_val('T', [0.0, 1.227])\n", + "dm.run_problem(p, simulate=False, simulate_kwargs={'times_per_seg': 100}, make_plots=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9b266ef1", + "metadata": {}, + "outputs": [], + "source": [ + "from IPython.display import IFrame\n", + "IFrame(src=str(p.get_reports_dir() / 'traj_results_report.html'), width=800, height=1200)" + ] + }, + { + "cell_type": "markdown", + "id": "59334e2c", + "metadata": {}, + "source": [ + "### Notes on the solution\n", + "\n", + "We can see that the collocation solution accurately captures the jump in the thrust. The oscillatory behavior observed is a result of interpolation performed post solution rather than a property of the solution itself." + ] + }, + { + "cell_type": "markdown", + "id": "2e64faca", + "metadata": {}, + "source": [ + "## References\n", + "\n", + "```{bibliography}\n", + ":filter: docname in docnames\n", + "```" + ] + } + ], + "metadata": { + "celltoolbar": "Tags", + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/dymos_book/getting_started/collocation.ipynb b/docs/dymos_book/getting_started/collocation.ipynb index 422b4ab91..f27c1ab80 100644 --- a/docs/dymos_book/getting_started/collocation.ipynb +++ b/docs/dymos_book/getting_started/collocation.ipynb @@ -106,7 +106,7 @@ "\n", "_How long does it take the ball to reach the ground from an initial height of 100 m?_\n", "\n", - "We will explain how this problem is solved using the two implicit simulation techniques in Dymos: high-order Gauss-Lobatto collocation, and the Radau Pseudospectral Method.\n", + "We will explain how this problem is solved using the three implicit simulation techniques in Dymos: high-order Gauss-Lobatto collocation, the Radau Pseudospectral Method, and the Birkhoff Pseudospectral Method.\n", "\n", "## Finding the trajectory using high-order Legendre-Gauss-Lobatto collocation\n", "\n", @@ -207,11 +207,44 @@ "\n", "![Screenshot](scripts/lgr_solution_5.png)\n", "\n", + "## Finding the trajectory using the Birkhoff Pseudospectral Method\n", + "\n", + "As before, there are two states and two 3rd-order polynomials representing the time history of each states.\n", + "In the Birkhoff pseudospectral method, all states and state rates are used as free variables.\n", + "Additionally, the initial and final nodes are represented independently and may also be free variables depending on the problem.\n", + "So each state eight pieces of information to be fully solved.\n", + "In this problem, the initial and final points of the position and the initial point of the velocity are fixed.\n", + "The final velocity is left open to be determined by the terminal boundary constraint.\n", + "\n", + "![Screenshot](scripts/birkhoff_animation_1.png)\n", + "\n", + "The state variables constrained such that the end points are equal to the initial and final nodes.\n", + "For illustrative purposes, the state variables are initialized as the average of the guess for initial and final states.\n", + "\n", + "![Screenshot](scripts/birkhoff_animation_2.png)\n", + "\n", + "We can use the initial state value, the state rates, and an integration matrix to compute the state value at each subsequent node.\n", + "These values can be compared to obtain the two state defects.\n", + "\n", + "![Screenshot](scripts/birkhoff_animation_3.png)\n", + "\n", + "The state values can be used to evaluate the ODE.\n", + "The state rates computed from the ODE can be compared against the state rate free variables to obtain the three state rate defects.\n", + "\n", + "![Screenshot](scripts/birkhoff_animation_4.png)\n", + "\n", + "\n", + "The free variables are iterated until the defects are zero and the boundary constraints are satisfied.\n", + "\n", + "![Screenshot](scripts/birkhoff_animation_5.png)\n", + "\n", + "\n", "## Multiple Segments\n", "\n", "The simple examples above use one single 3rd-order polynomial to represent the time history of the states.\n", "With more complex states, a single 3rd-order polynomial would not be capable of replicating the time history.\n", - "In practice, we can use more polynomial segments _and_ higher-order polynomials to better match the dynamics.\n", + "In practice, we can use more polynomial segments _and_ higher-order polynomials to better match the dynamics for the Gauss-Lobatto and Radau Pseudospectral methods.\n", + "For the Birkhoff pseudospectral method we only use one segment but use higher-order polynomials.\n", "\n", "In the case of adding more segments, one can choose whether the segment boundaries are shared by the segments, or independent.\n", "If they are shared, fewer design variables are necessary, but it may be more difficult for the optimizer to search for a solution.\n", @@ -227,6 +260,16 @@ "In addition, the interpolation step used by the Gauss-Lobatto method can result in interpolated state values falling well outside the user's expected range if the initial guess is not sufficiently accurate.\n", "This can cause convergence issues if there are nonlinear solvers within the ODE that rely on a reasonable guess to achieve convergence.\n", "\n", + "## Birkhoff Pseudospectral Method vs LGL and LGR Collocation\n", + "\n", + "There are two notable differences between the birkhoff pseudospectral method and the two other methods.\n", + "Firstly, the collocation constraints are applied in _integral_ form rather than _differential_ form.\n", + "Secondly, an additional layer of slack is introduced to the NLP by introducing _virtual variables_ as stand-ins for the state rates.\n", + "These virtual variables are constrained to equal the state rate obtained by evaluating the ODE and are used to compute state values and apply the state defects.\n", + "These two factors combine to produce an NLP that is better conditioned and whose solution is more equivalent to the solution of the original optimal control problem.\n", + "The improved conditioning allows for the use of very large segments in the discretization of the state and therefore only one large segment is utilized when using this transcription.\n", + "The stronger optimality conditions come with the cost of additional iterations of the NLP solver but the resulting solutions typically have lower cost functions at the expense of additional compute time.\n", + "\n", "## Satisfying Defects with a Nonlinear Solver\n", "\n", "Typically, collocation problems are solved by posing the defects as constraints to an optimizer.\n", @@ -271,7 +314,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.7" + "version": "3.11.0" } }, "nbformat": 4, diff --git a/docs/dymos_book/getting_started/scripts/birkhoff_animation_1.png b/docs/dymos_book/getting_started/scripts/birkhoff_animation_1.png new file mode 100644 index 0000000000000000000000000000000000000000..05e0f58c0845199fc959e1a65df4ba1b17c1c993 GIT binary patch literal 14756 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 c2AcF>da+2j0K}Q2+n{ literal 0 HcmV?d00001 diff --git a/docs/dymos_book/getting_started/scripts/birkhoff_animation_2.png b/docs/dymos_book/getting_started/scripts/birkhoff_animation_2.png new file mode 100644 index 0000000000000000000000000000000000000000..c4bc159ff0f2b6cd3779bbadbc7e9d1981797559 GIT binary patch literal 16446 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 s_g0_J{{5B~-THq)$ literal 0 HcmV?d00001 diff --git a/docs/dymos_book/getting_started/scripts/birkhoff_animation_5.png b/docs/dymos_book/getting_started/scripts/birkhoff_animation_5.png new file mode 100644 index 0000000000000000000000000000000000000000..3fadf7b3a3f3f4f01c5fce44f31ca253df727e45 GIT binary patch literal 22527 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