【问题标题】:Anylogic ‘how to’ questionsAnylogic“如何”问题
【发布时间】:2021-08-16 21:31:56
【问题描述】:

我将 Anylogic 用于模拟建模类,但我并不擅长任何逻辑或编码。我上一堂也是唯一一堂编程课是大约 16 年前的 MatLab。我有几个关于如何使用 anylogic 在离散模型中实现建模概念的问题。

  1. 如何将代理直接添加/注入到源下游的队列中?我尝试添加一个额外的源来使用“调用注入()函数”,但我不确定在选择它后如何实现它(例如:选择调用注入()函数后我该怎么做)。我将新源直接输入到我想要注入的队列中。

  2. 如何将代理的发布设置为定义的时间表而不是速率?目前,我的工作模型设置为到达间隔时间。但我想将代理发布设置为定义的时间表。 (例如:agent-1 120 秒释放,agent-2 150 秒释放,agent-3 270 秒释放)

任何帮助都将不胜感激,尤其是如果它可以以“像我 5 岁一样向我解释”的格式编写。

【问题讨论】:

    标签: anylogic


    【解决方案1】:

    问题 1: 如果您有一个源直接连接到队列,那么当您调用 source.inject() 时,将在源块中创建一个代理并进入队列。如果您有 1 个具有多个可能目的地的源,那么您将不得不使用选择输出块和一些标准从源转到所需的队列。

    由于您提到不是一个强大的程序员,这可能不适合您,但我经常发现自己通过 add_population 创建代理,然后将它们添加到 ArrayList 直到我准备好将它们拉入 DES 流。实际上,在 AnyLogic 中控制代理流的方法几乎是无限的。

    问题 2: 选项 a:通过“数据库中的到达表”到达您可以将 AnyLogic 数据库表链接到 Excel,然后源块将仅让代理根据该表到达。

    选项 b:到达计划 - 您可以在开发环境中手动设置或从数据库加载您的计划。鉴于您的简短描述,我更喜欢选项 a 而不是选项 b。

    选项c:将数据读入变量,然后根据下一次到达时间编写代码释放。 1,000 种方法可以做到这一点,但一个例子可能是双打列表(您的到达时间),将事件设置为延迟到下一次到达,调用注入函数,从列表中删除该到达。我认为选项 a 最适合您,但鉴于 AnyLogic 允许您添加 java 代码,您可以制作到达逻辑的复杂程度没有限制。

    【讨论】:

      猜你喜欢
      • 2021-07-23
      • 2017-07-21
      • 2021-03-15
      • 1970-01-01
      • 2022-08-17
      • 2021-11-18
      • 2019-06-19
      • 2020-09-14
      • 2021-12-27
      相关资源
      最近更新 更多