学习-基于遗传算法的多目标优化算法
函数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】需要说明的是,由于算法的初始种群是随机产生的,因此每次运行的结果都不一样
推荐阅读
- 由浅入深理解AOP
- 基于微信小程序带后端ssm接口小区物业管理平台设计
- 继续努力,自主学习家庭Day135(20181015)
- python学习之|python学习之 实现QQ自动发送消息
- 基于|基于 antd 风格的 element-table + pagination 的二次封装
- 一起来学习C语言的字符串转换函数
- 定制一套英文学习方案
- 漫画初学者如何学习漫画背景的透视画法(这篇教程请收藏好了!)
- 《深度倾听》第5天──「RIA学习力」便签输出第16期
- 如何更好的去学习