基于分解-并行遗传算法的约束优化算法技术领域
本发明属于进化算法技术领域,更为具体地讲,涉及一种基于分解-并行遗
传算法的约束优化算法。
背景技术
大规模约束优化问题是指在多维约束条件下求解目标函数的极值,是算法
技术领域中的一种常见问题。一般可以描述为:在如下不等式组的条件下求
minFobjective(X):
通常情况下,规模越大,约束条件越多必然会导致算法复杂度和计算时间
明显增加。要求在合理的时间内求解出满足所有要求问题最佳或近优解,一直
是优化智能算法领域中一项难点。
发明内容
本发明的目的在于克服现有技术的不足,提供一种基于分解-并行遗传算法
的约束优化算法,将约束优化问题划分为常规问题和子问题,在遗传算法求解
过程中对常规问题和子问题的种群之间进行交流,快速、准确地求得约束优化
问题的最佳或近优解。
为实现上述发明目的,本发明基于分解-并行遗传算法的约束优化算法包括
以下步骤:
S1:将约束优化算法所针对的问题分解成Q个子问题和1个常规问题,其
中Q个子问题所对应的决策变量子集和约束条件子集均不存在重叠,常规问题
包含所有决策变量和除Q个子问题约束条件子集以外的其他约束条件;
S2:采用遗传算法分别对步骤S1分解得到的Q个子问题进行并行迭代进化,
直到每个子问题所对应的种群中至少有一半以上的染色体满足该子问题的约束
条件;
S3:分别从当前每个子问题的种群中满足该子问题约束条件的染色体中随
机选择若干个个体,将来自不同子种群中的染色体按照子问题顺序依次组合起
来,构成多条长染色体,作为常规种群的初始种群;
S4:令进化代数t=1;
S5:采用遗传算法对Q个子问题和常规问题分别进行一次迭代进化,其中
常规问题的迭代进化中,交叉操作时,个体的交叉点只能为常规染色体中对应
子问题染色体的起始点,并且常规问题的染色体不进行变异操作;
S6:如果t%A=0,其中A表示种群迁移间隔,%表示求余运算,则进入步
骤S7,否则令t=t+1,返回步骤S5;
S7:各自从常规问题和每个子问题的当代种群中随机选择N个满足约束条
件的染色体作为被迁移染色体;将常规问题的N个被迁移染色体按照子问题进
行分段,共分为Q×N段,用每个子问题所对应的N个染色体段对该子问题种群
中N个被迁移染色体进行覆盖;将来自于Q个子问题的Q×N个被迁移染色体按
照子问题顺序组合成N个常规问题染色体,子问题中的每个被迁移染色体在组
合时只使用一次,然后将组合得到的N个常规问题染色体去补全常规种群中之
前被迁移走的N个染色体;
S8:如果t/A<T,T表示最大迁移次数,令t=t+1,返回步骤S5,否则从
常规问题的种群中选择最优染色体作为约束优化问题的解。
本发明基于分解-并行遗传算法的约束优化算法,将约束优化算法所针对的
问题分解成Q个子问题和1个常规问题,先采用遗传算法分解得到的Q个子问题
并行进行迭代进化,直到每个子问题所对应的种群中至少有一半以上的染色体
满足该子问题的约束条件,从子问题中选择满足约束条件的染色体按顺序组成
多条染色体,作为常规种群的初始种群;然后对常规问题和子问题进行并行遗
传算法迭代,达到迁移间隔时即分别进行前向迁移和后向迁移,当迁移次数达
到阈值,从常规问题的种群中选择最优染色体作为约束优化问题的解。本发明
采用化整为零的方式将大规模问题分解为很多子问题,然后应用并行遗传算法
与适当的种群交流操作最终求解出原始问题的最佳或近优解,可以显著地提高
求解速度。
附图说明
图1是本发明基于分解-并行遗传算法的约束优化算法的流程图;
图2是迁移操作图;
图3是本发明基于分解-并行遗传算法的约束优化算法的流程图;
图4是常规问题种群的适应度值变化曲线图。
具体实施方式
下面结合附图对本发明的具体实施方式进行描述,以便本领域的技术人员
更好地理解本发明。需要特别提醒注意的是,在以下的描述中,当已知功能和
设计的详细描述也许会淡化本发明的主要内容时,这些描述在这里将被忽略。
为了更好地说明本发明的技术方案,首先对本发明基于分解-并行遗传算法
的约束优化算法的分解-并行遗传算法进行简单介绍。
所谓“分解”是指在本发明中,将原始的约束优化问题分解成了Q个子问
题和1个常规问题。常规问题对应所有变量和部分约束条件,每个子问题则分
别对应不同的变量子集和约束条件。常规问题的目标函数就是原始约束优化问
题的目标函数;子问题的目标函数通常可以统一定义为满足各自约束条件的临
界情况。约束优化问题之所以能进行分解,是因为在大规模实际优化问题中,
大多数约束条件并未涉及到所有变量,因此这些约束条件可以根据他们各自所
涉及到的变量来组成多个小组。图1是约束优化问题分解的示例图。如图1所
示,约束优化问题可以被分解为一个更小的常规问题和Q个子问题。常规问题
的目标函数为约束优化问题的原本目标函数,其约束条件为原本约束条件的一
个子集,显然常规问题的目标函数包含了约束优化问题的所有变量。每个子问
题的目标函数中包含约束优化问题的所有变量的子集,约束条件为原本约束条
件的一个子集。记约束优化问题的变量集合为V,约束条件集合为C,常规问题
的变量集合为Vc,约束条件集合为SCc,第q个子问题的变量集合为SVq,约束
条件集合为SCq,q=1,2,…,Q,满足以下条件:
V=Vc=SV1∪SV2∪…∪SVQ
C=SCc∪SC1∪…∪SCQ
并且,子问题中任意两个变量集合和约束集合都没有交集,即当q′=q时,
SVq∩SVq′=0,且SCq∩SCq′=0。
所谓“并行”是指Q个子问题和1个常规问题分别采用遗传算法对其变量
形成的染色体进行迭代进化。由遗传算法进化趋势可知,一定代数过后,常规
问题能找到自身的最优解但该解并不一定满足子问题的约束;同样地,各项子
问题也都能找到满足自身约束的最优解但并不一定能满足常规问题的要求。因
此本发明增加了常规问题和子问题的种群之间的交流操作,即前向迁移和后向
迁移。图2是迁移操作图。如图2所示,具体的迁移操作为:
前向迁移:从常规问题的当代种群中随机选择一定数量满足约束条件的染
色体,将这些常规问题染色体按照子问题进行分段,得到与Q个子问题所对应
的一组染色体段,用这些染色体段对该子问题当代种群中染色体进行替换;
后向迁移:分别从Q个子问题的当代种群中随机选择若干个满足约束条件
的染色体,按照子问题顺序组合成一定数量的常规问题染色体,对常规问题当
代种群中染色体进行替换,同时补全常规种群大小,保证两项迁移操作后的子
问题和常规问题的种群大小均保持不变。
种群交流操作的优势在于:可以保证常规种群和各个子种群在能够找出自
身最优解的同时,还可以互相朝着满足对方约束要求的方向进化,进而最终能
够求解出原始大规模约束优化问题的最佳或近优解。但是经研究发现,后向迁
移后,常规种群的遗传算法需要稍作调整,以防止破坏从子种群迁移过来的原
本已经满足子染色体约束要求的染色体。具体调整方式主要包括两方面:
1)常规种群不能再有变异操作;
2)常规种群的交叉操作仅限于整段或整块的交叉,即交叉操作时个体所选
择的交叉点只能为常规染色体中对应子问题的起始点,即在每次交叉时,选择
一个子问题在常规染色体中的起始位置作为交叉点,也就是说常规种群的交叉
操作说仅仅是子问题染色体的不同结合方法的重组。
本发明根据以上原理说明和分析,提出了基于分解-并行遗传算法的约束优
化算法。图3是本发明基于分解-并行遗传算法的约束优化算法的流程图。如图
3所示,本发明基于分解-并行遗传算法的约束优化算法包括以下步骤:
S301:约束优化问题分解:
将约束优化算法所针对的问题分解成Q个子问题和1个常规问题,其中Q个
子问题所对应的决策变量子集和约束条件子集均不存在重叠,常规问题包含所
有决策变量和Q个子问题约束条件子集以外的其他约束条件。
S302:子问题种群初始化:
采用遗传算法对步骤S1分解得到的Q个子问题并行进行迭代进化,直到每
个子问题所对应的种群中至少有一半以上的染色体满足该子问题的约束条件,
以当前种群作为对应子问题的初始种群。
S303:常规问题种群初始化:
分别从每个子问题的初始种群中满足该子问题约束条件的染色体中随机选
择若干个个体,将来自不同子种群中的染色体按照子问题顺序依次组合起来,
构成多条染色体,作为常规问题种群的初始种群。
记第q个子问题的变量,即染色体所包含变量序列为其中
Mq表示第q个子问题的变量数量,那么常规问题的染色体所包含的变量序列为
对于子问题和常规问题,其种
群大小是根据问题寻优复杂度进行设置的。
S304:令进化代数t=1。
S305:进行一次迭代进化:
采用遗传算法对Q个子问题和常规问题分别进行一次迭代进化。在本发明
中,子问题采用常规遗传算法进行进化,即选择、交叉、变异。而常规问题的
迭代进化不采用常规遗传算法,在交叉操作时个体的交叉点只能为常规染色体
中对应子问题染色体的起始点,并且常规问题的染色体不进行变异操作。
S306:判断是否t%A=0,其中A表示种群迁移间隔,%表示求余运算,显
然t%A=0表示达到种群迁移间隔,需要进行种群迁移,因此进入步骤S307,否
则直接进入步骤S309。
S307:种群迁移:
分别从常规问题和每个子问题的当代种群中随机选择N个满足约束条件的
染色体作为被迁移染色体,同一组迁移操作中的前向迁移和后向迁移个体不能
重复,即刚迁移过来的个体不能马上又迁移回去。N的值是根据实际需要来确
定的,一般来说,为了兼顾迁移效果和运算效率,N占种群大小10%的至20%,
即种群的迁移率为10%至20%。当常规问题种群和子问题种群数量不同时,按
照最小种群数量计算N即可。
将常规问题的N个被迁移染色体按照子问题进行分段,共分为Q×N段,采
用与每个子问题所对应的N个染色体段对该子问题种群中的N个被迁移染色体
进行覆盖,即进行前向迁移。将来自于Q个子问题的Q×N个被迁移染色体按照
子问题顺序组合成N个常规问题染色体,为了防止种群过早收敛和陷入局部最
优,子问题中的每个被迁移染色体在组合时只使用一次,然后将组合得到的N个
常规问题染色体去补全常规种群中之前被迁移走的N个染色体,即实现后向迁
移。很显然,迁移后常规问题和子问题的种群大小保持不变。
然后进入步骤S308。
S308:判断是否t/A<T,T表示最大迁移次数,如果是,进入步骤S309,
否则进入步骤S310。
S309:令t=t+1,返回步骤S305;
S310:选择最优染色体。
从常规问题的种群中选择最优染色体作为约束优化问题的解。最优染色体
就是使常规问题的适应度函数值最大的染色体。
实施例
为了说明本发明的技术效果,采用一个具体的应用实例对本发明进行实施
验证。
在电子系统故障诊断领域的科学研究中,存在一种多工序测点选择问题。
一个待测电子系统往往会涉及多个测试模块,且在对这种系统的故障诊断过程
中,除了需要满足整体测试性指标之外,还必须满足每个模块的测试性指标。
以故障检测率FDR为例,其约束条件可以表示为:
其中,FDR表示整体故障检测率,FDR*表示整体故障检测率阈值,FDRpro(k)
表示第k个模块的故障检测率,表示第k个模块的故障检测率阈值。
故障检测率的计算公式如下:
其中,m表示可能发生的故障点数,n表示所有可用测点数;pi表示的是各
个可能发生故障的先验概率,i=1,2,…,m;bj是一个布尔值(0或1),表示对应
测点j是否被选中,选中则bj=1,否则bj=0,j=1,2,…,n。dij为测点tj能够检
测出对应故障fi的可能性。
表1是本实施例小型电子系统的测试性依赖矩阵。如表1所示,包括10个
可能的故障发生点和20个可用测点,共涉及4个测试模块。设置每个模块的故
障检测率阈值为0.6,整体故障检测率阈值为0.8。
表1
表1(续)
根据表1可知,本实施例中电子系统共包括四个测试工序,每个测试工序
之间相互独立,故可以直接划分为四个子问题,即Q=4,每个子问题对应一个
测试工序,每个测试工序的故障检测率阈值为0.6。本实施例中采用最小测试代
价作为目标函数,则第q个子问题的适应度函数可以表示为:
其中,|Tq|为第q个子问题(即工序q)上的可用测点数量,cj为测试测点tj
所需花费的代价。
常规问题的适应度函数为下:
其中n为常规问题所包含的测点数量,即n=20。
本实施例中,将常规问题和每个子问题的种群大小为30,迁移间隔设置为
5代。迁移染色体的数量N=4,即染色体的迁移率为4/30≈13%。
经过18次迁移操作(前向迁移和后向迁移各18次),所有种群并行进化了
90代,此时所得最小测试代价为3.6,测点序列为00010000100010000001,所
花时间为139ms,工序1-4的故障检测率分别为0.93,0.89,0.85和0.84,整体故障
检测率为0.99。
为了便于结果对比,采用穷举法找出了该测试依赖矩阵的最佳测点序列,
为00001000100010000001,对应最小测试代价为3.35,所花时间约为46.9s。此
时工序1、工序2、工序3和工序4的检测率分别为0.80,0.89,0.85和0.84,整体
检测率为0.99。
将本发明基于分解-并行遗传算法的约束优化算法的结果与穷举法所得的结
果相比较,可以看出:在分工序测点序列选择方面,本发明所得到的结果与真
实最佳结果相差两位;在测试代价方面,本发明比实际最小代价高了约7.5%;
但是在计算时间方面,分解—并行遗传算法仅仅为穷举法所花时间的1/337。因
此,对于多维约束的测点选择问题,本发明所取得的结果可以视为近优解,但
是在计算时间方面,大大低于穷举法所需要的时间。
为了更清晰地分析本发明算法的进化历程,本发明描绘了常规问题种群的
适应度值变化曲线图。图4是常规问题种群的适应度值变化曲线图。如图4所
示,在并行遗传算法中,常规种群的两适应度值约在35代左右就开始趋近,随
后每隔5代波动一次,但整体趋势良好,35代以后的大部分染色体基本可视为
该问题的近优解。而本实施例中迭代了90代,可见在计算时间方面还能进一步
缩短。
综上所述,本发明能以较快速度找出大规模约束优化问题的最优或近优解。
尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领域
的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对
本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定
的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发
明创造均在保护之列。