René's URL Explorer Experiment


Title: Optimization-based and moving horizon estimation by murrayrm · Pull Request #877 · python-control/python-control · GitHub

Open Graph Title: Optimization-based and moving horizon estimation by murrayrm · Pull Request #877 · python-control/python-control

X Title: Optimization-based and moving horizon estimation by murrayrm · Pull Request #877 · python-control/python-control

Description: This PR adds new functionality for computing the optimal estimate for a (nonlinear) I/O system using an explicit cost function of a fixed window of applied inputs and measured outputs. This optimal estimation problem is then used to create a system for solving moving horizon estimation (MHE) problems. Documentation and unit tests are included. Summary of changes: Added the obc.OptimalEstimationProblem class and obc.create_mhe_iosystem() function, which implement that main new functionality. Added gaussian_likelyhood_cost() to create cost function corresponding to Gaussian likelihoods for use in optimal estimation. Added disturbance_range_constraint() to create a range constraint on disturbances. Moved processing of control and disturbance indices for estimation problems into iosys.py and use that functionality consistently for obc.create_estimator_iosystem and obc.OptimalEstimationProblem. Created a function for processing legacy keywords in config.py and updated legacy keyword processing class to use that functionality. Added a pytest mark for slow tests (@pytest.mark.slow), which can be used during development to skip slow tests by running pytest -m "not slow". Added unit tests, docstrings, and user documentation for new functionality, including a Jupyter notebook demonstrating optimal estimation and moving horizon estimation the PVTOL model system (from FBS2e and OBC notes). Additional small updates to docstrings to fix typos and formatting issues.

Open Graph Description: This PR adds new functionality for computing the optimal estimate for a (nonlinear) I/O system using an explicit cost function of a fixed window of applied inputs and measured outputs. This optima...

X Description: This PR adds new functionality for computing the optimal estimate for a (nonlinear) I/O system using an explicit cost function of a fixed window of applied inputs and measured outputs. This optima...

