1

我想在 python 中实现伴随灵敏度分析,以确定我的目标函数相对于某些参数的梯度。具体来说,目标函数取决于微分方程的解,而微分方程的解又取决于我正在寻找的最优参数。

要执行此操作,Julia 中有许多好的包(请参见此处)以及 SUNDIALS 的 CVODES,但是后者显然具有为 python 制作的包装器,不包括根据此链接的敏感性分析功能。此外,我已经研究过 SALib进行敏感性分析,但据我了解,这指的是其他类型的“敏感性分析”,因此不包括伴随甚至前向敏感性分析(如果我错了,请纠正我) .

因此,我的问题是,python 中是否存在具有敏感性分析功能的 CVODES 版本,或者是否有任何其他软件包可以用来执行伴随敏感性分析?

4

2 回答 2

2

您可以使用 pyjulia 从 Python 轻松调用 Julia 代码/包。 https://github.com/JuliaPy/pyjulia

于 2020-12-15T12:08:01.420 回答
0

您可以尝试Assimulo,它是 SUNDIALS 套件的 Python 包装器。我已经使用它几年了,它运行得非常稳健。到目前为止,我已经使用 CVODE(少于 20 个状态,少于 10 个参数)对具有中等数量状态/参数的 ODE 系统进行了前向灵敏度分析。它在鲁棒性(可以处理刚性问题,并且还支持各种稀疏问题的线性求解器)和速度方面工作得很好,并且还通过 IDA 支持 DAE。

我使用 conda 安装了 Assimulo,它处理所有依赖树(包括最新版本中的 SUNDIALS)。最后,我不知道是否可以使用 Assimulo 进行伴随敏感性分析。如果你发现了什么,让我们都知道。

于 2021-02-05T19:39:32.337 回答