[发明专利]基于MINMAX局部优化结构化网格并行计算负载平衡方法有效
申请号: | 201910076844.7 | 申请日: | 2019-01-27 |
公开(公告)号: | CN109783240B | 公开(公告)日: | 2020-08-25 |
发明(设计)人: | 杨博;龚春叶;刘杰;甘新标;李胜国;孙泽文;李彪;朱肖雄;谢佩珍;张庆阳 | 申请(专利权)人: | 中国人民解放军国防科技大学 |
主分类号: | G06F9/50 | 分类号: | G06F9/50;G06N3/12 |
代理公司: | 长沙中科启明知识产权代理事务所(普通合伙) 43226 | 代理人: | 任合明 |
地址: | 410003 湖*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 minmax 局部 优化结构 网格 并行 计算 负载 平衡 方法 | ||
1.一种基于MINMAX局部优化结构化网格负载平衡方法,其特征在于包括以下步骤:
第一步,参数配置:
1.1从配置文件获得输入文件位置、种群大小popNum、最大迭代次数IteMax、平衡率阀值ε、交叉概率Pcross、变异概率Pvari、最大重复次数SameMax;
1.2令最优适应度值重复次数nSame=0,令旧最优适应度值
第二步,初始化种群:
2.1从输入文件中读取所有网格块,把所有网格块随机分配到M个进程,一个网格块对应一个基因,网格块中网格数目为基因的值;生成含popNum条染色体的种群PopA,PopA={R1,..,Rn...,RpopNum},popNum为PopA中染色体条数,1≤n≤popNum且n为正整数,Rn表示第n条染色体,所有染色体均有M个染色体片段,对应M个进程;
2.2令迭代次数变量iteNum=0;
第三步,适应度计算:
3.1根据式(1)对PopA中的R1,..,Rn...,RpopNum分别进行适应度计算,得到popNum个适应度值,表示为F1,...,Fn,...FpopNum;
适应度函数F定义如下:
F=1/max{|P1|,...,|Pm|,...,|PM|} (1)
max{|P1|,...,|Pm|,...,|PM|}表示对|P1|,...,|Pm|,...,|PM|取最大值;进程集合为P={P1,...,Pm,...,PM},P中有M个进程,1≤m≤M且M为正整数,Pm表示第m个进程;|Pm|表示进程Pm处理的网格数目总和,|Pm|=Ei1+Ei2+…+Eim+…+EiG,即把进程中所处理的网格块的网格数目相加得到;G为Pm要处理的网格块的个数,0≤G≤N,Pm={Ei1,Ei2,…,EiG},Ei1,Ei2,…,Eim,…,EiG均∈E;E为网格块集合,E={E1,...,Eii,...EN},E中有N个元素,第ii个元素为网格数目为Eii的网格块,1≤ii≤N且N为正整数;Eii为正整数,表示网格数目为Eii的第ii个网格块;
3.2找出F1,...,Fn,...FpopNum中的最大值,表示为全局最优染色体的适应度值Fopt,并将Fopt对应的全局最优染色体记录为bestPop;
3.3iteNum=iteNum+1;
第四步,MINMAX局部优化,采用MINMAX方法对每个染色体中最大和最小的两个染色体片段进行迁移优化,得到适应度更好的染色体:
4.1令n=1;
4.2对种群PopA中第n条染色体中的M个染色体片段中的基因进行累加,得到M个染色体片段值;
4.3根据4.2步得到的M个染色体片段值,找出第n条染色体中染色体片段值最大的染色体片段染色体片段值最小的染色体片段H为Seg_max的基因个数,L为Seg_min的基因个数;计算Seg_min的染色体片段值Total_min,
4.4执行如下操作,对Seg_max和Seg_min进行基因迁移优化:
4.4.1令q=1;
4.4.2计算网格数目和sum:
4.4.3若sum≤κ,κ为平均负载,把Seg_max中的移动到Seg_min中,转第4.5步;否则,转4.4.4步;
4.4.4令q=q+1;
4.4.5若q>H,转第4.5步;否则转4.4.2步;
4.5令n=n+1;
4.6若n>popNum,转第五步;否则,转第4.2步;
第五步,条件判断:
5.1若iteNum大于IteMax,转第十一步;若iteNum小于等于IteMax,iteNum=iteNum+1,执行5.2;
5.2若Fopt满足式(2)的条件,转第十一步;若Fopt不满足式(2)的条件,执行5.3;
abs(κ-1/Fopt)/κ<ε (2)
其中abs(κ-1/Fopt)表示对κ-1/Fopt取绝对值;
5.3若Fopt满足式(3)的条件,式(3)表示Fopt的倒数等于最大基因,转第十一步;若Fopt不满足式(3)的条件,转第六步;
1/Fopt=max{E1,E2,…,EN} (3)
第六步,更新判断,方法是:
6.1若令nSame=0;否则令nSame=nSame+1;
6.2若nSameSameMax,令nSame=0,转第七步;否则转第八步;
第七步,种群更新,方法是:
7.1从输入文件中读取所有网格块,把所有网格块随机分配到M个进程,生成含popNum条染色体的种群PopTEMP,PopTEMP={R1,..,Rn...,RpopNum},PopTEMP中有popNum条染色体,所有染色体均有M个片段,对应M个进程;
7.2用步骤3.2得到的bestPop替换种群PopTEMP中的第一个染色体R1;
7.3令PopA=PopTEMP;
第八步,选择算子,方法是:
8.1生成空的临时种群PopTEMP;
8.2将bestPop插入PopTEMP;
8.3从种群PopA中随机复制一条染色体到PopTEMP,这样随机复制执行popNum-1次,获得含popNum条染色体的PopTEMP;
8.4令PopA=PopTEMP;
第九步,交叉算子,方法是:
9.1令n=1;
9.2生成[0,1]区间的随机数q,若qPcross,转9.10步,否则执行9.3步;
9.3从PopA随机选择两条父代染色体Ra和Rb,Ra和Rb的各染色体片段中的进程按进程号从小到大把基因依次组合成第一基因集合A和第二基因集合B;A、B均含有N个基因,编号为1至N;
9.4随机生成两个整数n1,n2,1≤n1≤n2≤N;复制A中第n1个到第n2个基因,得到第一基因子集合A1,复制B中第n1个到第n2个基因,得到第二基因子集合B1;这样集合A包含三个子集合,大小分别为n1-1,n2-n1+1,N-n2,大小为n2-n1+1的子集合正好是B1;
9.5把A中属于B1中的基因全部删掉,剩下n1-1+N-n2个基因,把剩下n1-1+N-n2个基因,分割成新集合C、D,C、D分别包含n1-1个和N-n2个基因;
9.6把C、B1和D按顺序拼成新的集合A2,A2包含N个基因;对应Ra中染色体片段的长度,把A2分割成第一子代染色体Sa,Sa中M个染色体片段的长度与Ra中M个染色体片段的长度一样;
9.7把B中属于A1中的基因全部删掉,剩下n1-1+N-n2个基因,分割成新集合E、F,E、F分别包含n1-1个和N-n2个基因;
9.8把E、A1和F按顺序拼成新的集合B2,B2包含N个基因;对应Rb中染色体片段的长度,把B2分割成第二子代染色体Sb,Sb中M个染色体片段的长度与Rb中M个染色体片段的长度一样;
9.9更新种群PopA:令Ra=Sa,Rb=Sb;
9.10令n=n+1;
9.11若n>popNum,转第十步,否则转第9.2步;
第十步,变异算子,转第三步;
第十一步,输出第3.2步得到的最优染色体bestPop,得到最好的负载平衡模式。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科技大学,未经中国人民解放军国防科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910076844.7/1.html,转载请声明来源钻瓜专利网。