首页 > 编程知识 正文

critic法计算指标权重步骤,权重与分值的计算方法

时间:2023-05-05 00:25:57 阅读:174704 作者:1749

随着科技和经济水平的发展和提高,越来越多的人投身到java的学习中,要求更高的工资和更好的生活水平。 今天介绍几个java的基础知识。 在java算法中,如何根据权重分配任务? 一起看看吧。

首先,假设您有一个任务执行者要执行一定数量的任务,并且任务分配必须按一定的权重比进行。 任务的分配是随机的,分配完成后,必须为每个任务标记执行者。 分配算法并不难,但用java写很有趣。

首先简要说明算法的设计。

1 .只要能将总任务数整除为权重,每个人分配的数量就是总任务数/权重和*权重

2 .总任务数无法整除权重时,首先按照整除后的数划分为1,将剩余数优先分配给权重较小的执行者。 代码应显示如下: //总任务

ListdataList=pm1.getDataList (;

inttotal=dataList.size (;

//待分配人员

list autolist=pm auto.get datalist (;

//总权重

inttotalWight=0;

for(inti=0; I

{

executordtodto=autolist.get(I;

intweight=dto.getWeight (;

totalWight=weight;

}

//得到能被整除的最大数量

integer maxint=get maxint (total wight,total );

intrest=total-maxInt;

//要保存的结果集

ListresultList=newArrayList (;

for(inti=0; I

{

intassignnum=maxint/total wight * (

. getWeight ();

intcount=0;

是wile (计数)

{

if(datalist.size) () ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )。

{

Randomrandom=newRandom (;

//根据对话日志的总数产生随机数

intindex=random.nextint((int ) dataList.size ) );

taskdtodto=datalist.get(index;

if (空!=dto )

{

dto.setassignoperator (autolist.get (I ) )。

. getId ();

resultlist.add(DTO;

出局;

datalist.remove (索引; //被分配的任务从被分配的任务数中排除

}

}

else

{

黑;

}

}

是autolist.get(I )

. settask(Autolist.get ) I ) )。

. getTask () count ); //更新每个任务执行者的任务数

}

system.out.println(datalist大小) dataList.size ),剩余为) rest );

if(datalist.size) () ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )。

{

//权重从小到大剩余~

collections.sort(autolist,newComparator ) )。

{

@Override

公共输入公司(executordtoo 1

、ExecutorDTOo2)

{

returno1.getWeight ()-o2.getWeight ();

}

);

listrestresultlist=this.assign rest (autolist,dataList );

result list.addall (rest result list;

}

其中分配剩余assignRest的方法、代码如下所示。 私有列表统计信息(list autolist,ListdataList )。

{

ListresultList=newArrayList (;

映射图=new hashmap (;

出局:

for(inti=0; I

{

executordtodto=autolist.get(I;

intweight=dto.getWeight (;

Randomrandom=newRandom (;

for(intj=0; j

{

intindex=random.nextint((int ) dataList.size ) );

taskdtochatdto=datalist.get (index;

if (空!=chatDTO )

{

chatdto.setassignoperator (dto.getoperpk ) ); //被分配人的id

dto.settask(dto.gettask ) ) 1; //更新任务执行者包含的任务数

resultlist.add(chatdto;

datalist.remove (索引;

if(datalist.size ()==0) ) )。

幸福手机;

}

}

}

返回结果列表;

}

以上是关于java算法,如何根据权重分配任务的主要内容。 如果您对java知识感兴趣,想了解更多关于java的经典示例和常见问题,请关注奇q工具网。

请阅读:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。