问题标签 [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.

0 投票
1 回答
203 浏览

java - AnyLogic - System Dynamics : how to track stock values correctly?

screenshot of my model

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?

0 投票
0 回答
117 浏览

r - 有没有办法在 R 的 desolve 包中使用 ODE 求解器来实现管道(离散)延迟?

作为尝试使用 DeSolve 包在 R 中实现系统动力学模型的一部分,我想知道是否有办法在我的模型中构建管道(离散延迟)。

管道延迟的一个示例可能是配送过程,例如,亚马逊包裹在时间 X 离开仓库并需要 2 天才能到达我手中,即整个包裹在 2 天的固定持续时间后到达我手中。

我知道更流行的模拟包,如 Vensim 等具有固定功能(延迟固定等)来处理这个问题,但我正在寻找如何在 R 中实现它的指导(包括底层方程)能够这样做)。

如果我们使用我正在尝试做的那种事情的简单示例 - 我们有一个模型:

A. 一个外生变量 1. 期望增长率 = 10%

B. 两只股票:

  1. 延迟

    • 在任何给定期间,流入该股票的资金为资产股票价值的 10%(见下文)
    • 流出应该是两个时期前的流入
  2. 资产

    • 流入这个股票应该是从延迟股票流出
    • 该股票没有流出/衰减

基本上我要说的是 - 如果我在时间 t=0 对资产进行投资,这应该在 t=2 结束时的 3 个时间段后实现并反映在资产的价值中。

你会在我的 R 代码中看到我卡在我必须定义延迟输出方程的那一行 - 从数学上讲,为了实现所需的延迟,我需要从一段时间前的投资中减去当前的延迟值 -但我不知道如何调用这些滞后值 - 我已经研究过使用 dede 而不是 ode 但不确定这是否符合我的需要。

我也知道我可以通过在上述等式中将延迟值除以 3 来实现一阶延迟,但这意味着我在当前时间立即获得了投资收益的三分之一,这不是我想要的效果寻求实现。

我对延迟库存流出的预期结果如下。请注意,流入是由实际模型构成的,因为在每个时期内,这些值都会波动:

..等等。

感谢您花时间阅读,如果问题已经在其他地方提出过,如果您能指出我正确的方向,我将不胜感激,因为我无法找到答案。

0 投票
1 回答
212 浏览

systemdynamics - Vensim 中不同的时间步长没有相同的结果,如何解决?

我正在 Vensim 中制作一个简单的模型。该模型由一个存量和一个流出变量组成:

库存:方程= INTEG(-“流出”),初始值:2.5

流出:方程式 = IF THEN ELSE(stock>0, MIN(stock, 1), 0)

模拟运行 5 年(初始时间 = 0,最终时间 = 5),时间单位为年。我每年需要进行 64 次模拟,因此时间步长设置为“0.015625”。我用这个时间步得到的结果是不合逻辑的,也不是我所期望的,但是通过设置“时间步= 1”可以获得所需的结果。

如前所述,模拟每年需要运行 64 次,时间步长 = 1 的模拟对我没有用。我怎么解决这个问题?提前致谢。

0 投票
0 回答
75 浏览

function - 为游客恢复公园容量的功能?

我正在习惯使用 Vensim 进行系统动力学建模。为了训练,我忙于公园游客的系统动力学。我在哪里建模了以下库存和流程图: SFD

对于“最大容量”的方程,我将其定义为:

最大容量 = - ( 0.05 * 访客数量 )

而且我将初始值设置为每年最多 400.000 名访客。

这意味着承载能力下降了上一年游客总数的5%。结果如下图: 图2

现在我想让公园重新恢复容量。我最初想到的是这样的:

IF THEN ELSE( 最大容量 < 250000 , 0.05 * 最大容量, - ( 0.05 * 访客数量 ))

这给出了下图: 图3

正如你所看到的,它并没有真正阻止容量继续以 5% 衰减。

我怎样才能使容量随着时间的推移再次恢复到 400.000?

0 投票
1 回答
117 浏览

