学习-基于遗传算法的多目标优化算法

函数gamultiobj gamultiobj为基于遗传算法的多目标优化函数,在GADST工具箱中.下面是关于此函数的一些基本概念(了解即可):

1.支配dominate与非劣势non-inferior     如果个体p至少有一个目标比个体q好,而且个体p的所有目标都不必个体q的差,则称p dominates q,或者称q is dominated byp,也可以说,p is non-inferior to q. 2.序值rank和前端front     如果p支配q,那么p的序值比q的低。如果p和q互不支配,那么p和q有相同的序值。序值为1的个体属于第一前端,序值为2的个体属于第二前端,以此类推。显然,第一前端是完全不受支配的. 3.拥挤距离crowding distance     用以表征个体间的拥挤程度,拥挤距离的值越大,个体间就越不拥挤。     需要注意的是,只有处于同一前端的个体间才需要计算拥挤距离。 4.最优前端个体系数ParetoFraction     定义为:最优前端中的个体在种群中所占的比例,其取值范围为0~1.
gamultiobj的调用 1.gamultiobj – Find minima of multiple functions using genetic algorithm

    This MATLAB function finds a local Pareto set X of the objective functions

    defined in FITNESSFCN.

   

    [x,fval]=gamultiobj(fitnessfcn,nvars,A,b,Aeq,beq,lb,ub,options)%x为pareto解集,fval为对应函数值,fitnessfcn为目标函数,nvars为变量数目,options为对多目标优化算法进行一些设置,options=gaoptimset(‘Paraml’,value1,’Param2′,value2,…);其余为约束     其中参数是如最优前端个体系数、拥挤距离计算函数…


MATLAB实现 在gamultiobj中,stepgamultiobj是关键函数
.

E.g.

function f=my_first_multi(x)

f(1)=x(1)^4-10*x(1)^2+x(1)*x(2)+x(2)^4-(x(1)^2)*(x(2)^2);

f(2)=x(2)^4-(x(1)^2)*(x(2)^2)+x(1)^4+x(1)*x(2);

>> fitnessfcn=@my_first_multi;%适应度函数

>> nvars=2;lb=[-5,-5];

>> ub=[5,5];

>> A=[];b=[];

>> Aeq=[];beq=[];

>>options=gaoptimset(‘ParetoFraction’,0.3,’PopulationSize’,100,’Generations’,200,’StallGenLimit’,200,’TolFun’,1e-100,’PlotFcns’,@gaplotgareto);

【ps】需要说明的是,由于算法的初始种群是随机产生的,因此每次运行的结果都不一样

    原文作者:遗传算法
    原文地址: https://blog.csdn.net/Weizhiyuan37927/article/details/77622136
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