我正在尝试使用ida和assimulo来解决敏感性问题。在没有敏感性的情况下解决问题效果很好,但现在我想在finaltime、初始值和控件(我的等式中使用的参数)中使用敏感性。
我只在assimulo页面上找到了一个例子(这只是初始敏感度),我没有正确地理解它。
有人能帮我解释一下如何实现不同的敏感度吗?
非常感谢
发布于 2019-05-02 04:19:36
我按照不连续(https://jmodelica.org/assimulo/_modules/assimulo/examples/cvode_with_disc.html#run_example)的例子使用了CVode求解器,这意味着我继承了'Explicit_Problem‘类。
为了集成我的ode系统(具有不连续性),我确实覆盖了'rhs‘方法,它编码了我的ode系统。更具体地说,我使用了以下签名:def rhs(self, t, y, sw)。
然后,为了获得参数敏感度,我像这样修改了签名,注意额外的参数p!我还需要将参数值赋给p0,如示例中的初始值赋值y0所示。事情就是这么简单。
请注意,计算参数敏感度也可能需要相当多的计算时间(我发现的计算时间是原来的5到10倍,但我的ode系统通常不是那么大)。
不幸的是,灵敏度是使用有限差分(向前或中心)计算的。据我所知,日规解算器能够进行最先进的算法微分,以获得求解它们的灵敏度方程和原始的常微分方程。我希望在下一个版本中看到这一点:-)
https://stackoverflow.com/questions/15813892
复制相似问题