日安!
请帮助我理解延迟块在AnyLogic中是如何工作的。假设我们处理一个多通道传输网络。该模型有两个来源。假设这些源每1秒生成一次数据包。来自不同来源的分组具有不同的优先级,需要不同数量的资源来服务(分别使用优先级和Resource_quantity参数设置)。模型中的Priority_queue是基于优先级的.该模型根据信道中的资源可用性将数据包放入信道中。首先,它尝试将数据包放到第一个信道上。如果没有可用的资源,则将分组放入第二个信道。如果在两个通道中都没有资源,那么它将等待(它是用Hold块实现的)。
我注意到,如果我用静态参数设置块delay1和delay2中的延迟(对于ex )。2秒钟)模型工作正常。但是我试着在这些块之前计算它,模型根本没有考虑到它。在这种情况下,模型工作没有任何延迟。我在这里做错了什么?
我会感谢你的帮助。
延迟在退出块中计算,并写入代理的可变延迟中。我试图添加traceln(agent.delay),就像@Jaco在计算延迟后建议的那样,结果显示为零。在这种情况下,它也不会占用资源:(
发布于 2021-08-03 12:27:54
谢谢@Jaco的有益评论。
延迟为零,因为
在Java中的除法结果取决于操作数的类型。如果两个操作数都是整数,则结果也将是整数。要让Java执行实除法(并得到实数),至少一个操作数必须是实类型的。
所以这是我的问题。为了解决这个问题,我将double
分配给其中一个操作数:
agent.delay = (double)agent.Resource_quantity/ChannelResources1.idle();
然而,奇怪的是它为什么在数据库中显示正确的值。
https://stackoverflow.com/questions/68621950
复制相似问题