使用assimulo ida(来自日)的敏感性

问题描述 投票:1回答:1

我正在尝试使用ida和assimulo来解决感性问题。解决没有敏感性的问题工作正常,但现在我想在最后时刻,初始值和控制(在我的方程中使用的参数)中使用敏感性。

我只在assimulo页面上找到了一个例子(这只是初始敏感度),我不理解它。

有人可以帮助我并解释如何实施不同的敏感性吗?

非常感谢

python solver differential-equations equation-solving
1个回答
0
投票

我使用CVode求解器遵循不连续性的例子(qazxsw poi),这意味着我将子类化为“显式问题”类。

为了整合我的ode系统(有不连续性),我确实覆盖了方法'rhs',它编码我的ode系统。更具体地说,我使用了以下签名:https://jmodelica.org/assimulo/_modules/assimulo/examples/cvode_with_disc.html#run_example

然后,为了获得参数灵敏度,我只是修改了这个def rhs(self, t, y, sw)的签名,注意额外的参数def rhs(self, t, y, sw, p)!我还需要为p分配参数值,如示例中的初始值赋值p0所示。它就像那样容易。

请注意,计算参数灵敏度可能需要更多的计算时间(我发现了5到10倍,但我的ode系统通常不那么大)。

不幸的是,灵敏度是使用有限差异(前向或中央)计算的。根据我的理解,SUNDIALS求解器能够进行最先进的算法差异,以获得灵敏度方程式,以便与原始颂歌一起解决它们。很想在下一个版本中看到这个:-)

© www.soinside.com 2019 - 2024. All rights reserved.