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 中的系统动态库存