系统动力学仿真 - 将 Stella 转换为 AnyLogic 语法

Posted

技术标签:

【中文标题】系统动力学仿真 - 将 Stella 转换为 AnyLogic 语法【英文标题】:System Dynamics simulation - Translating Stella into AnyLogic syntax 【发布时间】:2021-09-15 01:57:48 【问题描述】:

我在 stella 中建模了以下逻辑:

(IF "cause" > 0  THEN MONTECARLO("probabilityofconsequence") ELSE 0

但我在 AnyLogic 上没有得到正确的语法:

(cause > 0) ? (uniform() < probabilityofconsequence) ? 1 : 0 : 0 

有什么想法吗?

免责声明: stella 所做的是使用 Montecarlo 函数根据提供的概率从伯努利分布中获得一系列零和一。概率是每个 DT 发生事件的百分比概率除以 DT(它也相似,但与每单位时间事件的百分比概率不同)。概率值可以是变量或常数,但应计算为 0 到 100/DT 之间的数字(超出范围的数字将设置为 0 或 100/DT)。单位时间内生成的数字流求和的期望值等于概率/100。

MONTECARLO 等价于如下逻辑:

IF (UNIFORM(0,100,<seed>) < probability*DT THEN 1 ELSE 0

【问题讨论】:

【参考方案1】:

anylogic 中的等价物应该是:

cause>0 && uniform(0,100) < probability*DT ? 1 : 0

您需要创建一个名为 DT 的变量,该变量等于您在模型配置中选择的固定时间步长,或者您认为应该足够的值。

由于任何逻辑取决于您运行模型的方式,不认为固定时间步长是固定的,您需要自己定义 DT。

无论如何,您可能会得到不完全等于 stella 的结果,因为时间步长不一定相同......但可能足够相似应该让您满意

【讨论】:

以上是关于系统动力学仿真 - 将 Stella 转换为 AnyLogic 语法的主要内容,如果未能解决你的问题,请参考以下文章

齿轮动力学仿真

基于Thermolib的综合能源仿真系统仿真解决方案

基于Thermolib的综合能源仿真系统仿真解决方案

将整数颜色值转换为 RGB

动力学基于matlab GUI汽车分析仿真系统含Matlab源码 1112期

无人旋翼飞行器自适应飞行控制系统设计与仿真