首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AnyLogic中动态时延的计算

AnyLogic中动态时延的计算
EN

Stack Overflow用户
提问于 2021-08-02 12:53:28
回答 1查看 392关注 0票数 0

日安!

请帮助我理解延迟块在AnyLogic中是如何工作的。假设我们处理一个多通道传输网络。该模型有两个来源。假设这些源每1秒生成一次数据包。来自不同来源的分组具有不同的优先级,需要不同数量的资源来服务(分别使用优先级和Resource_quantity参数设置)。模型中的Priority_queue是基于优先级的.该模型根据信道中的资源可用性将数据包放入信道中。首先,它尝试将数据包放到第一个信道上。如果没有可用的资源,则将分组放入第二个信道。如果在两个通道中都没有资源,那么它将等待(它是用Hold块实现的)。

我注意到,如果我用静态参数设置块delay1和delay2中的延迟(对于ex )。2秒钟)模型工作正常。但是我试着在这些块之前计算它,模型根本没有考虑到它。在这种情况下,模型工作没有任何延迟。我在这里做错了什么?

我会感谢你的帮助。

延迟在退出块中计算,并写入代理的可变延迟中。我试图添加traceln(agent.delay),就像@Jaco在计算延迟后建议的那样,结果显示为零。在这种情况下,它也不会占用资源:(

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-03 12:27:54

谢谢@Jaco的有益评论。

延迟为零,因为

在Java中的除法结果取决于操作数的类型。如果两个操作数都是整数,则结果也将是整数。要让Java执行实除法(并得到实数),至少一个操作数必须是实类型的。

所以这是我的问题。为了解决这个问题,我将double分配给其中一个操作数:

代码语言:javascript
运行
复制
agent.delay = (double)agent.Resource_quantity/ChannelResources1.idle();

然而,奇怪的是它为什么在数据库中显示正确的值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68621950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档