在选择输出元素之前持有代理以避免默认端口
Posted
技术标签:
【中文标题】在选择输出元素之前持有代理以避免默认端口【英文标题】:Holding agents before a select output element to avoid default port 【发布时间】:2020-11-21 02:58:07 【问题描述】:我一直在尝试为场景建模,但仍然找不到最好的方法。场景如下:
代理到达一个点,他们需要从三个路径中选择一个。每条路径都是容量为 1 的延迟。如果第一条路径中已经有一个代理(在延迟块中),那么第一个条件不满足,代理尝试第二个端口。在第二个端口,如果延迟块可用,它可以继续,否则检查第三个。如果都忙,那么代理应该在选择输出之前排队等待。
为了对这个过程进行建模,我使用了以下序列:
队列 > 保持 > 选择输出 5 > 选择输出的三个第一个输出端口中的每一个之后的容量为 1 的 1 个延迟元素
选择输出的条件例如是“Delay1.size() == 0”,然后是第二个端口“Delay2.size() == 0”等。
然后,我创建了一个函数来检查是否所有 delay.size() == 1,然后将保持元素设置为阻塞以避免代理通过选择输出的默认端口。该功能在所有块的每个“On Enter”和“On Exit”字段中进行测试。
尽管如此,代理仍然通过默认端口,这意味着保持元素无法正常工作。
是否有更有效的方法来模拟所描述的场景?谢谢!
【问题讨论】:
为什么不排队,然后是容量为 3 的延迟? 我稍微简化了模型。每个延迟都有一些额外的特征。例如,每个延迟都会有一些特定于自身的停机时间。所以它们需要是单独的行。 【参考方案1】:好吧,您实际上并没有阻止您的 Hold 元素,因此代理将随时通过:-)
这种情况有很多方法。
您可以将延迟替换为等待元素。每当代理离开您的一个延迟块时,您就会解除对保留的阻止。
每当代理通过 Hold 时,您就会阻止它,但前提是所有 3 条路径当前都忙。
应该做的伎俩
【讨论】:
以上是关于在选择输出元素之前持有代理以避免默认端口的主要内容,如果未能解决你的问题,请参考以下文章