当前位置:   article > 正文

java 权重 分配_一种按权重分配的Java算法

权重分配算法

现有一需求,就是假设有若干任务执行者执行一定数目的任务,并且任务的分配需按一定的权重比来进行。任务的分配是随机的,分配完毕后需要为每条任务打上执行者的标签(即被谁执行。)分配算法不难,但是用java写起来还是蛮巧妙的~ 觉得很有意思,遂记之。

算法设计:

1)总的任务数能被权重和整除,则每个人分配的数量就是:总任务数/权重和*权重

2)总的任务数不能被权重和整除,则先按整除的数按1)的方式分,然后余数再优先分给权重较小的执行者。

//总的任务

List dataList = pm1.getDataList();

int total = dataList.size();

//待分配人员

List autoList = pmAuto.getDataList();

//总权重

int totalWight = 0;

for(int i= 0;i

ExecutorDTO dto = autoList.get(i);

int weight = dto.getWeight();

totalWight += weight;

}

//获得能整除的最大数

Integer maxInt = getMaxInt(totalWight, total);

int rest = total - maxInt;

//要保存的结果集

List resultList = new ArrayList();

for(int i=0;i

int assignNum = maxInt/totalWigh

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/289232
推荐阅读
相关标签
  

闽ICP备14008679号