首页 > 解决方案 > 如何以不同的批量大小批量处理具有相似参数的代理?

问题描述

我有一个名为products的代理,在这个代理中,我分配了一个名为sp的参数;在模拟中,我有相同的代理,其sp范围从 1 到 5 不同。我想在同一批次中对具有相同sp的代理进行批处理,具体取决于sp。因此,如果我有 200 个代理,其中 49 个sp等于 1,我想将它们分成 4 个批次,因为这个sp的批量大小是 10,剩下的 9 个代理等到下一个周期,对于sp等于 2,我有 33 个代理,批量大小为 7,我想分 4 批进行批处理,剩下的 5 个代理等到下一个周期,依此类推。

我非常感谢您能提供的任何帮助。

这是我的最后一个问题,类似于这个问题: Anylogic: how to Batch agent with similar parameters?

标签: javaanylogic

解决方案


遵循与上一个问题的答案相同的逻辑,等待块后跟批处理块......在等待块的输入时,您需要检查是否满足批处理条件......

List <Product> sameSpProducts=findAll(self,s->s.sp==agent.sp);
if(agent.sp==1 && sameSpProducts.size()==10){
    theBatchBlock.set_batchSize(10);
    for(Product p : sameSpProducts){
       self.free(p);
    }
}

对于所有其他 sp 值都相同...您可以通过使用具有 sp 值的数组并循环遍历该数组来提高效率(与上一个问题中的回答相同)...这代表了一般理想


推荐阅读