使用CustomDistribution时如何通过Agent比较实现队列最短处理时间优先级
问题解决:基于CustomDistribution的Agent优先级比较
你遇到的问题是因为cD_M1是CustomDistribution类型的对象,不是具体的数值,所以没法直接用>=运算符比较。要实现最短处理时间优先级,得先把每个Agent对应的延迟时间数值存下来,再比较这个数值,具体步骤如下:
- 给你的Agent添加一个
double类型的变量,比如命名为delayTime,用来存储该Agent对应的延迟时间值。 - 在Agent进入Service Block的队列之前(比如在Source生成Agent时,或者在队列前的任意处理块中),调用CustomDistribution的
sample()方法生成具体的延迟时间,赋值给Agent的delayTime变量。代码示例:agent.delayTime = cD_M1.sample(); - 在Service Block的队列优先级设置中,使用存储好的数值进行比较:
这样设置后,延迟时间更小的Agent会被优先处理(因为当该表达式返回agent1.delayTime >= agent2.delayTimetrue时,agent1的优先级低于agent2,所以delayTime小的agent会排在前面)。
注意:不要直接在比较逻辑里调用cD_M1.sample(),因为每次调用都会生成新的随机值,会导致优先级判断前后不一致,影响队列逻辑。
内容的提问来源于stack exchange,提问作者Mo1409
相关产品推荐
相关产品推荐

