anylogic - 系统动力学仿真 - 将 Stella 转换为 AnyLogic 语法
问题描述
我在 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中的等价物应该是:
cause>0 && uniform(0,100) < probability*DT ? 1 : 0
您需要创建一个名为 DT 的变量,该变量等于您在模型配置中选择的固定时间步长,或者您认为应该足够的值。
由于任何逻辑取决于您运行模型的方式,不认为固定时间步长是固定的,因此您需要自己定义 DT。
无论如何,您可能会得到不完全等于 stella 的结果,因为时间步长不一定相同......但也许足够相似应该让您满意
推荐阅读
- c# - 打开 Skype for business 而不是团队 CALLTO 协议
- javascript - 如何从 HTML、CSS、Js 和 Python 文件创建 APK 文件?
- xamarin - 是否可以在 Shell 运行时在单个菜单项中添加子菜单?
- reactjs - 在 laravel 8 中使用 react.js 发布数据时,有没有办法修复内部服务器错误
- swift - 在 SwiftUI 中在父视图和子视图之间共享状态变量的正确方法是什么
- r - 我的闪亮应用程序在我调用它时删除了我的 Markdown 的内容并且不保存为 pdf
- webpack - 如何在与 webpack 捆绑时将 SASS 变量转换为原生 CSS 变量?
- wiremock - 如何发送由标头值驱动的wiremock存根响应
- android - 发布新更新时未在 Play 商店中获取应用更新
- node.js - 加载资源失败:服务器响应状态为 404(未找到) ENOENT:没有这样的文件或目录,stat '/client/build/index.html'