【问题标题】:System Dynamics simulation - Translating Stella into AnyLogic syntax系统动力学仿真 - 将 Stella 转换为 AnyLogic 语法
【发布时间】: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

【问题讨论】:

    标签: anylogic


    【解决方案1】:

    anylogic 中的等价物应该是:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-04-13
      • 2019-11-12
      • 2021-08-31
      • 2018-08-12
      • 2011-09-03
      • 1970-01-01
      • 2022-01-21
      • 2020-04-18
      • 1970-01-01
      相关资源
      最近更新 更多