【问题标题】:"Calculated Column" in AnyLogic DatabaseAnyLogic 数据库中的“计算列”
【发布时间】:2023-03-12 11:03:02
【问题描述】:

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

【问题讨论】:

    标签: anylogic


    【解决方案1】:

    以下是要做的步骤:

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

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

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

    祝你好运

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-05-25
        • 1970-01-01
        • 2021-12-12
        • 2019-11-07
        • 2021-06-01
        • 2021-10-07
        • 2015-10-22
        • 1970-01-01
        相关资源
        最近更新 更多