在模拟跟踪最大价值

10视图(30天)
Abed Alnaif
Abed Alnaif 2023年1月26日
评论道: Abed Alnaif2023年1月27日
你好,
我想跟踪在模拟变量的最大价值。我现在这样做使用事件,如下:
mdl.addevent (“> maxA”,{“maxA =“})
然而,这不是工作。我相信这不是工作的原因是只事件最终引发上升边缘,因此maxA不跟踪作为一个逐渐上升。
有办法完成跟踪在一个模拟变量的最大值?因为我使用maxA模拟期间,我不能计算因果(即。,不能使用一个可观察到的)。
谢谢你!
在床上

接受的答案

杰里米Huard
杰里米Huard 2023年1月27日
编辑:杰里米Huard 2023年1月27日
嗨,在床上,
最简单的方法来跟踪一个物种在一个模拟的最大可能是使用一个外部函数(见附件)与一个持久变量存储当前最大的值:
函数= getmax(时间、年代)
持续的马克斯
如果时间= = 0 | | isempty (max)
max =无穷;
结束
max = max (max, s);
=最大;
结束
然后,您可以使用此函数在一个重复的任务:
%建立模型。
m1 = sbiomodel (“测试”);
%添加舱
c1 = addcompartment (m1,“薪酬”1);
%添加物种间。
addspecies (c1,“年代”);
%规则添加到模型中。
addrule (m1,' s =罪(时间* 2 * pi + 2) + 2”,“repeatedAssignment”);
%添加虚拟歌唱模型
addspecies (c1,“s2”10);
addrule (m1,“s2 = s2 ',“速度”);
%将参数添加到模型中。
addparameter (m1,“马克斯”、常数= false);
addrule (m1,' max = getmax(时间、年代),“repeatedAssignment”);
%修改设置
c = getconfigset (m1);
cs.SolverOptions。MaxStep = 0.01;
%模拟
simfun = createSimFunction (m1, {}, {“马克斯”,“年代”},[][],AutoAccelerate = false);
stopTime = 1.5;
结果= simfun ([], stopTime);
sbioplot(结果);
我希望这可以帮助。
最好的问候,
杰里米
3评论
Abed Alnaif
Abed Alnaif 2023年1月27日
谢谢你的这些见解亚瑟。这些道理,我没有考虑过这些问题。也许最好的方法是设计一个小型歌唱系统将对Cmax记忆,至少约,尽管没有立即想到。

登录置评。

更多的答案(0)

社区

更多的答案SimBiology社区

类别

找到更多的在扫描参数范围帮助中心文件交换

s manbetx 845


释放

R2021b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!