使用 SelectOutputOut 块和 while 循环的 AnyLogic 函数

AnyLogic funtion with using SelectOutputOut block and while loop

美好的一天! 我面临着将代理分配函数编写到 SelectOutputOut 块中的挑战。考虑到在函数中使用 if...else 语句的各种场景,我明白必须涵盖所有可能性(如建议的 )。 但是,问题是我不希望代理在获得适当的 SelectOutputOut 块之前离开函数。如果任何服务块(网络 1、网络 2 或网络 3)中没有足够的资源,则可能会出现这种情况。在这种情况下,有必要等待任何服务块将有足够的资源来为代理服务。为此,我尝试使用 while 循环,但没有帮助。 问题是:

  1. 如何编写 if-else 语句来强制代理在任何服务块中等待足够的资源
  2. Select函数是否监控其外的参数?换句话说:它在执行期间是否知道服务块的状态?

谢谢。

你需要做的是让你的代理在队列中等待,然后有一个函数将它们从队列中移除,然后将它们发送到正确的服务块。最好的方法是使用一个输入块,您可以将它们发送到该块。

参见下面的示例

然后您需要在队列的 On enter 代码和服务块的 On exit 代码处调用此函数,以确保您始终在有 space.