我有这类问题(ODE 约束优化)要解决: 是模拟,其中是状态变量并且是旨在优化的参数; 是目标函数(衡量优点)。
我读到有些人通过离散 ODE 来处理这个问题,但似乎有另一种称为“伴随方法”的方法效果更好。有人知道这方面的任何软件包或有代码要分享吗?
我有这类问题(ODE 约束优化)要解决: 是模拟,其中是状态变量并且是旨在优化的参数; 是目标函数(衡量优点)。
我读到有些人通过离散 ODE 来处理这个问题,但似乎有另一种称为“伴随方法”的方法效果更好。有人知道这方面的任何软件包或有代码要分享吗?
伴随方法是找到 PDE 解关于参数的导数的特殊方法. 在伴随方法中,您最终解决了第二个 PDE 边值问题(原始问题的伴随问题)以找到这些导数。然后你可以得到一个梯度关于通过应用链式法则。
这可以与为参数的扰动值求解 PDE 边界值问题然后通过有限差分逼近计算导数的蛮力替代方案形成对比。如果向量已参数,那么有限差分需要您求解原始 PDE次,而伴随方法只需要原始 PDE 的一种解和它的伴随方法的一种解。因此,伴随方法可以大大提高效率。
请注意,在实践中,原始 PDE 和伴随方程都必须通过某种有限差分或有限元方法离散化。
理论上,您可以通过找到伴随方程,然后分别离散原始 PDE 及其伴随问题来实现伴随方法。在实践中,找到原始 PDE 边界值问题的离散版本的伴随项通常会更好地提高数值精度。
一些自动微分 (AD) 工具支持同时开发 PDE 边值问题及其伴随问题的求解器。正确的工具将在很大程度上取决于您的计算环境(编程语言、并行性等)