Anylogic“如何”问题

Posted

技术标签:

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

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

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

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

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

【问题讨论】:

【参考方案1】:

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

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

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

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

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

【讨论】:

以上是关于Anylogic“如何”问题的主要内容,如果未能解决你的问题,请参考以下文章

Anylogic/如何关闭动画?

Anylogic:如何计算累积和?

如何设置 Anylogic 优化实验?

如何让 AnyLogic 识别 Lombok 插件?

Anylogic - 模型创建期间的错误:如何识别?

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