本发明涉及武器-目标分配技术领域,特别是一种面向资源分配的组合混沌遗传算法。
背景技术:
资源分配问题是指在满足资源约束的前提下,决策者将资源合理地分配给使用者,从而使投放资源的总效果最优。资源的有限性与用户数量的快速增加、人们对服务质量要求的不断提高之间的矛盾日益凸现,能否对有限资源进行科学管理和分配,已经成为先进的技术能否有效施行的瓶颈问题,是在国民经济和社会发展中迫切需要解决的关键科技问题。
wta问题即武器目标分配问题,是一种典型的资源分配问题,研究针对多个威胁目标,作战方如何分配现有的武器,从而最大限度地消除敌方威胁,达到最佳的作战效果。研究wta问题,特别是大规模的wta问题,在可接受的时间内寻求较优的武器目标分配方案,提高作战效能,是作战指挥和军事仿真的一个重要的研究热点。针对一般性的资源分配问题,目前主要的求解方法是启发式算法。基本遗传算法通常是对wta决策矩阵采用固定长度的二进制或实数编码方法,并采用罚方法转化为无约束问题,采用标准交叉和变异算子进行计算。虽然这种操作方式简单,但不能够很好的反映所求问题的特定知识,遇到大规模wta问题时,罚函数选择不当,算法的搜索空间急剧扩大,性能大大降低。同时,未对wta问题进行特别设计的遗传操作使得在算法的进化过程中很大程度上属于盲搜索状态,从则导致搜索效率低下。
技术实现要素:
本发明的目的在于提供一种高效、精确的面向资源分配的组合混沌遗传算法。
实现本发明目的的技术解决方案为:一种面向资源分配的组合混沌遗传算法,包括以下步骤:
步骤1、设置参数,包括种群大小、最大代数、交叉率、变异率,并初始化各个参数,令种群gen=0;
步骤2、根据特定资源分配问题,产生混沌序列,然后根据特定资源分配问题规模,基于混沌序列产生初始种群;
步骤3、设置最大遗传代数max_gen,判断gen是否大于max_gen,如果gen>max_gen,则转至步骤11;否则转至步骤4;
步骤4、令gen←gen+1;
步骤5、进行繁殖操作;
步骤6、进行杂交操作;
步骤7、进行变异操作;
步骤8、采用局部搜索启发式方法进行局部寻优;
步骤9、保留当前种群最好的染色体;
步骤10、返回执行步骤2;
步骤11、停止计算过程,输出计算结果。
进一步地,步骤2所述的根据特定资源分配问题,产生混沌序列,然后根据特定资源分配问题规模,基于混沌序列产生初始种群,具体如下:
使用logistic映射和kent映射产生的组合混沌序列z,生成遗传算法中的初始种群;初始种群的每个个体由不同初值的组合混沌映射生成,组合混沌映射产生的组合混沌序列为个体对应位置上的染色体赋值;
logistic映射函数:
dn+1=f(μ,d)=μdn(1-dn)
其中μ为控制参数,取值范围为0~4;d是迭代参数,dn是第n次logistic映射迭代值;
kent映射:
其中c∈(0,1),c是常数;gn表示第n次kent映射的值;
组合混沌序列:
zn=(dn+gn)-[dn+gn]
zn是第n代组合混沌序列、[dn+gn]代表dn+gn下取整;
生成初始种群p0:
p0=[t×z]
其中t为目标数。
进一步地,步骤5所述的进行繁殖操作,具体如下:
所述的繁殖操作采用区段选择的方法,首先根据适应值对个体排序,并根据检验函数和适应度函数从所有个体中选出设定比例的个体,其中适应度函数直接用目标函数代替,并且在处理约束式时不采用罚方法。
进一步地,步骤6所述的进行杂交操作,具体如下:
依据组合混沌序列,对染色体进行杂交的基因个数和位置进行选定,来进行杂交操作。
进一步地,步骤7所述的进行变异操作,具体如下:
利用组合混沌序列中的元素随机替换个体上的染色体:
设选出染色体序号为i,则染色体yi的变异运算如下:
其中,l是编码长度,di为变异的位数;
同时,变异值也是按照上述变异运算实现。
进一步地,步骤8所述的采用局部搜索启发式方法进行局部寻优,具体如下:
使用简化的二次插值法来求解连续的无约束全局优问题:
设到目前为止,种群中的最好染色体为ya(ya1,ya2,…,yal),然后在种群中随机选择两个不同的染色体yb(yb1,yb2,…,ybl)和yc(yc1,yc2,…,ycl),设ya、yb、yc适应度分别为fit(ya),fit(yb),fit(yc),由下面的二次插值公式,得到具有近似极小值的染色体ys(ys1,ys2,…,ysl):
其中i=1,2,…l;
然后进行截断取整操作:
其中i=1,2,…l,上横线代表取上整数,下横线代表取下整数;
最后与种群中最差的个体比较优劣,若yq优于最差个体,则代替最差个体进入种群。
本发明与现有技术相比,其显著优点为:(1)针对特定的资源分配问题的具体应用对染色体编码的方式进行改进,并采用dc方法直接比较优劣的策略处理约束,有效减少了资源分配模型的约束数目,提高了种群质量;(2)利用组合混沌序列初始化种群,改进选择、交叉和变异三种操作,结合局部搜索启发式方法,有效地避免了早熟收敛,提升了算法的全局搜索能力和计算效率。
附图说明
图1是本发明面向资源分配的组合混沌遗传算法的流程示意图。
图2是本发明面向资源分配的组合混沌遗传算法中武器目标分配问题描述图。
图3是本发明具体实施方式中染色体编码1的编码示意图。
图4是本发明具体实施方式中染色体编码2的编码示意图。
图5是本发明具体实施方式中解码过程示意图。
图6是本发明实施例中问题规模w=150,t=200,种群数40,最大世代数100的适应度函数和检验函数仿真图,其中(a)是适应度函数仿真图,(b)是检验函数仿真图。
图7是本发明实施例中问题规模w=150,t=200,种群数80,最大世代数100的适应度函数和检验函数仿真图,其中(a)是适应度函数仿真图,(b)是检验函数仿真图。
具体实施方式
本发明面向资源分配的组合混沌遗传算法,根据特定的资源分配问题,设计了相适应的编码策略;采用直接比较法处理分配约束,将分配问题转换成无约束优化问题;设计了相应的组合混沌序列发生器,提高了种群质量,加快了收敛速度;在选择和杂交操作中采用区段选择和竞争选择组合方法;在变异操作中利用组合混沌序列确定染色体发生变异的位置和发生变异的基因位的值;在结合二次插值法进行局部搜索提高了算法性能。通过该方法在可接受的时间内求得较高质量的解。
结合图1,本发明面向资源分配的组合混沌遗传算法,包括以下步骤:
步骤1、设置参数,包括种群大小、最大代数、交叉率、变异率,并初始化各个参数,令种群gen=0;
步骤2、根据特定资源分配问题,产生混沌序列,然后根据特定资源分配问题规模,基于混沌序列产生初始种群;
步骤3、设置最大遗传代数max_gen,判断gen是否大于max_gen,如果gen>max_gen,则转至步骤11;否则转至步骤4;
步骤4、令gen←gen+1;
步骤5、进行繁殖操作;
步骤6、进行杂交操作;
步骤7、进行变异操作;
步骤8、采用局部搜索启发式方法进行局部寻优;
步骤9、保留当前种群最好的染色体;
步骤10、返回执行步骤2;
步骤11、停止计算过程,输出计算结果。
进一步地,步骤2所述的根据特定资源分配问题,产生混沌序列,然后根据特定资源分配问题规模,基于混沌序列产生初始种群,具体如下:
使用logistic映射和kent映射产生的组合混沌序列z,生成遗传算法中的初始种群;初始种群的每个个体由不同初值的组合混沌映射生成,组合混沌映射产生的组合混沌序列为个体对应位置上的染色体赋值;
logistic映射函数:
dn+1=f(μ,d)=μdn(1-dn)
其中μ为控制参数,取值范围为0~4;d是迭代参数,dn是第n次logistic映射迭代值;
kent映射:
其中c∈(0,1),c是常数;gn表示第n次kent映射的值;
组合混沌序列:
zn=(dn+gn)-[dn+gn]
zn是第n代组合混沌序列、[dn+gn]代表dn+gn下取整;
生成初始种群p0:
p0=[t×z]
其中t为目标数。
进一步地,步骤5所述的进行繁殖操作,具体如下:
所述的繁殖操作采用区段选择的方法,首先根据适应值对个体排序,并根据检验函数和适应度函数从所有个体中选出设定比例的个体,其中适应度函数直接用目标函数代替,并且在处理约束式时不采用罚方法。
进一步地,步骤6所述的进行杂交操作,具体如下:
依据组合混沌序列,对染色体进行杂交的基因个数和位置进行选定,来进行杂交操作。
进一步地,步骤7所述的进行变异操作,具体如下:
利用组合混沌序列中的元素随机替换个体上的染色体:
设选出染色体序号为i,则染色体yi的变异运算如下:
其中,l是编码长度,di为变异的位数;
同时,变异值也是按照上述变异运算实现。
进一步地,步骤8所述的采用局部搜索启发式方法进行局部寻优,具体如下:
使用简化的二次插值法来求解连续的无约束全局优问题:
设到目前为止,种群中的最好染色体为ya(ya1,ya2,…,yal),然后在种群中随机选择两个不同的染色体yb(yb1,yb2,…,ybl)和yc(yc1,yc2,…,ycl),设ya、yb、yc适应度分别为fit(ya),fit(yb),fit(yc),由下面的二次插值公式,得到具有近似极小值的染色体ys(ys1,ys2,…,ysl):
其中i=1,2,…l;
然后进行截断取整操作:
其中i=1,2,…l,上横线代表取上整数,下横线代表取下整数;
最后与种群中最差的个体比较优劣,若yq优于最差个体,则代替最差个体进入种群。
下面结合附图和实施例对本发明作进一步的说明:
实施例
wta问题即武器目标分配问题,是一种典型的资源分配问题,研究针对多个威胁目标,作战方如何分配现有的武器,从而最大限度地消除敌方威胁,达到最佳的作战效果。wta问题可以描述如下:假设敌方有t个威胁目标对我方进行攻击,我方有w种武器进行还击,xij表示还击第j个威胁目标的第i类武器的数量,作战方需要根据战场态势,及时确定较优的打击分配方案x=(xij),i=1,2,...,w;j=1,2,...t,如图2所示。
wta问题的模型主要取决于目标函数的选择和约束条件的确定。为了建立武器目标分配问题的模型,首先定义以下的符号:
w:武器的种类数量;t:所需打击目标的数量;uj:击毁目标j的价值;wi:第i类武器的数量;pij:第i类武器对第j个目标的单位毁伤概率;xij:攻击第j个目标的第i类武器的数量;
根据决策人员的不同意图,制定不同的交战策略,确定目标函数和约束条件。在此我们选取极大化威胁目标毁伤价值作为目标函数,选取武器弹药数量约束和必打目标最少打击弹数约束作为约束条件,可以得到规定了必打目标及最少打击弹数的极大化威胁目标毁伤价值的武器目标分配模型:
xij≥0,i=1,2,...,w;j=1,2,...,txij∈z
模型(p)是一个非线性整数规划模型,一般具有如下特征:np完全、非连续和目标函数的非线性。
采用特定的编码策略,以待分配资源总个数
设定四类武器攻击6个目标,每类武器数目分别为3,5,4,3,染色体编码1如图3所示:染色体按武器类数分成4段,每段基因位数是此类武器的个数,基因值是分配的目标,a2=(y21,y22,y23,y24,y25)=(4,5,1,2,5),表示第二类武器分配给了目标4,5,1,2,5;
但是,从编码到解的映射却不满足不冗余性,会出现n对1的映射,在搜索过程中会浪费时间,这是造成遗传算法早熟收敛的原因之一。如图4所示:染色体编码2,a2=(y21,y22,y23,y24,y25)=(5,5,2,1,4),表示第二类武器分配给了目标5,5,2,1,4。
染色体1和2在基因型空间不一样,但是两个个体在表现型空间是一样的,因此在基因型空间中的距离度量无法将两个个体处理为相同的个体。编码时根据同时产生的附加码检验n对1的映射,去除多余映射。实验表明,随着武器目标数目的增长,这种出现n对1映射的现象减少,原因在于编码长度增加,重合的概率减少,故在武器目标数目达到一定规模可以忽略检验多对一映射这个步骤。
下面给出从基因型到表现性空间的映射的步骤:
1)设种群p{p1,p2…pm},m为种群规模;
2)对于每一个染色体pk,k∈(1,2…m),其分段形式
3)对各个基因段
遗传算法包括以下步骤:
步骤1、设置参数,包括种群大小、最大代数、交叉率、变异率,并初始化各个参数,令种群gen=0;
步骤2、根据特定资源分配问题,产生混沌序列,然后根据特定资源分配问题规模,基于混沌序列产生初始种群,具体如下:
(2.1)根据wta问题规模,采用zn=(dn+gn)-[dn+gn]生成混沌序列;
(2.2)利用混沌序列产生初始种群p0:p0=[t×z]。
步骤3、判断gen是否大于max_gen,如果gen>max_gen,则转至步骤11;否则转至步骤4;
步骤4、令gen←gen+1;
步骤5、进行繁殖操作,具体如下:
(5.1)计算当前种群的适应值和违反约束值;
(5.2)按选择准则升序排列,选取一定比例的个体;
(5.3)生成组合混沌序列;
(5.4)根据混沌序列继续选择个体,直到满足种群数,这里种群数目为2倍的初始种群数;
(5.5)组成新的pop并随即重排。
步骤6、进行杂交操作,具体如下:
(6.1)根据pop分成pop_size组,每组中有一对父辈;
(6.2)生成随机数r∈(0,1);
(6.3)如果r<pc,转至步骤6.4,否则,保留父辈;
(6.4)根据杂交算子,由p1和p2生成两个子代c1和c2代替父代;
(6.5)重复步骤6.2到步骤6.4pop_size次。
步骤7、进行变异操作,具体如下:
(7.1)生成随机数r∈(0,1);
(7.2)如果r<pm,转至步骤(7.3),否则,保留父辈,转至步骤(7.4),;
(7.3)根据变异算子,生成变异个体代替父体;
(7.4)重复步骤(7.1)到步骤(7.3)pop_size次。
步骤8、采用局部搜索启发式方法进行局部寻优;
步骤9、保留当前种群最好的染色体;
步骤10、返回执行步骤2;
步骤11、停止计算过程,输出计算结果。
算法的实现是利用matlab2009a完成,运行环境为:cpuintelcore2,主频2.52ghz,内存2gb,操作系统windowsxp;算例参数设置如下:uj∈[0.2,0.9],pij∈[0.3,0.9],tj∈[1,4],wj∈[10,20];算例的规模(w×t)从(10×10)到(200×300),变量数目从100个到60000个,种群规模是40,最大世代数50,交叉概率0.5,变异概率0.1。利用matlab在以上参数区间随机生成测试算例,算例的规模(w×t)从(10×10)到(200×200),整数变量的数量从100到40000个。
表1种群规模为40,最大世代数50
表1
表1结果表明,在不同规模的算例中,改进的混沌遗传算法结果均优于基本遗传算法和单一的混沌遗传算法,表1中----表示出现不可行解。当规模达到30000个变量以上,基本遗传算法和单一混沌遗传算法均出现不可行解。
在问题规模w=150,t=200,其他条件不变的情况下,三种算法分别在规模40、80,最大世代数50代、100代,分别运行10次,结果如表二。
表2在问题规模w=150,t=200算法性能比较
表2
结果显示在最大世代数50条件下,遗传算法和混沌遗传算法得到可行解的概率低。
结果表明,直接比较的组合混沌遗传算法,无论在最优解还是收敛性方面,都现出良好的性能。
图6(a)~(b)和图7(a)~(b)是问题规模w=150,t=200下,种群数分别是40和80,最大世代数100的条件下,单独运行五次,最好的适应度函数和检验函数图。图4检验函数图表明,直接比较的组合混沌遗传算法收敛快,在32代左右得到可行解,混沌遗传算法在60代左右得到可行解,基本遗传算法需要到85代得到可行解;适应度函数图表明组合混沌遗传直接算法所得到最优解也是优于前两种算法的。图7表明,种群数目增加到80,3种算法均在30-40代得到可行解,改进的组合混沌直接算法效果更好,但是表2中可以发现,种群数80,前两种算法均出现在50代前未出现可行解的情况。上述仿真证明了本发明所提的算法的有效性、合理性。通过构建高效的求解算法,在合理的时间内寻找问题的一个近似最优解或较好的可行解,有效提升资源分配和管理的科学水平;有效减少了资源分配模型的约束数目,提高了种群质量,加快了收敛速度,提升了算法的全局搜索能力和计算效率。