Opengraph URL: https://github.com/python-control/python-control/pull/877

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:ceed7d50-a752-1118-c110-4afa16c6d888
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idC3B8:2D6BD5:12A3D02:1A93B9A:697A387D
html-safe-nonce77182f9c164fc092b275c7fee7c9183e95a9c69ea7783a0ee12b533e436b0692
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDM0I4OjJENkJENToxMkEzRDAyOjFBOTNCOUE6Njk3QTM4N0QiLCJ2aXNpdG9yX2lkIjoiMjQ1NDU4NTE1MzU0MDcyMjkiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ==
visitor-hmac415c4fd74f0532215ad67455dfb67bb132c39cae5ade67975a45cbc2670f8250
hovercard-subject-tagpull_request:1290141160
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/files
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/python-control/python-control/pull/877/files
twitter:imagehttps://avatars.githubusercontent.com/u/293362?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/293362?s=400&v=4
og:image:altThis PR adds new functionality for computing the optimal estimate for a (nonlinear) I/O system using an explicit cost function of a fixed window of applied inputs and measured outputs. This optima...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
Noneaf6de804ceb83ad30bb9b348cdeaccaa30cdcb566762d5e74e21e2bad88885d0
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/python-control/python-control git https://github.com/python-control/python-control.git
octolytics-dimension-user_id2285872
octolytics-dimension-user_loginpython-control
octolytics-dimension-repository_id22791752
octolytics-dimension-repository_nwopython-control/python-control
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id22791752
octolytics-dimension-repository_network_root_nwopython-control/python-control
turbo-body-classeslogged-out env-production page-responsive full-width
disable-turbotrue
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release2d980605f0959039ddebcbcf522b072508302977
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/python-control/python-control/pull/877/files#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fpython-control%2Fpython-control%2Fpull%2F877%2Ffiles
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub SparkBuild and deploy intelligent appshttps://github.com/features/spark
GitHub ModelsManage and compare promptshttps://github.com/features/models
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
GitHub SponsorsFund open source developershttps://github.com/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/accelerator
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://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%2F877%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
Reloadhttps://github.com/python-control/python-control/pull/877/files
Reloadhttps://github.com/python-control/python-control/pull/877/files
Reloadhttps://github.com/python-control/python-control/pull/877/files
python-control https://github.com/python-control
python-controlhttps://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 servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2Fpython-control%2Fpython-control%2Fissues%2Fnew%2Fchoose
murrayrmhttps://github.com/murrayrm
python-control:mainhttps://github.com/python-control/python-control/tree/main
murrayrm:oep_mhe-26Feb2023https://github.com/murrayrm/python-control/tree/oep_mhe-26Feb2023
Conversation 5 https://github.com/python-control/python-control/pull/877
Commits 14 https://github.com/python-control/python-control/pull/877/commits
Checks 0 https://github.com/python-control/python-control/pull/877/checks
Files changed https://github.com/python-control/python-control/pull/877/files
Please reload this pagehttps://github.com/python-control/python-control/pull/877/files
Optimization-based and moving horizon estimation https://github.com/python-control/python-control/pull/877/files#top
Show all changes 14 commits https://github.com/python-control/python-control/pull/877/files
b0b6121 add pytest --skipslow murrayrm Mar 11, 2023 https://github.com/python-control/python-control/pull/877/commits/b0b612165666c0faa98aa7610ea1ce2f341b5650
823dfbc mark selected optimal, rlocus tests as slow murrayrm Mar 11, 2023 https://github.com/python-control/python-control/pull/877/commits/823dfbc6ed1de5659b43beb3144da0df84cc7567
cf45109 initial implementation of optimal estimation problem murrayrm Mar 6, 2023 https://github.com/python-control/python-control/pull/877/commits/cf4510911f570b5638d2fc909603238bbd8af5c6
bd7ba6d updated documentation + Jupyter notebook murrayrm Mar 6, 2023 https://github.com/python-control/python-control/pull/877/commits/bd7ba6debf030b4b15e89883e515e45a52ee7398
8375127 add standard _process_indices function murrayrm Mar 11, 2023 https://github.com/python-control/python-control/pull/877/commits/83751277a06f5518347042deda76a2f986698468
e165dd5 add {control, disturbance}_indices to create_estimator_iosystem murrayrm Mar 11, 2023 https://github.com/python-control/python-control/pull/877/commits/e165dd5d7d76d995eda401d8f1d0b05ead6090b4
1c1ce0c implement {control, disturbance}_indices in oep murrayrm Mar 13, 2023 https://github.com/python-control/python-control/pull/877/commits/1c1ce0c1b38c2255e7a5c1233225a4e28db96681
ebedf19 regularize *_labels processing across create_*_iosystem murrayrm Mar 13, 2023 https://github.com/python-control/python-control/pull/877/commits/ebedf193fd9c6f9b026d3e2eff9e54bb15f51321
df4508c updated docstrings and docs, trim slow unit tests murrayrm Mar 14, 2023 https://github.com/python-control/python-control/pull/877/commits/df4508c39021da0a82c8ce50da067cafcc844303
039b22d remove pytest --skipslow; use pytest -m "not slow" instead murrayrm Mar 24, 2023 https://github.com/python-control/python-control/pull/877/commits/039b22d29031c17b5a3dc7ae957b78fbd68519e5
9373f8e fix dtime integral cost calculation; trim unit tests for speed murrayrm Mar 25, 2023 https://github.com/python-control/python-control/pull/877/commits/9373f8e2eb8018f4c1fd925f341990f007f1da43
2a42fe8 add benchmarks for optimal estimation murrayrm Mar 26, 2023 https://github.com/python-control/python-control/pull/877/commits/2a42fe86e8b21071c1b422159080bf796b809228
1599f44 Update doc/optimal.rst murrayrm Mar 31, 2023 https://github.com/python-control/python-control/pull/877/commits/1599f44079f26e2a4e346799a5b271dc3e012ea4
a329323 add executed mhe-pvtol.ipynb to fix doctest failure murrayrm Mar 31, 2023 https://github.com/python-control/python-control/pull/877/commits/a3293236528cbb4b533b2b4e243e52f24571060c
Clear filters https://github.com/python-control/python-control/pull/877/files
Please reload this pagehttps://github.com/python-control/python-control/pull/877/files
Please reload this pagehttps://github.com/python-control/python-control/pull/877/files
.gitignore https://github.com/python-control/python-control/pull/877/files#diff-bc37d034bad564583790a46f19d807abfe519c5671395fd494d8cce506c42947
optestim_bench.py https://github.com/python-control/python-control/pull/877/files#diff-be7ff7e070c4dc347cd420c0d4706ef04c05675c138c45cccd21c723dbe4a231
config.py https://github.com/python-control/python-control/pull/877/files#diff-d1ad1d32d49067e21beadf8da713ffdea3d1673aedb13dbbf54028cb7e8e4cb5
iosys.py https://github.com/python-control/python-control/pull/877/files#diff-12b378d96d36c9d59a9fbc5afbc7cc158d153ff7591b4769f8312772e1d74ed1
namedio.py https://github.com/python-control/python-control/pull/877/files#diff-fc961c9d3372a5164c7c49fc94a3039865e70f1076bcf8015f455d358dffaab5
optimal.py https://github.com/python-control/python-control/pull/877/files#diff-19ca2bf58874b6519164f42d62448fdcc1e05efe2b45263f6761f39392cdde01
statefbk.py https://github.com/python-control/python-control/pull/877/files#diff-dbb4a524ae36f7833fa7b5991007098ea0b11b1f8a5d30831c641f5e6d39e0cb
stochsys.py https://github.com/python-control/python-control/pull/877/files#diff-b32ff2216399700e0cc009ce41fe4aec6c0d8156841b29af325025d1fc13254d
conftest.py https://github.com/python-control/python-control/pull/877/files#diff-46cc9b089adc87a3de027b2fed38cb50baf58ec8ac60d6ce9459d7501ba001cb
kwargs_test.py https://github.com/python-control/python-control/pull/877/files#diff-3144c3ea9a838756fe63a094bb84c293d32c5190d9b081cbb2f10926fda2e19e
optimal_test.py https://github.com/python-control/python-control/pull/877/files#diff-bca0c81c34fee75364f4e38c7cc0005a45ecd9fa9a40901c2b846f07945eb5d0
rlocus_test.py https://github.com/python-control/python-control/pull/877/files#diff-14191ee376d7e0c4ef10224e6883edc949e6195f7700198a8599b57cf96fd414
stochsys_test.py https://github.com/python-control/python-control/pull/877/files#diff-1b204ab9f30a01165f405f2a0df7d96ddffd8c9d07ee76e5fb2a4bb567252b82
.gitignore https://github.com/python-control/python-control/pull/877/files#diff-9606febb9446995cc281faed192c4ff75ba93f2ecc485c5c8f2b3893fada0cc7
conf.py https://github.com/python-control/python-control/pull/877/files#diff-e170e9a7d787c21095c6c11bb25f0f1ff0294a42a46d45ba6fb5ed794e457624
examples.rst https://github.com/python-control/python-control/pull/877/files#diff-2a75ce1d5fcc083639c4620bb785827882f0224ccb145a58160a42d248bde9e2
mhe-pvtol.ipynb https://github.com/python-control/python-control/pull/877/files#diff-e0d4911ca69e5184a882fd8c86e2fcd3023b49cd12c29b6629dc76b095a90942
optimal.rst https://github.com/python-control/python-control/pull/877/files#diff-7a587fcc2ce0d45f27f08ebd590bad2db607818b399c646d0e2455ce96d9096e
pvtol.py https://github.com/python-control/python-control/pull/877/files#diff-be8051610fe82d92422fe99b53804ed8204e6915c94833e0a343d6cdfde5da9f
mhe-pvtol.ipynb https://github.com/python-control/python-control/pull/877/files#diff-89ab1465084ded9e55bb47ccd3dada6d04e328dee34e1293236954c37800d464
pvtol-outputfbk.ipynb https://github.com/python-control/python-control/pull/877/files#diff-60ff198434f53a3aae092672edf02d5413562c3087dd8e8bd1c73c0c2938b8cc
pvtol.py https://github.com/python-control/python-control/pull/877/files#diff-6e6f18f0ea20a5b25106071301af494445056ca5240a5b83de13ae7840d8152d
.gitignorehttps://github.com/python-control/python-control/pull/877/files#diff-bc37d034bad564583790a46f19d807abfe519c5671395fd494d8cce506c42947
View file https://github.com/murrayrm/python-control/blob/a3293236528cbb4b533b2b4e243e52f24571060c/.gitignore
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/python-control/python-control/pull/877/{{ revealButtonHref }}
https://github.com/python-control/python-control/pull/877/files#diff-bc37d034bad564583790a46f19d807abfe519c5671395fd494d8cce506c42947
benchmarks/optestim_bench.pyhttps://github.com/python-control/python-control/pull/877/files#diff-be7ff7e070c4dc347cd420c0d4706ef04c05675c138c45cccd21c723dbe4a231
View file https://github.com/murrayrm/python-control/blob/a3293236528cbb4b533b2b4e243e52f24571060c/benchmarks/optestim_bench.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/python-control/python-control/pull/877/{{ revealButtonHref }}
control/config.pyhttps://github.com/python-control/python-control/pull/877/files#diff-d1ad1d32d49067e21beadf8da713ffdea3d1673aedb13dbbf54028cb7e8e4cb5
View file https://github.com/murrayrm/python-control/blob/a3293236528cbb4b533b2b4e243e52f24571060c/control/config.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/python-control/python-control/pull/877/{{ revealButtonHref }}
https://github.com/python-control/python-control/pull/877/files#diff-d1ad1d32d49067e21beadf8da713ffdea3d1673aedb13dbbf54028cb7e8e4cb5
https://github.com/python-control/python-control/pull/877/files#diff-d1ad1d32d49067e21beadf8da713ffdea3d1673aedb13dbbf54028cb7e8e4cb5
https://github.com/python-control/python-control/pull/877/files#diff-d1ad1d32d49067e21beadf8da713ffdea3d1673aedb13dbbf54028cb7e8e4cb5
control/iosys.pyhttps://github.com/python-control/python-control/pull/877/files#diff-12b378d96d36c9d59a9fbc5afbc7cc158d153ff7591b4769f8312772e1d74ed1
View file https://github.com/murrayrm/python-control/blob/a3293236528cbb4b533b2b4e243e52f24571060c/control/iosys.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/python-control/python-control/pull/877/{{ revealButtonHref }}
https://github.com/python-control/python-control/pull/877/files#diff-12b378d96d36c9d59a9fbc5afbc7cc158d153ff7591b4769f8312772e1d74ed1
https://github.com/python-control/python-control/pull/877/files#diff-12b378d96d36c9d59a9fbc5afbc7cc158d153ff7591b4769f8312772e1d74ed1
control/namedio.pyhttps://github.com/python-control/python-control/pull/877/files#diff-fc961c9d3372a5164c7c49fc94a3039865e70f1076bcf8015f455d358dffaab5
View file https://github.com/murrayrm/python-control/blob/a3293236528cbb4b533b2b4e243e52f24571060c/control/namedio.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/python-control/python-control/pull/877/{{ revealButtonHref }}
https://github.com/python-control/python-control/pull/877/files#diff-fc961c9d3372a5164c7c49fc94a3039865e70f1076bcf8015f455d358dffaab5
https://github.com/python-control/python-control/pull/877/files#diff-fc961c9d3372a5164c7c49fc94a3039865e70f1076bcf8015f455d358dffaab5
https://github.com/python-control/python-control/pull/877/files#diff-fc961c9d3372a5164c7c49fc94a3039865e70f1076bcf8015f455d358dffaab5
Please reload this pagehttps://github.com/python-control/python-control/pull/877/files
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.