在 select 输出元素之前保留代理以避免默认端口

Holding agents before a select output element to avoid default port

我一直在尝试模拟一个场景,但仍然找不到最好的方法。场景如下:

代理到达一个点,他们需要从三个路径中选择一个。每条路径都是容量为 1 的延迟。如果第一条路径中已经有代理(在延迟块中),则不满足第一个条件,代理会尝试第二个端口。在第二个端口,如果延迟块可用,它可以继续,否则它检查第三个。如果所有人都忙,那么代理应该在 select 输出之前排队等待。

为了模拟这个过程,我使用了以下序列:

Queue > Hold > Select Output 5 > 1 在 select output

的三个第一个输出端口中的每一个之后延迟容量 1 的元素

select 输出的条件例如是“Delay1.size() == 0”,然后是第二个端口“Delay2.size() == 0”,等等。

然后,我创建了一个函数来检查是否所有 delay.size() == 1,然后将 hold 元素设置为阻塞以避免代理通过 select 输出的默认端口。该功能在所有块的每个“进入时”和“退出时”字段进行测试。

尽管如此,代理仍在通过默认端口,这意味着保留元素无法正常工作。

是否有更有效的方法来模拟所描述的场景?谢谢!

好吧,你实际上根本没有阻止你的 Hold 元素,因此代理会随时通过:-)

这种情况有很多种方法。

您可以将 Delay 替换为 Wait 元素。每当代理人离开您的延迟块之一时,您就会解锁保留。

只要代理通过保留,您就会阻止它,但前提是所有 3 条路径当前都忙。

应该可以解决问题