【软件构造】lab6吞吐率优化

为猴子选择梯子时,其中的一个策略是选择距离起点最近的猴子速度最大的梯子。我以为这个方案吞吐率会很高,但实际运行时,在最后时刻经常出现这种情况:
在这里插入图片描述
如图,梯子1,2,3明明都是空的,但后上梯子的猴子还是只选择梯子0.实际观察会发现,在等待梯子1上所有猴子过河的过程中,吞吐率会有比较大的下降。(gui上显式的是实时吞吐率)
思考之后我发现,可能是因为这些猴子在生成后,立刻进行选择梯子的操作,当时梯子0的指标比较优越,就导致这一批猴子全部选中了梯子0.而由于猴子生成和过河之间隔了较长的一段时间,导致等到这批猴子过河的时候全部集中选择梯子0.
很明显,这不是我们想要的结果。为了提高吞吐率,我们希望猴子尽可能均匀地分布在所有梯子上。由此,我在上述方案的基础上进行了改进。在每个猴子选中一个梯子后,将其添加到该梯子的等待列表上,在其在梯子上前进一次之后,将其从梯子的等待列表移除。而在选择梯子时,若要选中一个梯子,需要满足一下三个条件:

  • 梯子方向与该猴子方向相同
  • 该梯子距离起点最近的猴子速度最大
  • 该梯子等待列表中的猴子个数不超过k(自己设定)
    如果没有满足条件的梯子,则该猴子在岸上等待,1s后重新进行一次选择。

改进的方案能够比改进前的方案取得更高的吞吐率
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值