湖南工业大学学报Journal of Hunan University of TechnologyVol.21 No.2Mar. 2007
第21卷 第2期2007年3月收稿日期:2006-12-21作者简介:陈峰(1982-),男,湖南衡阳人,湖南工业大学硕士生,主要研究方向为计算机过程控制;
秦
斌(1963-),男,河北承德人,湖南工业大学教授,博士,硕士生导师,主要从事复杂系统建模与优化控制
方面的研究.
基于多目标优化的免疫遗传算法
在Matlab环境中的实现
陈
峰,秦
斌
(湖南工业大学 电气与信息工程学院,湖南株洲412008)
摘要:阐述了基于多目标优化的免疫遗传算法基本原理,合理地在抗原聚类算法中引入孤立度算法。在该算法中,将优化问题的可行解对应于抗体及pareto最优个体对应于抗原,并运用改进的抗原聚类算法不断更新抗原群中的抗原,从而得到分布均匀的pareto最优解。并探讨了在Matlab环境下应用免疫遗传算法实现多目标优化,主要对增强度计算、pareto求优、抗原聚类等进行了算法实现。并以实例说明其在Matlab环境中实现的可行性。
关键词:多目标优化;Matlab;pareto解;免疫遗传算法中图分类号:TP273+.5 文献标识码 :A 文章编号:1673-9833(2007)02-0092-04
Realization of Immune Genetic Algorithm Based on
Multi-Objective Optimization in Matlab
Chen Feng,Qin Bin
(College of Electric & Information Engineering ,Hunan University of Technology, Zhuzhou Hunan412008,China)
Abstract :The basic principle of immune algorithm based on multi-objective optimization is illustrated and in a isolationdegree algorithm is rationally lead into cluster algorithm. In algorithm, the feasible solutions are regarded as antibodies andpareto optimal solution antigens preserved in an antigen population updated by a improved cluster algorithm. Then, therealization ofmulti-objective optimization in Matlab environment by using Immune Genetic Algorithm is discussed, especiallyfor the algorithmic realizations of strength degree calculation, Pareto optimal solution, and hyper mutation. Finally, a practicalexample is made to illustrate the feasibility of the suggested algorithm in Matlab environment.
Key words:multi-objective optimization;Matlab;pareto optimal solution;Immune Genetic Algorithm
引言
许多现实中的决策问题都要考虑多个目标函数的同时优化问题,这类问题称之为多目标优化问题(Multi-Objective Optimization)。通常多目标问题中各个目标函数不可能找到使每个函数都同时满意的解,而只能是在各目标函数之间进行协调折衷[1]。在过去的一段时间里,国内外学者提出了许多的多目标优化算法。如文献[2]提出了SPEA充分利用pareto最优解的概
念,将种群的最优个体储存在种群外,通过不断更新
而获得pareto最优解,但该方法获得在各个子目标都同时达到最少值的pareto最优解所在区域内,所获pareto最优解较少;文献[3]提出了pareto遗传算法,可以搜索到整个pareto解集,但是解集分布极不均匀。本文中,将免疫遗传算法应用到多目标优化中,且将孤立度等概念应用到抗原聚类算法中,从而实现多目标优化,通过这种办法不仅能保存较好的pareto最优个体,而且pareto解集分布均匀,有利于决策者根据需
第2期93
要做出判断,选取合适的折衷解。
1
多目标优化免疫遗传算法
1.1
免疫算法的基本原理
在自然界的演化过程中,生物体通过遗传(后辈与父辈非常相似)、变异(后辈与父辈不完全相同)来适应外界环境,一代又一代地优胜劣汰,发展进化[4]。而由生物免疫原理可知:生物免疫系统通过细胞的分裂和分化,自动产生相应的抗体来抵御入侵生命体的抗原,这一过程称为免疫应答[5]。免疫遗传算法是模拟遗传和免疫应答原理而提出的一种算法,它将实际求解问题的目标函数作为抗原,将抗体作为问题的解[5]。由于免疫系统有学习、记忆、自适应、群体多样性等特点,因此,将免疫遗传算法用来解决实际问题已成为时兴的研究领域。
1.2多目标优化问题与免疫遗传算法知识点
1)具有m个变量,n个目标,t个约束条件的多
目标函数的数学描述[1]
:(VP) min fun(x) = [ fun1(x) , fun2(x) ,…
, funn(x)] ;s.t. gi (x)≤0, i=1,2,…, t ; x = [x1,
x2,…, xm]。2)pareto最优解
pareto解又称非劣解。如果我们设x = [x1, x2,…, xm]是(VP)的最优解,如果找不到一个解x*,使得fun(x*)≤fun(x)成立,也就是说找不到x*使得funi(x*)≤funi(x),i=1,2,…,n均成立,那么x就是pareto解。
3)增强度设x,y∈X,X是所有抗体的集合;若funi(x)≤funi(y),
i=1,2,…,n ,则x对应y的增强度dy(x)=1
;若funi(x)>funi(y),i=1,2,…,n,则x对应y的增强度dy(x)= -1
;其它的时候,则x对应y的增强度dy(x)=0。
4)孤立度
个体x的邻域U(x)定义为该群体中与个体y的距离小于δ的个体的集合,而个体x的孤立度定义为其邻域U(x)中个体的数目,即孤立度deg(x)=|U(x)|。孤立度越大,该个体对种群的贡献就越小,则个体被选择的机会也应越小[1]。
5)抗原聚类
随着迭代次数的增加,抗原群体的数目不断地增加,抗原与抗原之间具有相互竞争力,因此在不破坏抗原群的平衡特性条件下对抗原群进行聚类算法[6]。
其算法步骤为:
Step1 置初始抗原群为C,每个个体作为一个聚类群;
Step2 如果聚类群的个数小于等于N,跳到Step5,否则跳到下一步;
Step3 计算每2个抗原聚类群的欧几里得距离,
即计算||paretoi
- paretoj|| ;Step4 找出抗原聚类群中距离最少的2个聚类
群,将之合并为一个大的聚类群。如果聚类群的个数大于N,则跳到第3步;
Step5 对于每一个聚类群,根据孤立度的大小将孤立度大的个体移出聚类群;
Step6 将每个聚类群中个体集合起来组成新的抗原群。
我们根据基于多目标的免疫遗传算法原理[7]就可以得出程序流程图,如图1所示:
6)免疫遗传算法的主要思想
充分运用pareo最优解的概念,通过复制抗体群中最优个体到抗原群,在抗原群中通过抗原聚类算法来达到更新抗原群的pareto解并能均匀分布。将抗原群
图1程序流程图
Fig. 1Program flow diagram
陈峰,秦斌 基于多目标优化的免疫遗传算法在Matlab
环境中的实现
湖南工业大学 学 报
942007年
作用于抗体群,选择与当前抗原群亲和力高的抗体进行复制,突变;而亲和力低的抗体进行相互抑制,并随机产生一定数量的新抗体加入抗体群中,形成新的抗体群。即抗体群→亲和力选择→复制→突变→免疫选择+未被选择的抗体进行相互抑制得到的抗体群+随机产生的新抗体→下一代抗体。而在抗原群中即抗原群→抗原聚类算法→新一代抗原群。
2算法实现
Matlab作为优秀的应用软件,它有很多由系统提供的处理矩阵的现成的函数,因此可以大大减少程序量,使程序简单易懂。用Matlab进行编程有简单、简短等优势,虽然与c语言等高级语言相比存在着运行效率低的缺陷,但对于运算效率要求不太高的场合非常合适。在很多文献中都有用Matlab实现标准遗传操作(选择,交叉,变异)、单目标免疫算法的论述[5,6],本文主要是基于多目标优化的免疫遗传算法在Matlab中实现,在这里我只就多目标优化免疫遗传算法中的独到之处进行介绍,例如:增强度计算,pareto求优,聚类算法。
2.1对所有的抗体求其增强度值
其中:fun是目标函数,strvalue是种群的增强度。function [strvalue]=strength(fun) //增强度计算,fun=[fun
1
,
fun
2
]是目标函数。
[px,py]=size(fun);
strvalue=zeros(px,1);
for i=1:px
for j=1:px
b=fun(i,:)<=fun(j,:);
if all(b)==1
strvalue(i)=strvalue(i)+1;
else if any(b)==0
strvalue(i)=strvalue(i)-1;
else
strvalue(i)=strvalue(i);
end
end
end
2.2pareto解集求优
增强度最大所对应的抗体存入pareto解集中,再对解集进行去劣存优,找出非支配解。
其中:参数bestindividual是增强度最大的抗体,length是每个变量所对应的染色体的编码长度,calobjvalue函数的功能是实现目标函数的计算。
function[pareto]=keepexcellent(pareto,bestindividual,length) pareto=vertcat(pareto,bestindividual);
fun3=calobjvalue(pareto,length); //计算pareto解集中的目标函数值
i=1;
[px,py]=size(pareto);
while i<=px
for j=1:1:px //如果第i行所有的变量都大于第j行变量
if i ̄=j&all(fun3(i,:)>=fun3(j,:))==1
fun3(i,:)=[]; //fun3中第i行变量删除
pareto(i,:)=[]; // pareto中第i行变量删除
px=px-1;
break // 终止最内的一个循环
end
end
i=i+1;
end
2.3抗原聚类实现
将孤立度概念引入抗原聚类算法中,根据孤立度大小来实现抗原聚类,这样找出的pareto解集分布更均匀。
其中:参数length是每个变量对应的染色体的编码长度,Calobjvalue函数的功能是实现目标函数的计算。function [pareto]=clustering(pareto,length)
fun9=calobjvalue(pareto,length); //计算函数值
[px,py]=size(pareto);
if px>30 // 本例中初始设置的聚类群体个数
a=fun9(2,:)-fun9(1,:);
minvalue=norm(a);
b=[pareto(1,:);pareto(2,:)];
for i=1:px-1 //找出欧里几何距离最少的二个聚类群体进行合并
for j=i+1:px
c=fun9(j,:)-fun9(i,:);
d=norm(c);
if d<minvalue
minvalue=d;
b=[pareto(i,:);pareto(j,:)];
end
end
end
[m,n]=size(b); //计算群体孤立度,将孤立度大的个体移出抗原群
fun10=calobjvalue(b,length); //二个欧里几何距离最少的个体组成的新群体
e=1;f=1; // 计算新群体中个体的孤立度
for i=1:px
if norm(fun9(i,:)-fun10(1,:))<=0.10
e=e+1;
第2期95
end
if norm(fun9(i,:)-fun10(2,:))<=0.10 f=f+1; end
end
for i=1:px //比较新群体个体孤立度,将孤立度大的个体移出pareto解集
if e>=f&pareto(i,:)==b(1,:) pareto(i,:)=[]; breakend
if e<f&pareto(i,:)==b(2,:) pareto(i,:)=[]; breakendendend
3
数值模拟
为了验证免疫遗传算法应用在多目标优化问题上
的有效性,本文选取了一个通用的测试问题。
(VP) min Fun(x)=[fun1(x) , fun2(x)] ;fun1(x)=x1+2*x2 ; fun2(x)=-x1-x2 ;0≤x1≤1,0≤x2≤1;x=[x1 , x2] 。
图2是普通多目标优化算法得到的pareto解集。采用免疫遗传算法求解,取初始种群个数popsize=100、染色体编码总长度chromlength=20、每个变量的染色体编码长度length=10、克隆选择算子pks=0.085、免疫选择算子pis=0.095、新增随机抗体算子pr=0.01、迭代次数为1 000次,其运行结果如图3所示。对比图2与图3可知:免疫遗传算法比普通的多目标优化算法搜索的pareto解集分布均匀,方便决策者根据自己的需要做出让自己满意的结果。而普通的多目标优化算法得出的解集中在子目标的最优解附近,整体分布不均匀。
4
结论
本文用Matlab语言编写了基于多目标优化的免疫遗传算法程序,并给出了增强度计算、pareto最优解、抗原聚类等的Matlab程序代码。程序在Matlab6.5.1中调试通过,说明了用Matlab实现基于多目标优化的免疫遗传算法的可行性,且从数据上表明免疫遗传算法在解决多目标优化问题时优于普通多目标优化算法。从其优化过程来看,虽然迭代次数较大,其所需时间却要小于普通多目标优化算法,这说明利用免疫遗传算法研究多目标优化问题具有一定的先进性。另外,对于将免疫遗传算法应用到工程实践如PID参数整定中还需进一步探讨。参考文献:
[1]
孟红云,刘三阳. 基于自适应领域选择的多目标免疫进化算法[J]. 系统工程与电子技术,2004,26(8):1107-1111.[2]Zitzler E,Thiele L. Evolution Algorithms for Multiobjective
Optimization. Methods and Application[D]. Zurich: SwissFederal Institute of Technology,1999.[3]
朱学军,攀登,王安麒,等. 混合变量多目标优化设计的pareto遗传算法实现[J].上海交通大学学报,2000,34(3):411-414.
[4]李人厚. 智能控制理论和方法[M]. 西安:西安电子科技大
学出版社,1999:169-173.[5]
陈丽安,张培铭. 免疫遗传算法在MATLAB环境中的应用[J]. 福州大学学报:自然科学版,2004,32(5):554-559.[6]Abido M A. Enviromental/Economic Power Dispatch Using
Multiobjective Evolutionary Algorithms[J]. IEEETRANSACTIONS ON POWER SYSTEM,2003,18(4):1529-1537.[7]
黄席樾,张著洪. 基于免疫应答原理的多目标优化免疫算法及应用[J]. 信息与控制,2003,32(3):209-213.[8]
谭湘强,钟映春,张学习,等. 基于MATLAB遗传算法(SGA)实现[J]. 广东自动化与信息工程,2002(2):7-9.
图3 免疫遗传算法所获的pareto 最优解
Fig. 3 pareto -optimal solution of immune genetic algorithm
图2普通算法所获得的pareto 解集
Fig. 2pareto -optimal solution of simple algorithm
陈峰,秦斌 基于多目标优化的免疫遗传算法在Matlab
环境中的实现