René's URL Explorer Experiment


Title: Add collocation method for optimal control problems by murrayrm · Pull Request #799 · python-control/python-control · GitHub

Open Graph Title: Add collocation method for optimal control problems by murrayrm · Pull Request #799 · python-control/python-control

X Title: Add collocation method for optimal control problems by murrayrm · Pull Request #799 · python-control/python-control

Description: This PR changes the default way that optimal control problems are solved from using a shooting method to using collocation. This results in more robust (and faster) solutions, especially for trajectory generation for unstable or marginally stable systems (where shooting is very sensitive to small parameter variations). The following new functionality is included: The solve_ocp() function and OptimalControlProblem class have new parameters trajectory_method that be set to either shooting (default for discrete time systems) or collocation (default for continuous time systems). When collocation is used, the initial_guess parameter can either be an input trajectory (as before) or a tuple consisting of a state trajectory and an input trajectory. Constraints can now be specified in the form LinearConstraint(A, lb, ub) or NonlinearConstraint(fun, lb, ub) instead of the previous forms (LinearConstraint, A, lb, ub) and (NonlinearConstraint, fun, lb, ub). The legacy format is still supported. The documentation (docstrings and manual) have been updated to reflect the new functionality. New unit tests are included that tease out the functionality of the various possibilities. Benchmarks comparing shooting and collocation have been added. This PR also addresses issue #782 (see also discussion in #781) which were showing some of the weakness of the shooting methodology.

Open Graph Description: This PR changes the default way that optimal control problems are solved from using a shooting method to using collocation. This results in more robust (and faster) solutions, especially for traje...

