如何在Python中执行伴随灵敏度(最好通过CVODE)



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

为了实现这一点,Julia(请参阅此处(和SUNDIALS的CVODES中都有许多不错的包,但后者显然有一个为python制作的包装器,根据该链接,它不包括灵敏度分析功能。此外,我已经研究了SALib的敏感性分析,但据我所知,这指的是其他类型的"敏感性分析",因此不包括伴随甚至前向敏感性分析(如果我在这方面错了,请纠正我(。

因此,我的问题是,python中是否存在具有灵敏度分析功能的CVODES版本,或者是否有其他包可以用于执行伴随灵敏度分析?

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

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

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

相关内容

  • 没有找到相关文章

最新更新