问题标签 [systemdynamics]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - AnyLogic - System Dynamics : how to track stock values correctly?
In the basic first order positive feedback model:
(one stock, one flow to it and a parameter gives the flow rate).
There is a stock
with initial value of 100
, a parameter
with the value of 0.1
and the formula of the flow
is:
(
flow = stock * paremeter
)
Model time units are "years"
and we want to run the simulation for 100 years
.
The value of the stock
over the years will be 100
, 110
, 121
, 133.1
, 146.41
...
But the values of the stock
over time on the simulation screen (or when I put it into a Time Plot or Data set) are 110.517
, 122.139
, 134.984
, 149.179
.
Why are the values of the
stock
over time are different than the expected ones above?How can I track the value of the stock over years correctly?
r - 有没有办法在 R 的 desolve 包中使用 ODE 求解器来实现管道(离散)延迟?
作为尝试使用 DeSolve 包在 R 中实现系统动力学模型的一部分,我想知道是否有办法在我的模型中构建管道(离散延迟)。
管道延迟的一个示例可能是配送过程,例如,亚马逊包裹在时间 X 离开仓库并需要 2 天才能到达我手中,即整个包裹在 2 天的固定持续时间后到达我手中。
我知道更流行的模拟包,如 Vensim 等具有固定功能(延迟固定等)来处理这个问题,但我正在寻找如何在 R 中实现它的指导(包括底层方程)能够这样做)。
如果我们使用我正在尝试做的那种事情的简单示例 - 我们有一个模型:
A. 一个外生变量 1. 期望增长率 = 10%
B. 两只股票:
延迟
- 在任何给定期间,流入该股票的资金为资产股票价值的 10%(见下文)
- 流出应该是两个时期前的流入
资产
- 流入这个股票应该是从延迟股票流出
- 该股票没有流出/衰减
基本上我要说的是 - 如果我在时间 t=0 对资产进行投资,这应该在 t=2 结束时的 3 个时间段后实现并反映在资产的价值中。
你会在我的 R 代码中看到我卡在我必须定义延迟输出方程的那一行 - 从数学上讲,为了实现所需的延迟,我需要从一段时间前的投资中减去当前的延迟值 -但我不知道如何调用这些滞后值 - 我已经研究过使用 dede 而不是 ode 但不确定这是否符合我的需要。
我也知道我可以通过在上述等式中将延迟值除以 3 来实现一阶延迟,但这意味着我在当前时间立即获得了投资收益的三分之一,这不是我想要的效果寻求实现。
我对延迟库存流出的预期结果如下。请注意,流入是由实际模型构成的,因为在每个时期内,这些值都会波动:
..等等。
感谢您花时间阅读,如果问题已经在其他地方提出过,如果您能指出我正确的方向,我将不胜感激,因为我无法找到答案。
systemdynamics - Vensim 中不同的时间步长没有相同的结果,如何解决?
我正在 Vensim 中制作一个简单的模型。该模型由一个存量和一个流出变量组成:
库存:方程= INTEG(-“流出”),初始值:2.5
流出:方程式 = IF THEN ELSE(stock>0, MIN(stock, 1), 0)
模拟运行 5 年(初始时间 = 0,最终时间 = 5),时间单位为年。我每年需要进行 64 次模拟,因此时间步长设置为“0.015625”。我用这个时间步得到的结果是不合逻辑的,也不是我所期望的,但是通过设置“时间步= 1”可以获得所需的结果。
如前所述,模拟每年需要运行 64 次,时间步长 = 1 的模拟对我没有用。我怎么解决这个问题?提前致谢。
function - 为游客恢复公园容量的功能?
netlogo - 在建模系统动力学中,我们什么时候使用股票,什么时候只使用变量?
系统动力学模型由存量(表示感兴趣系统的连续量)、流量(控制存量的流入和流出)和变量(可能是常数或也随存量值变化)组成.
我仍然很难掌握何时使用股票以及何时使用变量。例如,取自CLExchange 的 YT 视频的这个模型将“灰姑娘的幸福”显示为一个可以变化的股票,而仙女教母的关注(随着灰姑娘的幸福降低而上升)作为影响流向 CH 的变量。我也可能将教母的担忧建模为一个存量变量。然而,我发现大多数关于 SD 的论文都很少有股票和更多的影响变量。有没有这方面的指导方针?
免责声明:根据NetLogo Systems Dynamics Modeler for Agents 的说法,我最熟悉 NetLogo 的系统动力学建模器,它非常有限。
anylogic - 在 Anylogic 中灵活更改模拟持续时间
我有一个只有一个代理的系统动力学模型。我可以设置模拟的持续时间,对于我的情况,一个示例值为 120 个月。如果我想尝试不同的持续时间,例如 24 或 240 个月,我该怎么办?在实验的“模型时间”属性中更改它似乎很麻烦,因为您每次都必须停止实验。
对于其他模型输入,我在开始屏幕上创建了滑块并将它们绑定到模型参数而不是变量。这样我可以移动滑块,使用播放按钮运行模拟,然后使用停止按钮返回开始屏幕并调整值。是否也可以在结束时间执行此操作?
该模型是从 Vensim 转换而来的,其中有一个名为 FINAL_TIME 的变量,您可以通过 SyntheSim 模式下的滑块进行交互更改。这就是我正在寻找的,除了 SyntheSim 功能在 Anylogic 中不可用。
anylogic - 计算如何在 anylogic 上工作?
我目前正在使用anylogic进行项目。我正在使系统动态地对 SIR 模型进行建模。我在excel中手动计算了每只股票(使用欧拉法),但是excel中的结果与anylogic中的结果不同。我很好奇 anylogic 如何计算我在其上构建的模型。任何人都知道计算是如何在任何逻辑上工作的吗?
netlogo - NetLogo:使用 SDM 中“库存”的值作为 ABM 的输入
我做了两个简单的模型;NetLogo 中的一个系统动力学模型和一个基于代理的模型。SDM 有一个存量“游客”,其价值取决于流入和流出。每次报价都会重新计算该值。游客们在 ABM 的每一刻都在萌芽。现在,我想使用 TouristStock 的值作为基于代理的模型中每个滴答声都发芽的海龟的输入。做这个的最好方式是什么?我已经检查了模型库中的示例代码(如 Tabonuco Yagromo 模型),但这对我来说没有任何意义。将这些模型相互集成的最佳方式是什么?提前致谢!
ABM的相关代码如下:
events - Anylogic:如何计算累积和?
我想知道如何在 Anylogic 中计算累积和。具体来说,我有一个循环事件,每周都会更改参数的值。从这个参数我想计算它收到的值的累积总和,我该怎么做?
该事件是具有循环模式的超时。动作是:
"name_parameter"=round(max(normal(10,200),0));