>  기사  >  백엔드 개발  >  시간 최적 제어 예 GEKKO

시간 최적 제어 예 GEKKO

WBOY
WBOY앞으로
2024-02-10 20:54:031146검색

时间最优控制示例 GEKKO

질문 내용

Gekko에서 시간 최적 제어 문제를 구현하려고 합니다. 특히 이 짧은 코드 조각을 복사했습니다. 실용성을 위해 여기에도 보고되었습니다:

으아악

그대로라면 잘 작동하지만, 속도의 최종 값에 대한 제약 조건을 제거하고 싶을 때입니다.

주석을 달면 m.fix_final(velocity, 0) 行,结果不会改变。无论如何,它似乎假设最终速度应该为零。此外,如果我将最终速度从零更改为任何其他数字,我会从 gekko 收到错误: exception: @error: solution not found.

해결책은 쉽게 찾을 수 있어야 합니다. 특히 최종 속도에 아무런 제약이 가해지지 않은 경우 최적의 제어는 시간 내내 계속 가속()하는 것입니다.

어떤 도움이라도 대단히 감사하겠습니다! :)


정답


최종 제약 조건을 m.fix_final(velocity, 0)m.fix_final(position, 300)에서

로 변경하세요. 으아악

이것은 마지막 노드에 부등식 제약 조건을 적용하여 position>=300,但它也可以是等式约束。如果不可行的解决方案阻止求解器实现最终条件,我们有时也会使用软约束,例如 m.minimize(last*(position-300)**2) 。相反,它会尝试使解决方案尽可能接近最终约束。当使用 m.fix_final() 최종 값이 고정되면 해당 변수가 더 이상 계산되지 않으므로 도함수도 0으로 고정됩니다. 이는 여기에 설명된 대로 gekko의 알려진 제한 사항입니다.

위 내용은 시간 최적 제어 예 GEKKO의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제