Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

create_statefbk_iosystem and optimal control enhancements #930

Merged
merged 5 commits into from
Oct 22, 2023

Conversation

murrayrm
Copy link
Member

@murrayrm murrayrm commented Sep 10, 2023

This PR has two primary changes. motivated by some debugging I was doing in #929:

  • The create_statefbk_iosystem function now allows you to pass an I/O system instead of the a gain (or gain schedule) for the controller. This allows a more general state feedback controller (like an MPC controller) to be created using create_statefbk_iosystem. (I needed this so that I could gain easy access to the inputs in issue #929, since the feedback function does not pass through the controller inputs as a system output, but create_statefbk_iosystem does.)
  • The create_mpc_iosystem function now properly allows keyword parameters that go to the underlying OptimalControlProblem, for example setting the minimization method. Prior to this, the keyword parameters were passed to OptimalControlProblem but were also passed to NonlinearIOSystem, where they would generate an error.
  • Unit tests and documentation updated as well. More specifically, the documentation for the solve_ocp function has been updated to make more clear how the final time point is handled (see issue #929 for some discussion on this).
  • Had to modify the install_examples.yml workflow to explicitly include the latest python version, otherwise an early version of matplotlib got installed that was not current enough to work with current code (not sure why this was suddenly required...).

@coveralls
Copy link

coveralls commented Sep 10, 2023

Coverage Status

coverage: 95.012% (+0.002%) from 95.01% when pulling 5e217ee on murrayrm:mpc_enhancements-10Sep2023 into a11d3be on python-control:main.

@murrayrm murrayrm changed the title create_statefbk_iosystem and create_mpc_iosystem enhancements create_statefbk_iosystem and optimal control enhancements Sep 15, 2023
@murrayrm murrayrm force-pushed the mpc_enhancements-10Sep2023 branch 2 times, most recently from f9256cc to 522a8d7 Compare September 16, 2023 04:35
doc/optimal.rst Outdated

.. math::

J(x, u) = \sum_{k=0}^{N-1} L(x_k, u_k)\, dt + V \bigl( x_N \bigr).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why does V(x_N) need big parens but L(.) does not?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

above, V(.) gets regular sized parens.

@sawyerbfuller
Copy link
Contributor

These seem like obvious improvements to make, so I see no issue with them. Just one tiny note in the comments.

@murrayrm murrayrm force-pushed the mpc_enhancements-10Sep2023 branch 2 times, most recently from 727eb8e to f58b19b Compare October 22, 2023 05:31
@murrayrm murrayrm merged commit a44def1 into python-control:main Oct 22, 2023
14 checks passed
@murrayrm murrayrm deleted the mpc_enhancements-10Sep2023 branch October 22, 2023 05:46
@murrayrm murrayrm added this to the 0.10.0 milestone Mar 31, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Constrained MPC: Differences to MATLAB and Numeric Issues for different OS
3 participants