我的问题的实质如下:我有两个ODE的系统。一个具有初始值约束,另一个具有最终值约束。可以将其视为对某些变量具有初始值约束而对其他变量具有最终值约束的单个系统。
详细信息如下:
我正在尝试使用连续时间有限水平LQR控制器来驱动线性动力学系统。我想继续使用Python生态系统。
该系统是在形式,受
LQR解决方案生成矩阵,使得在线性的最优控制输入u(t)为u (t )= K (t )x (t )。x (t )
其中
和是解决一个连续时间黎卡提微分方程(请注意,此P (吨)是一个矩阵)
经受P(吨˚F)=Q
, B, x 0, Q, Q f, R, t f。
用英语:您有一些以状态开始的动力系统。LQR控制器生成一个反馈矩阵,以在时间0和t f之间使用(t f通常称为问题的时间水平)
请注意,两个ODE仅在一个方向上耦合的解不取决于x (t )。因此,解决该问题的一种方法是反转Riccati方程,以将最终值问题转换为初始值问题,并使用标准ODE积分器找到时间0和t f之间的数值解。然后,我可以使用此数值解来找到x (t )。这与我有关,因为x(t)的数值ODE求解器不一定会与对$ P(t)的数值解中的时间同时采样ODE。也许有一些聪明的方法可以执行此操作。
我预计解决问题的另一种方法是一起解决系统问题,但是我不知道如何处理初始值约束和最终值约束的混合问题。这些问题在计算上需要解决很多吗?我可以在SciPy / Python中做到吗?