非线性一阶偏微分方程(HJB)的数值解

计算科学 pde 有限差分 非线性方程 数字 最优控制
2021-12-14 16:08:03

我正在尝试使用 Python 中的 Hamilton-Jacobi-Bellman 方程来解决一个简单的最优控制问题。这被证明是相当困难的,因为我最终不得不解决以下问题:

Jt(Jx)2+xJx=0
我相信这是一个非线性的一阶 PDE。作为 HJB,我们在终端时间获得了边界条件。
BC:J(xf)=14xf2
我自己尝试了这个问题,方法是简单地将中心欧拉近似用于Jx并使用后向差异Jt. 然后我通过使Jij1公式的主题。
Jij1=Jij+k4h2[Ji+1jJi1j]2+kh[Ji+1jJi1j]xi
在方案变得非常不稳定之前,这只适用于一些计算。

请您帮助指导我如何解决这个问题。我不太清楚我的方法是否正确。请建议资源或帮助我制定可行的方案。

1个回答

我自己还没有解 HJB 方程,但是根据我对其他 PDE 的经验,我可以想到两件事你可以尝试。

  1. 使用“逆风近似Jx,而不是中心差分方案。xJx等式中的术语表明,随着时间的推移,信息在系统中从左到右流动(假设x>0)。因此,更有意义的是构建Jx近似使用Ji和它左边的节点,因为那是信息的来源。最简单的近似是:

    Jx1h(JiJi1)
    但是,我不确定这个论点如何适用于非线性(Jx2)学期。该术语上的负号表示从右到左的方向,因此您可能可以尝试使用右偏近似Jx那里。

  2. 使用隐式时间推进方案,而不是显式方案。明确的时间推进方案,例如您正在使用的方案,具有严重限制您可以采取的时间步长大小的稳定性条件。事实上,如果您将时间步长减小一些较大的因素,您的方法很有可能会起作用(或存活更长时间)。但是对于许多实际问题,这种时间步长约束实在是太严格了,因为它增加了获得最终解决方案所需的成本/时间。

    相反,对于许多问题,隐式方法是无条件稳定的,这意味着对于您选择的任何时间步长,解决方案都是有界的。然而,没有免费的午餐。额外的稳定性是以必须在每个时间步求解方程组为代价的。这是因为所有解的未知数 (Ji's) 参与空间离散化现在在时间进行评估j1, 而不是在时间j. 为了更清楚,这是使用隐式时间推进方法的离散方程的样子,

    Jij1Jij=k4h2[Ji+1j1Ji1j1]2+k2h[Ji+1j1Ji1j1]xi

    请注意,右侧的所有术语都是在 time 评估的(j1),所以你的解决方案未知Ji1j1,Jij1,Ji+1j1..等式出现在等式的两边上面的方程代表了一个非线性方程组,需要在每个时间步求解,可能使用类似于牛顿法的方法

PS我认为您在等式的最后一项中缺少2倍。中心差异为xJx需要除以2h.