NSGA-II 算法实例
目前的多目标优化算法有很多, Kalyanmoy Deb的带精英策略的快速非支配排序遗传算法(NSGA-II) 无疑是其中应用最为广泛也是最为成功的一种。本文用的算法是MATLAB自带的函数gamultiobj,该函数是基于NSGA-II改进的一种多目标优化算法。 一、 数值例子
多目标优化问题
42minf1(x1,x2)?x14?10x12?x1x2?x2?x12x242minf2(x1,x2)?x2?x12x2?x14?x1x2??5?x1?5s.t.???5?x2?5二、
Matlab文件 function y=f(x) 1. 适应值函数m文件:
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); 2. 调用gamultiobj函数,及参数设置:
clear clc
fitnessfcn=@f; %适应度函数句柄 nvars=2; %变量个数 lb=[-5,-5]; %下限 ub=[5,5]; %上限
A=[];b=[]; %线性不等式约束 Aeq=[];beq=[]; %线性等式约束
options=gaoptimset('paretoFraction',,'populationsize',100,'ge
nerations',200,'stallGenLimit',200,'TolFun',1e-100,'PlotFcns',@gaplotpareto);
% 最优个体系数paretoFraction为;种群大小populationsize为100,最大进化代数generations为200,
% 停止代数stallGenLimit为200, 适应度函数偏差TolFun设为1e-100,函数gaplotpareto:绘制Pareto前端
[x,fval]=gamultiobj(fitnessfcn,nvars,A,b,Aeq,beq,lb,ub,option
s)
3. 计算结果
353025Pareto frontObjective 220151050-5-40-35-30-25-20Objective 1-15-10-5图1. 实例1对应的Pareto前沿图
从图1可以看出Pareto前分布较均匀,多样性较好。