2024-06-07 12:49:42 发布
网友
我想用艾达和阿西姆洛一起解决情感问题。 解决这个问题没有敏感性是很好的,但是现在我想在最后时刻、初始值和控制(在我的方程中使用的参数)中使用灵敏度来解决问题。在
我在assimulo页面上只找到了一个例子(这只是关于初始敏感度的),我不能正确理解它。在
有人能帮我解释一下不同的敏感性需要如何实施吗?在
非常感谢
我使用cvodesolver遵循了关于不连续性(https://jmodelica.org/assimulo/_modules/assimulo/examples/cvode_with_disc.html#run_example)的示例,这意味着我将“显式问题”类划分为子类。在
为了集成我的ode系统(它有不连续性),我重写了方法'rhs',它对我的ode系统进行编码。更具体地说,我使用了以下签名:def rhs(self, t, y, sw)。在
def rhs(self, t, y, sw)
然后,为了得到参数敏感度,我只修改了签名如下def rhs(self, t, y, sw, p),注意附加参数p!我还需要为p0分配参数值,如示例中初始值赋值y0所示。就这么简单。在
def rhs(self, t, y, sw, p)
p
p0
y0
请注意,计算参数灵敏度也可能需要相当多的计算时间(我发现多了5到10倍,但我的ode系统通常不是那么大)。在
不幸的是,灵敏度是用有限差分(正向或中心)计算的。据我所知,日晷解算器能够进行最先进的算法微分,从而得到灵敏度方程,并与原始的ode一起求解。希望在下一个版本中看到这个:-)
我使用cvodesolver遵循了关于不连续性(https://jmodelica.org/assimulo/_modules/assimulo/examples/cvode_with_disc.html#run_example)的示例,这意味着我将“显式问题”类划分为子类。在
为了集成我的ode系统(它有不连续性),我重写了方法'rhs',它对我的ode系统进行编码。更具体地说,我使用了以下签名:
def rhs(self, t, y, sw)
。在然后,为了得到参数敏感度,我只修改了签名如下
def rhs(self, t, y, sw, p)
,注意附加参数p
!我还需要为p0
分配参数值,如示例中初始值赋值y0
所示。就这么简单。在请注意,计算参数灵敏度也可能需要相当多的计算时间(我发现多了5到10倍,但我的ode系统通常不是那么大)。在
不幸的是,灵敏度是用有限差分(正向或中心)计算的。据我所知,日晷解算器能够进行最先进的算法微分,从而得到灵敏度方程,并与原始的ode一起求解。希望在下一个版本中看到这个:-)
相关问题 更多 >
编程相关推荐