问题标签 [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.
if-statement - NetLogo 中的 IF THEN ELSE 嵌套语句系统动态命令
我在 NetLogo 的系统动态中有变量,我正在尝试嵌套 if else 如下
我收到一个错误“ Expected reporter
”请帮助
dimension - 在函数式语言中确定类型
在一个小程序中,用户插入多个键入的公式并将它们连接在一起,以创建一个联立方程系统。并且我想引入运行时类型检查,以便在尺寸不匹配时报告错误
基本类型可以是任何东西,例如Persons, Money, Money/Period, m^2/s^2
等,并在运行时作为字符串输入
我阅读了有关 Hindley-Milner 类型推断的信息,但认为它有点夸大了。
我的想法是依赖两个规则:
先分词,然后
如果 a*b 则维度是“扩展”或“收缩”,因为您跟踪单个维度的计数,例如
然后减去单个计数,从而Money(2) Person(1) Year(1)
留下final type
这可以实现为 tree walker,其中每个 (+/-) 节点测试维度约束,然后简化以产生最终答案
这是解决这个问题的好方法吗?
r - deSolve 中的 ifelse 语句不起作用
我想使用 deSolve 创建蝴蝶生态的动态模型。模拟运行了几个模拟年,并且一些事件在一年中的某一天触发(所以我添加了一个状态变量days
)。为了触发这些事件,我想使用一个ifelse
语句并且它工作正常,直到我尝试在ifelse
语句中放入一个涉及另一个状态变量的操作:D.egg.sus=(ifelse(days<270,(400 * adult.sus),0))
. 当我这样做时,模拟运行,但它似乎忽略了该ifelse
语句。谁能帮帮我?这是我的完整代码:
simulation - 我在哪里可以找到合适的 OpenModelica 语法存储库?
我已经为系统动力学探索 Open Modelica 一周了。虽然我从 Spoken Tutorial 中学到了一些基本的东西(比如函数和类语法等),但我需要走很长的路。我找不到合适的来源来提及各个方面的语法。例如,除了时间导数 [der(x)] 之外,我无法找到编写导数 (dy/dx) 的语法。有什么地方可以让我进一步处理吗?
Ps 我是 MATLAB、Octave 等软件的新手。OpenModelica 是我的第一个。
r - R中deSolve输出的移动平均值
我是 R 新手,但很想学习它。我刚刚建立了一个相当复杂的系统动力学股票和流动模型,我想使用 R 的deSolve
包来运行。
为了简化问题。我想根据过去 12 个月的销售额进行销售预测。我用了
我认为这movavg
将使用最后 12 个值(1 个时间步长 = 1 个月)进行计算,因此我将获得过去 12 个月的移动平均值。每次不同,deSolve
增加一个时间步长。
然而,表“ResultsSimulation”和“TotalSales”列在开始时并不存在(因为它是模拟的结果)
我想也许我可以在第一次运行时欺骗 R,在第一次运行模拟之前创建一个具有完全相同名称的表和列,并且第 1 轮之后的结果将覆盖第一个数据表,以便从那里开始movavg
使用模拟结果。显然这行不通。
您对如何计算仍将被计算并保存在第一个时间步骤不可用的列表中的值的移动平均值有什么建议吗?
谢谢你的帮助!
python - 将一系列 xarray.DataArrays 转换为 numpy 数组
我正在使用一个名为 PySD 的包进行系统动力学建模。PySD 将模型从 Vensim(系统动力学建模包)转换为 python,并允许用户用比 Vensim 更复杂的例程替换各种方程。我正在运行一个带有各种下标的模型,这会产生一种不寻常的输出格式。输出被读入一个数据帧,其下标元素的各个值最终是 xarray.DataArrays。我想知道如何获取一列 xarray.DataArrays (最终成为一个系列)并将其转换为二维数组,第二维是下标的数量。
example.py 代码如下(请记住,这是说明问题的任意示例)
如果 example.py 文件选项卡不符合要求,我深表歉意。任何帮助,将不胜感激!
anylogic - Anylogic System Dynamics : 库存容量
库存初始值为 1 流量为 0.1 库存1 初始值为 0。
当我运行模拟时,我意识到股票的价值低于 0(得到负值)。当 Stock 的值达到零时如何停止流动。
anylogic - Anylogic 的 Agent 人口和 SD 住房示例中的 Add_people() 函数
我曾尝试在运行 Anylogic 的代理人口和 SD 住房示例期间的事件中使用 add_people(),以便在模拟期间向模型添加更多代理,但我遇到了这个错误。我怎么解决这个问题?
netlogo - Tabonuco-Yagrumo-Hybrid Netlogo 模型中的错误?
我正在研究 Netlogo 的 Tabonuco-Yagrumo-Hybrid 模型 ( http://ccl.northwestern.edu/netlogo/models/TabonucoYagrumoHybrid ) 如何集成系统动力学和基于代理的建模。据我了解,该模型用基于代理的过程取代了系统动力学模型中的传统“流程”,这非常酷。
但是,在 Tabonuco-Yagrumo-Hybrid 模型中,我对记者agent-yagrumo-growth
和agent-tabonuco-growth
.
该agent-go
过程将相应的树生长流程设置为:
可以看出,流量yagrumo-growth
和tabonuco-growth
是使用上面提到的报告器设置的,它们将当前的“库存”值作为输入,即分别为 yagrumo 和 tabonuco 树的数量。这是有道理的。
然而,转到报告程序的定义,当前库存似乎根本没有用于计算。以agent-yagrumo-growth
过程为例:
这位记者为什么不使用 给定的值current
,它代表当前的股票价值。我错过了什么还是这是一个错误?
谢谢!
java - Anylogic - 从其他代理访问变量
我正在尝试在由多个代理组成的 anylogic 中对生产基础架构进行建模。其中之一是“蒸汽网络”(系统动力学),它从无处可寻的流动开始。该流量的动态值应该是另一个代理的蒸汽输出。不幸的是,我无法弄清楚如何将流量与我的代理“机器”的蒸汽生产(动态变量)联系起来。
我感谢您的所有帮助。