r - 您如何在 deSolve (R) 中实现系统动力学风格的流水线延迟?

我正在尝试使用 R 中的 deSolve 对管道延迟进行建模。我有一个具有恒定输入 (work_arrival) 的库存 (worktodo),我想要一个管道延迟执行 (work_rate),其中库存以相同的到达率下降3 步延迟。目前,我能够初始化管道延迟,但它似乎在延迟后重置(开启 3 步,关闭 3 步,...)。它应该保持与 work_arrival 匹配。有任何想法吗?

当前模型行为 --- 工作率调整而不是停留

0 投票
1 回答
103 浏览

netlogo - 在建模系统动力学中,我们什么时候使用股票,什么时候只使用变量?

系统动力学模型由存量(表示感兴趣系统的连续量)、流量(控制存量的流入和流出)和变量(可能是常数或也随存量值变化)组成.

我仍然很难掌握何时使用股票以及何时使用变量。例如,取自CLExchange 的 YT 视频的这个模型将“灰姑娘的幸福”显示为一个可以变化的股票,而仙女教母的关注(随着灰姑娘的幸福降低而上升)作为影响流向 CH 的变量。我也可能将教母的担忧建模为一个存量变量。然而,我发现大多数关于 SD 的论文都很少有股票和更多的影响变量。有没有这方面的指导方针?

免责声明:根据NetLogo Systems Dynamics Modeler for Agents 的说法,我最熟悉 NetLogo 的系统动力学建模器,它非常有限。

两种不同的 SD 型号

0 投票
1 回答
187 浏览

anylogic - 在 Anylogic 中灵活更改模拟持续时间

我有一个只有一个代理的系统动力学模型。我可以设置模拟的持续时间,对于我的情况,一个示例值为 120 个月。如果我想尝试不同的持续时间,例如 24 或 240 个月,我该怎么办?在实验的“模型时间”属性中更改它似乎很麻烦,因为您每次都必须停止实验。

对于其他模型输入,我在开始屏幕上创建了滑块并将它们绑定到模型参数而不是变量。这样我可以移动滑块,使用播放按钮运行模拟,然后使用停止按钮返回开始屏幕并调整值。是否也可以在结束时间执行此操作?

该模型是从 Vensim 转换而来的,其中有一个名为 FINAL_TIME 的变量,您可以通过 SyntheSim 模式下的滑块进行交互更改。这就是我正在寻找的,除了 SyntheSim 功能在 Anylogic 中不可用。

0 投票
1 回答
77 浏览

anylogic - 计算如何在 anylogic 上工作?

我目前正在使用anylogic进行项目。我正在使系统动态地对 SIR 模型进行建模。我在excel中手动计算了每只股票(使用欧拉法),但是excel中的结果与anylogic中的结果不同。我很好奇 anylogic 如何计算我在其上构建的模型。任何人都知道计算是如何在任何逻辑上工作的吗?

0 投票
0 回答
27 浏览

netlogo - NetLogo:使用 SDM 中“库存”的值作为 ABM 的输入

我做了两个简单的模型;NetLogo 中的一个系统动力学模型和一个基于代理的模型。SDM 有一个存量“游客”,其价值取决于流入和流出。每次报价都会重新计算该值。游客们在 ABM 的每一刻都在萌芽。现在,我想使用 TouristStock 的值作为基于代理的模型中每个滴答声都发芽的海龟的输入。做这个的最好方式是什么?我已经检查了模型库中的示例代码(如 Tabonuco Yagromo 模型),但这对我来说没有任何意义。将这些模型相互集成的最佳方式是什么?提前致谢!

ABM的相关代码如下:

0 投票
1 回答
89 浏览

events - Anylogic:如何计算累积和?

我想知道如何在 Anylogic 中计算累积和。具体来说,我有一个循环事件,每周都会更改参数的值。从这个参数我想计算它收到的值的累积总和,我该怎么做?

该事件是具有循环模式的超时。动作是:

"name_parameter"=round(max(normal(10,200),0));