【发布时间】:2018-11-15 01:49:11
【问题描述】:
我傻眼了,为什么我不能正确模拟一个简单的队列系统。
系统如下:
以每 2 分钟 1 个代理的速率流入泊松流(指数分布)。
容量为 2 的队列。
两 (2) 台服务器,每台服务器每 3 分钟 1 个代理。
如果系统已满(服务器和队列中的两个位置都被占用),新的代理不会进入系统而是被销毁。
在 Anylogic 中,我对系统进行了如下建模: Model
源元素被指定为间隔时间“2”,代理在无法进入系统时被销毁(因为队列已满)。 source 编辑:正如 Felipe 所指出的,它应该是“指数(0.5)”而不是简单的“2”;然而这并不能解决问题。测量结果仍然错误:队列现在的平均长度为 0.55 对 0.413(应该是),系统现在的平均代理数量是 1.92 对 1.727(应该是),平均损失率为 8.67% 对. 12.4 %(应该)。
队列用容量'2'和先进先出机制指定。 queue
延迟元素的容量为“2”,延迟持续时间为“指数(1.0/3.0)”分钟。 delay
水槽是纯香草的。 sink
现在,队列理论告诉我们,我们期望在系统中观察到 1.727 个代理的极限平均数。并且队列中的限制平均代理数为 0.413。平均损失率(代理销毁)为 12.4 %。
但是当我用 Anylogic 模拟系统时,我得到了不同的结果。 奇怪的是,队列中代理的平均值是正确的 0.413。 但是任意逻辑模拟的平均损失率约为 1.7 %,系统中智能体的平均值约为 1.83。
可以通过“丢弃”操作轻松计算丢失率 “源”元素:“CountLost++;” ('CountLost' 是我创建的变量)然后我可以将 'CountLost' 变量与创建的代理的完整数量进行比较。
我的错误是什么?
非常感谢您的帮助! 马丁
EDIT2:Felipe 要求计算:Calculation
【问题讨论】:
-
我不知道这是否会解决您的所有问题,但要在源上具有指数分布,您需要将指数分布写为指数(0.5),因为每个时间单位有 0.5 个到达(分钟)...如果你只写 2,那么代理将恰好每隔 2 分钟到达
-
亲爱的 Felipe,非常感谢您的评论并指出我的一个错误。但不幸的是,测量结果仍然错误:队列现在的平均长度为 0.55 对 0.413(应该是),系统现在的平均代理数量是 1.92 对 1.727(应该是),平均丢失率为 8.67 % 与 12.4 %(应该是)。你能重现这个结果吗?在您的机器上重建模型应该相当容易。再次,非常感谢!
-
你是如何计算理论值的?
-
亲爱的费利佩,感谢您的关注!我在帖子中添加了一个带有计算的屏幕截图(见上文)。平均队列中的代理数可以通过 1.727-1.314=0.413 计算 编辑:理论值是正确的。我有 99.999% 的把握。此外,当我用 GPSS World 模拟它时,我得到了理论值。但尽管如此,检查仔细检查它并没有什么坏处。
-
我不知道 :P 对不起
标签: anylogic