AnyLogic 数据库中的“计算列”

Posted

技术标签:

【中文标题】AnyLogic 数据库中的“计算列”【英文标题】:"Calculated Column" in AnyLogic Database 【发布时间】:2021-10-14 05:46:47 【问题描述】:

我可以创建一个 Anylogic 数据库,其中一列 (Column1) 是日期/时间,第二列 (Column2) 是一个值,代表分钟。如何根据 Column1 - Column2 的时间创建到达模型的代理?

【问题讨论】:

【参考方案1】:

以下是要做的步骤:

    在模型开始处创建一个 for 循环,循环遍历该表中的所有行(如果不确定,请使用数据库查询) 计算从日期中减去分钟数(了解 Java Date 以及如何通过 *** 减去值,数百万人遇到过类似问题) 创建一个创建代理的“动态事件”(不是“事件”)。将其命名为 MyDynamicEvent 或类似名称 在您的 for 循环中,计算从模型启动到代理创建的持续时间后,调用 create_MyDynamicEvent(timeToStart, timeunit) 并为其提供要调用的时间。如果不确定这是什么,请查看动态事件的帮助和示例模型 在动态事件中,创建您的代理,例如调用add_MyAgents() 到人口myAgents

这将为 col1-col2 点的每个数据行创建 1 个代理

(一路上会有几个障碍:如果卡住了,请补充新问题,见https://www.benjamin-schumann.com/blog/2021/4/1/how-to-win-at-anylogic-on-***)

祝你好运

【讨论】:

【参考方案2】:

除非有特定原因,否则您不能添加为您计算到达时间的第三列(即第 3 列 = 第 1 列 - 第 2 列)我强烈建议您使用标准 AnyLogic 功能用于创建代理的源代码块。

请参阅下面的示例以及此问题中的更多详细信息 - https://***.com/a/68708035/4019094

然后,您不仅可以轻松设置代理的到达,还可以从 DB 表中填充他们的参数。

如果您无法更改数据库表,那么按照本杰明的回答动态事件是唯一的方法。

【讨论】:

以上是关于AnyLogic 数据库中的“计算列”的主要内容,如果未能解决你的问题,请参考以下文章

表格数据从 Excel 输入到 Anylogic 中的系统动态库存

Anylogic:将参数值写入数据库表

如何在 AnyLogic 中读取行中的不同列?

如何使用anylogic中的参数变化从图表上的main获取某些数据?

Anylogic - 实验中的计数变量

AnyLogic中的计算动态延迟