多目标优化实例和matlab程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
NSGA-II 算法实例
目前的多目标优化算法有很多, Kalyanmoy Deb 的带精英策略的快速非支配排序遗传算法(NSGA-II) 无疑是其中应用最为广泛也是最为成功的一种。本文用的算法是MATLAB 自带的函数gamultiobj ,该函数是基于NSGA-II 改进的一种多目标优化算法。
一、 数值例子
多目标优化问题
424221*********
4224212212112
12min (,)10min (,)55..55
f x x x x x x x x x f x x x x x x x x x s t x =-++-=-++-≤≤⎧⎨-≤≤⎩ 二、 Matlab 文件
1. 适应值函数m 文件:
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);
2. 调用gamultiobj 函数,及参数设置:
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)
3. 计算结果
-40-35-30-25-20
-15-10-5
-50
5
10
15
202530
35
Objective 1O b j e c t i v e 2
Pareto front
图1. 实例1对应的Pareto 前沿图
从图1可以看出Pareto 前分布较均匀,多样性较好。