| route-pattern | /:user_id/:repository/pull/:id/files(.:format) |
| route-controller | pull_requests |
| route-action | files |
| fetch-nonce | v2:38e622ce-58ac-2304-2547-67e68a570c73 |
| current-catalog-service-hash | ae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b |
| request-id | 973C:3FA4EE:48B27A:62EAAD:697BD146 |
| html-safe-nonce | 8f61e47cd4fcdca7098b12b00c0bcbf1461250e0f49f3bd169ff42b1d3101da3 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5NzNDOjNGQTRFRTo0OEIyN0E6NjJFQUFEOjY5N0JEMTQ2IiwidmlzaXRvcl9pZCI6IjE0MTAxMDU2NDI3MDk2NjgxNjYiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | a682b693794f31df57a784f42551bcb65bbc7a335920c75e6aa53b146b2accbe |
| hovercard-subject-tag | pull_request:577027033 |
| github-keyboard-shortcuts | repository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | ///pull_requests/show/files |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/python-control/python-control/pull/549/files |
| twitter:image | https://avatars.githubusercontent.com/u/293362?s=400&v=4 |
| twitter:card | summary_large_image |
| og:image | https://avatars.githubusercontent.com/u/293362?s=400&v=4 |
| og:image:alt | This PR adds a new optimal control module, control.optimal, that implements finite horizon optimal control problems with constraints, including rudimentary model predictive control (MPC). The unde... |
| og:site_name | GitHub |
| og:type | object |
| hostname | github.com |
| expected-hostname | github.com |
| None | 88b7b3079ea5046bb661ad315dabef17ecc28e5f9f988d30044f4f6e56520728 |
| turbo-cache-control | no-preview |
| diff-view | unified |
| go-import | github.com/python-control/python-control git https://github.com/python-control/python-control.git |
| octolytics-dimension-user_id | 2285872 |
| octolytics-dimension-user_login | python-control |
| octolytics-dimension-repository_id | 22791752 |
| octolytics-dimension-repository_nwo | python-control/python-control |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 22791752 |
| octolytics-dimension-repository_network_root_nwo | python-control/python-control |
| turbo-body-classes | logged-out env-production page-responsive full-width |
| disable-turbo | true |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 42cddef55c232612d1a39797b85abf955112a1b4 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
| Skip to content | https://github.com/python-control/python-control/pull/549/changes#start-of-content |
|
| https://github.com/ |
|
Sign in
| https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fpython-control%2Fpython-control%2Fpull%2F549%2Ffiles |
| GitHub CopilotWrite better code with AI | https://github.com/features/copilot |
| GitHub SparkBuild and deploy intelligent apps | https://github.com/features/spark |
| GitHub ModelsManage and compare prompts | https://github.com/features/models |
| MCP RegistryNewIntegrate external tools | https://github.com/mcp |
| ActionsAutomate any workflow | https://github.com/features/actions |
| CodespacesInstant dev environments | https://github.com/features/codespaces |
| IssuesPlan and track work | https://github.com/features/issues |
| Code ReviewManage code changes | https://github.com/features/code-review |
| GitHub Advanced SecurityFind and fix vulnerabilities | https://github.com/security/advanced-security |
| Code securitySecure your code as you build | https://github.com/security/advanced-security/code-security |
| Secret protectionStop leaks before they start | https://github.com/security/advanced-security/secret-protection |
| Why GitHub | https://github.com/why-github |
| Documentation | https://docs.github.com |
| Blog | https://github.blog |
| Changelog | https://github.blog/changelog |
| Marketplace | https://github.com/marketplace |
| View all features | https://github.com/features |
| Enterprises | https://github.com/enterprise |
| Small and medium teams | https://github.com/team |
| Startups | https://github.com/enterprise/startups |
| Nonprofits | https://github.com/solutions/industry/nonprofits |
| App Modernization | https://github.com/solutions/use-case/app-modernization |
| DevSecOps | https://github.com/solutions/use-case/devsecops |
| DevOps | https://github.com/solutions/use-case/devops |
| CI/CD | https://github.com/solutions/use-case/ci-cd |
| View all use cases | https://github.com/solutions/use-case |
| Healthcare | https://github.com/solutions/industry/healthcare |
| Financial services | https://github.com/solutions/industry/financial-services |
| Manufacturing | https://github.com/solutions/industry/manufacturing |
| Government | https://github.com/solutions/industry/government |
| View all industries | https://github.com/solutions/industry |
| View all solutions | https://github.com/solutions |
| AI | https://github.com/resources/articles?topic=ai |
| Software Development | https://github.com/resources/articles?topic=software-development |
| DevOps | https://github.com/resources/articles?topic=devops |
| Security | https://github.com/resources/articles?topic=security |
| View all topics | https://github.com/resources/articles |
| Customer stories | https://github.com/customer-stories |
| Events & webinars | https://github.com/resources/events |
| Ebooks & reports | https://github.com/resources/whitepapers |
| Business insights | https://github.com/solutions/executive-insights |
| GitHub Skills | https://skills.github.com |
| Documentation | https://docs.github.com |
| Customer support | https://support.github.com |
| Community forum | https://github.com/orgs/community/discussions |
| Trust center | https://github.com/trust-center |
| Partners | https://github.com/partners |
| GitHub SponsorsFund open source developers | https://github.com/sponsors |
| Security Lab | https://securitylab.github.com |
| Maintainer Community | https://maintainers.github.com |
| Accelerator | https://github.com/accelerator |
| Archive Program | https://archiveprogram.github.com |
| Topics | https://github.com/topics |
| Trending | https://github.com/trending |
| Collections | https://github.com/collections |
| Enterprise platformAI-powered developer platform | https://github.com/enterprise |
| GitHub Advanced SecurityEnterprise-grade security features | https://github.com/security/advanced-security |
| Copilot for BusinessEnterprise-grade AI features | https://github.com/features/copilot/copilot-business |
| Premium SupportEnterprise-grade 24/7 support | https://github.com/premium-support |
| Pricing | https://github.com/pricing |
| Search syntax tips | https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax |
| documentation | https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax |
|
Sign in
| https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fpython-control%2Fpython-control%2Fpull%2F549%2Ffiles |
|
Sign up
| https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fpull_requests%2Fshow%2Ffiles&source=header-repo&source_repo=python-control%2Fpython-control |
| Reload | https://github.com/python-control/python-control/pull/549/changes |
| Reload | https://github.com/python-control/python-control/pull/549/changes |
| Reload | https://github.com/python-control/python-control/pull/549/changes |
|
python-control
| https://github.com/python-control |
| python-control | https://github.com/python-control/python-control |
|
Notifications
| https://github.com/login?return_to=%2Fpython-control%2Fpython-control |
|
Fork
447
| https://github.com/login?return_to=%2Fpython-control%2Fpython-control |
|
Star
2k
| https://github.com/login?return_to=%2Fpython-control%2Fpython-control |
|
Code
| https://github.com/python-control/python-control |
|
Issues
87
| https://github.com/python-control/python-control/issues |
|
Pull requests
8
| https://github.com/python-control/python-control/pulls |
|
Discussions
| https://github.com/python-control/python-control/discussions |
|
Actions
| https://github.com/python-control/python-control/actions |
|
Projects
0
| https://github.com/python-control/python-control/projects |
|
Wiki
| https://github.com/python-control/python-control/wiki |
|
Security
0
| https://github.com/python-control/python-control/security |
|
Insights
| https://github.com/python-control/python-control/pulse |
|
Code
| https://github.com/python-control/python-control |
|
Issues
| https://github.com/python-control/python-control/issues |
|
Pull requests
| https://github.com/python-control/python-control/pulls |
|
Discussions
| https://github.com/python-control/python-control/discussions |
|
Actions
| https://github.com/python-control/python-control/actions |
|
Projects
| https://github.com/python-control/python-control/projects |
|
Wiki
| https://github.com/python-control/python-control/wiki |
|
Security
| https://github.com/python-control/python-control/security |
|
Insights
| https://github.com/python-control/python-control/pulse |
| Sign up for GitHub
| https://github.com/signup?return_to=%2Fpython-control%2Fpython-control%2Fissues%2Fnew%2Fchoose |
| terms of service | https://docs.github.com/terms |
| privacy statement | https://docs.github.com/privacy |
| Sign in | https://github.com/login?return_to=%2Fpython-control%2Fpython-control%2Fissues%2Fnew%2Fchoose |
| sawyerbfuller | https://github.com/sawyerbfuller |
| python-control:master | https://github.com/python-control/python-control/tree/master |
| murrayrm:obc | https://github.com/murrayrm/python-control/tree/obc |
|
Conversation
2
| https://github.com/python-control/python-control/pull/549 |
|
Commits
18
| https://github.com/python-control/python-control/pull/549/commits |
|
Checks
0
| https://github.com/python-control/python-control/pull/549/checks |
|
Files changed
| https://github.com/python-control/python-control/pull/549/files |
| Please reload this page | https://github.com/python-control/python-control/pull/549/changes |
|
Optimal control module
| https://github.com/python-control/python-control/pull/549/changes#top |
|
Show all changes
18 commits
| https://github.com/python-control/python-control/pull/549/files |
|
00297d6
draft unit test
murrayrm Dec 28, 2020
| https://github.com/python-control/python-control/pull/549/commits/00297d6881aa423c5dd30143e4b539691984d7c0 |
|
23cb793
convert to pytest
murrayrm Dec 30, 2020
| https://github.com/python-control/python-control/pull/549/commits/23cb793909b7bcb1cd040c8d4fb0971109d7a0c9 |
|
8711900
initial minimal implementation (working)
murrayrm Feb 13, 2021
| https://github.com/python-control/python-control/pull/549/commits/8711900e309e1c9a9f589383aa2982df52c82669 |
|
6f9c092
minor refactoring plus additional comments on method
murrayrm Feb 13, 2021
| https://github.com/python-control/python-control/pull/549/commits/6f9c092b26f0167c5f5f47ccdeb182475a835f5d |
|
bd322e7
remove polytope dependence; implement MPC iosys w/ notebook example
murrayrm Feb 15, 2021
| https://github.com/python-control/python-control/pull/549/commits/bd322e7befd85e67492d87f87e5291bfcf800357 |
|
0d14642
add'l unit tests, cache sim results, equality constraint support
murrayrm Feb 15, 2021
| https://github.com/python-control/python-control/pull/549/commits/0d14642f22373ed22e4598d448b0482adc13060c |
|
2456f36
slight code refactoring + docstrings + initial doc/obc.rst
murrayrm Feb 16, 2021
| https://github.com/python-control/python-control/pull/549/commits/2456f365057c96393d2ec93be7e49380b6bc9e5e |
|
769eaa5
add info/debug messages + code refactor, result object
murrayrm Feb 19, 2021
| https://github.com/python-control/python-control/pull/549/commits/769eaa5ec980f7e46fc64e4182ad6af5f53e4e18 |
|
ea2884d
slight refactoring of cost functions + example tweaks
murrayrm Feb 20, 2021
| https://github.com/python-control/python-control/pull/549/commits/ea2884d0287aa56d2ea6b4693b48868c10f20f62 |
|
9494092
rename obc to optimal, new examples/unit tests
murrayrm Feb 20, 2021
| https://github.com/python-control/python-control/pull/549/commits/94940927221a914738e612394d168ca61ec4a3d0 |
|
acc4439
update unit tests for speed and coverage
murrayrm Feb 21, 2021
| https://github.com/python-control/python-control/pull/549/commits/acc4439075acd50680b0bef9266e918f45a05339 |
|
5f261cc
updated argument checking + unit tests (and coverage) + fixes
murrayrm Feb 21, 2021
| https://github.com/python-control/python-control/pull/549/commits/5f261ccb132801f079892f19cfe4daed8b0e0d0a |
|
980fa5f
PEP8 cleanup
murrayrm Feb 21, 2021
| https://github.com/python-control/python-control/pull/549/commits/980fa5f5ab0daf9e59aca375f7b448e165b05eab |
|
7741fe9
add basis functions, solver options, examples/tests
murrayrm Feb 27, 2021
| https://github.com/python-control/python-control/pull/549/commits/7741fe9fbbd42dc99f4f6a1084d80c586dac925f |
|
df91cac
set up benchmarks/profiling via asv
murrayrm Feb 27, 2021
| https://github.com/python-control/python-control/pull/549/commits/df91cac6772f626df2ca3035b9a66d347f814e6d |
|
d735f79
add unit tests for additional coverage
murrayrm Feb 28, 2021
| https://github.com/python-control/python-control/pull/549/commits/d735f794701a1eb5bab4230073eb4ce81ff55160 |
|
5838c2f
clean up steering-optimal example
murrayrm Feb 28, 2021
| https://github.com/python-control/python-control/pull/549/commits/5838c2fa2da69cab46935d03a801be3ca63275d3 |
|
c49ee90
updated benchmarks + performance tweaks
murrayrm Mar 1, 2021
| https://github.com/python-control/python-control/pull/549/commits/c49ee9038e2e2d94f9d1b4937dba5c901687e7ff |
|
Clear filters
| https://github.com/python-control/python-control/pull/549/files |
| Please reload this page | https://github.com/python-control/python-control/pull/549/changes |
| Please reload this page | https://github.com/python-control/python-control/pull/549/changes |
|
.gitignore
| https://github.com/python-control/python-control/pull/549/changes#diff-bc37d034bad564583790a46f19d807abfe519c5671395fd494d8cce506c42947 |
|
asv.conf.json
| https://github.com/python-control/python-control/pull/549/changes#diff-d18ceac2def9772dfdf24d7a83cbe688bf5717e334108eff2aeb581d9992d531 |
|
README
| https://github.com/python-control/python-control/pull/549/changes#diff-369b4cda4f9a4786ca631e4e16f90d1d8c7e2bf868b1c71dc6c7df3a3e16a817 |
|
__init__.py
| https://github.com/python-control/python-control/pull/549/changes#diff-c154eee9decb8fc4aca2b76f877f3082419528ad848f3800074693860239d9f4 |
|
optimal_bench.py
| https://github.com/python-control/python-control/pull/549/changes#diff-6f5124f16143cce65ee38232c84268adec7f3929cae87765eaaa7176f3ecad4a |
|
config.py
| https://github.com/python-control/python-control/pull/549/changes#diff-d1ad1d32d49067e21beadf8da713ffdea3d1673aedb13dbbf54028cb7e8e4cb5 |
|
__init__.py
| https://github.com/python-control/python-control/pull/549/changes#diff-dfc763bf9a1b4ad920c03e8c17e26c2b0774c15f2cdc77608bf29e2d6577660d |
|
basis.py
| https://github.com/python-control/python-control/pull/549/changes#diff-4d1628be0ac467eeae964f0484605d32f083216773660fdfedb9d56c02a7748e |
|
bezier.py
| https://github.com/python-control/python-control/pull/549/changes#diff-123c1531a9577a0e059978f323d4432428149ec4af2cfd52ea0e7c74549a78a6 |
|
iosys.py
| https://github.com/python-control/python-control/pull/549/changes#diff-12b378d96d36c9d59a9fbc5afbc7cc158d153ff7591b4769f8312772e1d74ed1 |
|
optimal.py
| https://github.com/python-control/python-control/pull/549/changes#diff-19ca2bf58874b6519164f42d62448fdcc1e05efe2b45263f6761f39392cdde01 |
|
config_test.py
| https://github.com/python-control/python-control/pull/549/changes#diff-5eadccfa15bf2713ea447a592131d9404915a826d9b41f54d5ef4b2631f24067 |
|
optimal_test.py
| https://github.com/python-control/python-control/pull/549/changes#diff-bca0c81c34fee75364f4e38c7cc0005a45ecd9fa9a40901c2b846f07945eb5d0 |
|
classes.rst
| https://github.com/python-control/python-control/pull/549/changes#diff-7ace42a025609df89447e9513968d95b8191259149e34bb7d088987aa28ec85e |
|
examples.rst
| https://github.com/python-control/python-control/pull/549/changes#diff-2a75ce1d5fcc083639c4620bb785827882f0224ccb145a58160a42d248bde9e2 |
|
index.rst
| https://github.com/python-control/python-control/pull/549/changes#diff-3161f66a61b9ed68303607f1dbdce1c7bdcc69c42f8ea1c2051a07a579ebcf5d |
|
mpc-overview.png
| https://github.com/python-control/python-control/pull/549/changes#diff-9ceb898ca0c5f2a27044fbd70a62fe72dc7647c49b0ae00259c10affd77ec156 |
|
mpc_aircraft.ipynb
| https://github.com/python-control/python-control/pull/549/changes#diff-d56ffa3fdcd2146049390ce749cb1e68cd1e8f9eefe7bd2059de155eef5c274c |
|
optimal.rst
| https://github.com/python-control/python-control/pull/549/changes#diff-7a587fcc2ce0d45f27f08ebd590bad2db607818b399c646d0e2455ce96d9096e |
|
steering-optimal.png
| https://github.com/python-control/python-control/pull/549/changes#diff-bbd943650d2701a97546b40a0db32d9e25214c42b79e03c02f69a29ad3c69cdc |
|
mpc_aircraft.ipynb
| https://github.com/python-control/python-control/pull/549/changes#diff-9f8e75cf8d93cd8e6a5354ed142d2cdf9e8c802993f57def95fe1fab2a1b0d23 |
|
run_examples.sh
| https://github.com/python-control/python-control/pull/549/changes#diff-ba0c1386fea4628bfda91096e6901974e30ae63103ecf3148cb6d779a62310e1 |
|
steering-optimal.py
| https://github.com/python-control/python-control/pull/549/changes#diff-42a66769802bd9ec9593531800662a3bd5faf0962f113d6105ab81ad21791df8 |
| .gitignore | https://github.com/python-control/python-control/pull/549/changes#diff-bc37d034bad564583790a46f19d807abfe519c5671395fd494d8cce506c42947 |
|
View file
| https://github.com/murrayrm/python-control/blob/c49ee9038e2e2d94f9d1b4937dba5c901687e7ff/.gitignore |
|
Open in desktop
| https://desktop.github.com |
| https://github.co/hiddenchars |
| https://github.com/python-control/python-control/pull/549/{{ revealButtonHref }} |
|
| https://github.com/python-control/python-control/pull/549/changes#diff-bc37d034bad564583790a46f19d807abfe519c5671395fd494d8cce506c42947 |
|
| https://github.com/python-control/python-control/pull/549/changes#diff-bc37d034bad564583790a46f19d807abfe519c5671395fd494d8cce506c42947 |
| asv.conf.json | https://github.com/python-control/python-control/pull/549/changes#diff-d18ceac2def9772dfdf24d7a83cbe688bf5717e334108eff2aeb581d9992d531 |
|
View file
| https://github.com/murrayrm/python-control/blob/c49ee9038e2e2d94f9d1b4937dba5c901687e7ff/asv.conf.json |
|
Open in desktop
| https://desktop.github.com |
| https://github.co/hiddenchars |
| https://github.com/python-control/python-control/pull/549/{{ revealButtonHref }} |
| benchmarks/README | https://github.com/python-control/python-control/pull/549/changes#diff-369b4cda4f9a4786ca631e4e16f90d1d8c7e2bf868b1c71dc6c7df3a3e16a817 |
|
View file
| https://github.com/murrayrm/python-control/blob/c49ee9038e2e2d94f9d1b4937dba5c901687e7ff/benchmarks/README |
|
Open in desktop
| https://desktop.github.com |
| https://github.co/hiddenchars |
| https://github.com/python-control/python-control/pull/549/{{ revealButtonHref }} |
| benchmarks/__init__.py | https://github.com/python-control/python-control/pull/549/changes#diff-c154eee9decb8fc4aca2b76f877f3082419528ad848f3800074693860239d9f4 |
|
View file
| https://github.com/murrayrm/python-control/blob/c49ee9038e2e2d94f9d1b4937dba5c901687e7ff/benchmarks/__init__.py |
|
Open in desktop
| https://desktop.github.com |
| Please reload this page | https://github.com/python-control/python-control/pull/549/changes |
|
| https://github.com |
| Terms | https://docs.github.com/site-policy/github-terms/github-terms-of-service |
| Privacy | https://docs.github.com/site-policy/privacy-policies/github-privacy-statement |
| Security | https://github.com/security |
| Status | https://www.githubstatus.com/ |
| Community | https://github.community/ |
| Docs | https://docs.github.com/ |
| Contact | https://support.github.com?tags=dotcom-footer |