Anylogic 模型作业同时运行

问题描述

我如何建模三个作业以始终在 Anylogic 中同时运行。使用代码对代理的路由和处理方式或服务块的编码方式进行建模。 谢谢

解决方法

几个选项(还有更多)

等待块

您可以在关键流元素之前使用 Wait 对象。

任何代理“落入”其中并永远等待......直到您手动释放它。

因此,当代理进入 Wait 块时,您可以编写一些代码来检查“我的其他 2 个所需的代理已经在这里了吗?”。

如果是这样,您可以使用 myWaitBlock.free(agent)“释放”它们,并为需要同时离开的 3 个代理调用它。

批量

您可以将代理分批在一起,并将它们视为 1 个批次,直到您取消对它们的分批。检查 BatchUnbatch 块。

,

如果您正在进行流程建模(您似乎是这样),这可能是对 Service 和 Delay 块如何工作的误解。如果

  • Service 块正在使用资源池(规范);将“同时”处理与可用资源一样多的代理(每个代理有 1 个资源)。

  • 延迟块的容量 > 1(在这种情况下,它可以“同时”处理多少个)。

如果您想要其他东西(例如一组“同时”处理 X 个代理的资源),那么您可以使用 Ben 建议的技术:

  • 批处理 --> 服务 --> 如果您总是想等待 X 个代理并一起处理它们,则取消批处理序列。

  • Wait 块(以及其他各种复杂性)如果您希望资源选择最多一起处理多少个代理(例如,在它们完成处理 Y 个代理后,处理下一个 Z 个代理,其中 Z

一般来说,您需要更清楚地定义您的“处理逻辑”需要什么,才能知道合适的解决方案是什么。

,

这是我使用的功能代码截图 enter image description here