多目标优化-Pareto遗传算法

多目标优化的应用背景

工程实际中的许多优化问题是多目标的优化设计问题。通常情况下多个目标是处于冲突状态的,不存在一个最优设计使所有的目标同时达到最优,一个目标性能的改善,往往以其它一个或多个目标性能的降低为代价。无论采用自适应遗传算法还是其它在标准遗传算法基础上经过改进的遗传算法,如果采用加权组合法等将多目标转化为单目标的处理方法,就无法充分发挥遗传算法的优势。如果把遗传 算法与适用于多目标处理的几此协方法相结合,就能完全发挥遗传算法在多目标优化设计中的作用。

遗传算法

自适应遗传算法

单目标优化中,遗传算法是 以二进制 为基础 的遗传算法,它采用赌盘选择方式和单点遗 传操作。为了克服标准遗传算法容易导致进化过程中出现过早收敛和停滞现象的缺点,后期进行了一些改进。

Pareto遗传算法

对一个多目标优化问题而言,其Pareto最优解 不是唯 一的,而是多个解并构成 Parteo最优解集。在可行解集中没有比Pareto最优解所对应的个体性能更好的解,各Pareto最优解之间也没有优劣之别。由于 Paerot最优解集 中的任何解都可能成为最优解,因此设计者可以根据自己的意愿和对目标的重视程度进行设计。

Pareto遗传算法的求解

可以采用MATLAB的工具箱,gamultiobj函数
举个栗子

// An highlighted block
clear 
clc 
fitnessfcn=@f;  %适应度函数句柄
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',@gaplotpareto); 
% 最优个体系数 paretoFraction 为 0.3;种群大小 populationsize 为 100,最大进化代数 generations 为 200% 停止代数 stallGenLimit 为 200,适应度函数偏差 TolFun设为 1e-100,函数 gaplotpareto:绘制 Pareto 前端
[x,fval]=gamultiobj(fitnessfcn,nvars,A,b,Aeq,beq,lb,ub,options) 
function y=f(x)
y(1)=x(1)^4-10*x(1)^2+x(1)*x(2)+x(2)^4-x(1)^2*x(2)^2; 
y(2)=x(2)^4-x(1)^2*x(2)^2+x(1)^4+x(1)*x(2); 
end

更对信息可参考文献:多目标优化设计中的Pareto遗传算法

你可能感兴趣的:(多目标优化-Pareto遗传算法)