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 중국어 웹사이트의 기타 관련 기사를 참조하세요!