
http://www.ma-xy.com
1.5 MATLAB 应用实例 第一章 多目标规划
得到最优解集 S
1
,然后,对于 j = 2, 3, · · · , p,依次求解单目标优化问题
min
x∈S
j−1
f
j
(x)
得到最优解集 S
j
,然后,将 S
j
(j = P ) 中的点作为 MOP 的最优解。
1.5 MATLAB 应用实例
MATLAB 可以使用 gamultiobj 命令求解多目标规划问题,并且 gamultiobj 使用多目标遗
传算法 IENSGA(XXXV1) 求解多目标问题。gamultiobj 的命令格式如下:
[x,fval]=gamultiobj(tnessfcn,nvars,A,b,Aeq,beq,lb,ub,options)
其中:tnessfun 为目标函数;nvars 为变量个数;A,b 为 Ax ⩽ b;Aeq,beq 为 Aeqx = beq;lb,ub
为 lb ⩽ x ⩽ ub。下面,我们介绍函数 gamultiobj 中的一些基本概念:
¬个体、种群、代、选择、交叉、变异和交叉后代比例等放在 GA 章节中介绍;
支配 (dominate) 与非劣 (non-inferior):在多目标优化问题中,如果解 x
1
∈ R
n
至少有一个目
标比解解 x
2
∈ R
n
好,而且个体 x
1
的所有目标都不比解 x
2
差,那么称解 x
1
支配解 x
2
,或者
x
1
非劣于 x
2
。
®拥挤距离 (crowding distance):拥挤距离是用来计算某前端中的某个解 x 与该前端中其它解之
间的距离,用以表征解之间的拥挤程度,且只有处于同一前端的解之间才需要计算拥挤程度。
¯最优前端个体系数 (Pareto Fraction):最优前端个体系数定义为最优前端中的解在种群中所占
的比例。
作为 MATLAB 的应用实例,多目标遗传算法如下多目标规划问题
min f
1
= x
4
1
− 10x
2
1
+ x
1
x
2
+ x
4
2
− x
2
1
x
2
2
min f
2
= x
4
2
− x
2
1
x
2
2
+ x
4
1
+ x
1
x
2
s.t.
5 ⩽ x
1
⩽ 5
− 5 ⩽ x
2
⩽ 5
求解程序如下
1 fu nc tio n f = mult io bj (x )
2 f ( 1) = x( 1) ^4−10*x (1 )^2+x(1) *x (2 )+x (2)^4−(x (1 ) ^2) *( x( 2) ^2) ;
3 f ( 2) = x( 2) ^4−(x (1) ^2) *(x (2) ^2)+x (1 )^4+x (1) *x (2) ;
4 end
5 f i t n e s s f c n = @multiobj
6 nvars = 2 ;
7 lb = [ −5 , −5];
8 ub = [ 5 , 5 ] ;
9 A= [ ] ; b= [ ] ;
10 Aeq= [ ] ; beq = [ ] ;
11 opti on s = gaoptimset ( ’ ParetoFraction ’ , 0 . 3 , ’ Popu lationSi za ’ ,1 00 , ’ Generations ’ , 200 , ’
StallGenLimit ’ ,200 , ’ TolFun ’ , le −100, ’ PlotFcns ’ , @gaplotpareto ) ;
12 [ x , f v a l ] = gamultiobj ( f i t n e s s f c n , nvars ,A, b , Aeq , beq , lb , ub , o pti on s ) ;
13
http://www.ma-xy.com 6 http://www.ma-xy.com