AnyLogic中的计算动态延迟
Calculation dynamic delay in AnyLogic
美好的一天!
请帮助我了解 Delay 块在 AnyLogic 中的工作原理。假设我们处理一个多通道传输网络。
该模型有 2 个来源。假设这些来源每 1 秒生成一次数据包。来自不同来源的数据包具有不同的优先级,需要不同数量的资源来提供服务(分别由 Priority 和 Resource_quantity 参数设置)。模型中的 Priority_queue 是基于优先级的。所提出的模型根据通道中的资源可用性将数据包放入通道。首先,它尝试将数据包放入第一个通道。如果没有可用资源,它会将数据包放入第二个通道。如果两个通道中都没有资源,它会等待(通过 Hold 块实现)。
我注意到,如果我在块 delay1 和 delay2 中使用静态参数设置延迟(例如 2 秒),模型工作正常。但是后来我尝试在模型完全不考虑这些块之前对其进行计算。在这种情况下,该模型可以毫无延迟地运行。
我这里做错了什么?
如有任何帮助,我将不胜感激。
延迟在Exit块中计算,并写入代理的变量延迟中。我试图在计算延迟后立即按照@Jaco-Ben 的建议添加 traceln(agent.delay) 并且它显示为零。在这种情况下,它也不会占用资源:(
感谢@Jaco-Ben 的有用评论。
延迟为零,因为
the result of division in Java depends on the types of the operands.
If both operands are integer, the result will be integer as well. To
let Java perform real division (and get a real number as a result) at
least one of the operands must be of real type.
所以这是我的问题。
为了解决它,我将 double
分配给其中一个操作数:
agent.delay = (double)agent.Resource_quantity/ChannelResources1.idle();
但是,奇怪的是为什么它在数据库中显示正确的值。
美好的一天!
请帮助我了解 Delay 块在 AnyLogic 中的工作原理。假设我们处理一个多通道传输网络。 该模型有 2 个来源。假设这些来源每 1 秒生成一次数据包。来自不同来源的数据包具有不同的优先级,需要不同数量的资源来提供服务(分别由 Priority 和 Resource_quantity 参数设置)。模型中的 Priority_queue 是基于优先级的。所提出的模型根据通道中的资源可用性将数据包放入通道。首先,它尝试将数据包放入第一个通道。如果没有可用资源,它会将数据包放入第二个通道。如果两个通道中都没有资源,它会等待(通过 Hold 块实现)。
我注意到,如果我在块 delay1 和 delay2 中使用静态参数设置延迟(例如 2 秒),模型工作正常。但是后来我尝试在模型完全不考虑这些块之前对其进行计算。在这种情况下,该模型可以毫无延迟地运行。 我这里做错了什么?
如有任何帮助,我将不胜感激。
延迟在Exit块中计算,并写入代理的变量延迟中。我试图在计算延迟后立即按照@Jaco-Ben 的建议添加 traceln(agent.delay) 并且它显示为零。在这种情况下,它也不会占用资源:(
感谢@Jaco-Ben 的有用评论。
延迟为零,因为
the result of division in Java depends on the types of the operands. If both operands are integer, the result will be integer as well. To let Java perform real division (and get a real number as a result) at least one of the operands must be of real type.
所以这是我的问题。
为了解决它,我将 double
分配给其中一个操作数:
agent.delay = (double)agent.Resource_quantity/ChannelResources1.idle();
但是,奇怪的是为什么它在数据库中显示正确的值。