X Description: This PR changes the default way that optimal control problems are solved from using a shooting method to using collocation. This results in more robust (and faster) solutions, especially for traje...

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

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:cde239cf-bbc9-4995-e543-e0051b249618
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-id9D5C:A144A:1E7EE51:2B587B2:697A53CE
html-safe-nonce7c9af482cd592c0ee226efa4b2eba4b2cc5c1da2e3de22cb3439f4e98c50d059
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5RDVDOkExNDRBOjFFN0VFNTE6MkI1ODdCMjo2OTdBNTNDRSIsInZpc2l0b3JfaWQiOiI3OTMxNDA3NTUxOTk0NDE4MTI2IiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0=
visitor-hmacc344c95c5c18fb98eec83f77dc0e6cc988d4e71e856fb947972d2bd65c2fa614
hovercard-subject-tagpull_request:1136351826
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/799/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 changes the default way that optimal control problems are solved from using a shooting method to using collocation. This results in more robust (and faster) solutions, especially for traje...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
None6675d94efd2a33cdba9e6e611f931ac7eaa988d8fef14b7a663cc012c4501b42
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
releaseca995a95b56cf8bd27cc89fcea65d2ad787f53c1
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/python-control/python-control/pull/799/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%2F799%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%2F799%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/799/files
Reloadhttps://github.com/python-control/python-control/pull/799/files
Reloadhttps://github.com/python-control/python-control/pull/799/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:fix_horizon-19Nov2022https://github.com/murrayrm/python-control/tree/fix_horizon-19Nov2022
Conversation 3 https://github.com/python-control/python-control/pull/799
Commits 6 https://github.com/python-control/python-control/pull/799/commits
Checks 0 https://github.com/python-control/python-control/pull/799/checks
Files changed https://github.com/python-control/python-control/pull/799/files
Please reload this pagehttps://github.com/python-control/python-control/pull/799/files
Add collocation method for optimal control problems https://github.com/python-control/python-control/pull/799/files#top
Show all changes 6 commits https://github.com/python-control/python-control/pull/799/files
d9ec3ec add trajectory_method='shooting' murrayrm Nov 24, 2022 https://github.com/python-control/python-control/pull/799/commits/d9ec3ec5bb4d3963bd8b6c502ce36baed7cd1760
ce5e67a add trajectory_method='collocation' murrayrm Nov 24, 2022 https://github.com/python-control/python-control/pull/799/commits/ce5e67ac10c9363fb8674258dddc2c9120f17fed
8256fa0 set default trajectory_methood for ctime systems to collocation murrayrm Nov 25, 2022 https://github.com/python-control/python-control/pull/799/commits/8256fa05eca508aa75b346c7bb53b91472549c3c
d121102 updated examples + code cleanup murrayrm Nov 25, 2022 https://github.com/python-control/python-control/pull/799/commits/d121102cef6a9a8f44a85151ff852fa4f08fe83d
e0f71f4 update documentation + allow constraints in scipy.optimize form murrayrm Nov 26, 2022 https://github.com/python-control/python-control/pull/799/commits/e0f71f4c743cc60a8076546a187a96ad0dd2c55d
dd5e42d add benchmarks for shooting vs collocation murrayrm Nov 27, 2022 https://github.com/python-control/python-control/pull/799/commits/dd5e42d16e81e5a1e30899f8bf277ee85282bf91
Clear filters https://github.com/python-control/python-control/pull/799/files
Please reload this pagehttps://github.com/python-control/python-control/pull/799/files
Please reload this pagehttps://github.com/python-control/python-control/pull/799/files
optimal_bench.py https://github.com/python-control/python-control/pull/799/files#diff-6f5124f16143cce65ee38232c84268adec7f3929cae87765eaaa7176f3ecad4a
optimal.py https://github.com/python-control/python-control/pull/799/files#diff-19ca2bf58874b6519164f42d62448fdcc1e05efe2b45263f6761f39392cdde01
optimal_test.py https://github.com/python-control/python-control/pull/799/files#diff-bca0c81c34fee75364f4e38c7cc0005a45ecd9fa9a40901c2b846f07945eb5d0
optimal.rst https://github.com/python-control/python-control/pull/799/files#diff-7a587fcc2ce0d45f27f08ebd590bad2db607818b399c646d0e2455ce96d9096e
steering-optimal.png https://github.com/python-control/python-control/pull/799/files#diff-bbd943650d2701a97546b40a0db32d9e25214c42b79e03c02f69a29ad3c69cdc
steering-optimal.py https://github.com/python-control/python-control/pull/799/files#diff-42a66769802bd9ec9593531800662a3bd5faf0962f113d6105ab81ad21791df8
benchmarks/optimal_bench.pyhttps://github.com/python-control/python-control/pull/799/files#diff-6f5124f16143cce65ee38232c84268adec7f3929cae87765eaaa7176f3ecad4a
View file https://github.com/murrayrm/python-control/blob/dd5e42d16e81e5a1e30899f8bf277ee85282bf91/benchmarks/optimal_bench.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/python-control/python-control/pull/799/{{ revealButtonHref }}
https://github.com/python-control/python-control/pull/799/files#diff-6f5124f16143cce65ee38232c84268adec7f3929cae87765eaaa7176f3ecad4a
https://github.com/python-control/python-control/pull/799/files#diff-6f5124f16143cce65ee38232c84268adec7f3929cae87765eaaa7176f3ecad4a
https://github.com/python-control/python-control/pull/799/files#diff-6f5124f16143cce65ee38232c84268adec7f3929cae87765eaaa7176f3ecad4a
https://github.com/python-control/python-control/pull/799/files#diff-6f5124f16143cce65ee38232c84268adec7f3929cae87765eaaa7176f3ecad4a
https://github.com/python-control/python-control/pull/799/files#diff-6f5124f16143cce65ee38232c84268adec7f3929cae87765eaaa7176f3ecad4a
https://github.com/python-control/python-control/pull/799/files#diff-6f5124f16143cce65ee38232c84268adec7f3929cae87765eaaa7176f3ecad4a
https://github.com/python-control/python-control/pull/799/files#diff-6f5124f16143cce65ee38232c84268adec7f3929cae87765eaaa7176f3ecad4a
https://github.com/python-control/python-control/pull/799/files#diff-6f5124f16143cce65ee38232c84268adec7f3929cae87765eaaa7176f3ecad4a
https://github.com/python-control/python-control/pull/799/files#diff-6f5124f16143cce65ee38232c84268adec7f3929cae87765eaaa7176f3ecad4a
Please reload this pagehttps://github.com/python-control/python-control/pull/799/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.