5.6 多目标规划问题
多目标规划是指在一组约束下,对多个不同目标函数进行优化。它的一般形式为 min[f1(x),f2(x),L,fm(x)]
sub.to gj(x)≤0j=1,2,L,p
其中:x=(x1,x2,L,xn)。
在同一约束下,当目标函数处于冲突状态时,不存在最优解x使所有目标函数同时达到最优。此时,我们使用有效解,即如果不存在x∈S,使得fi(x)≥fi(x*),i=1,2,…m, 则称x*为有效解。
在MATLAB中,多目标问题的标准形式为
minimizeγ x,γ
sub.to F(x)−weight⋅γ≤goal
C(x)≤0
Ceq(x)=0
A⋅x≤b
Aeq⋅x=beq
lb≤x≤ub
其中:x、b、beq、lb、ub是向量;A、Aeq为矩阵;C(x)、Ceq(x)和F(x)是返回向量的函数;F(x)、C(x)、Ceq(x)可以是非线性函数;weight为权值系数向量,用于控制对应的目标函数与用户定义的目标函数值的接近程度;goal为用户设计的与目标函数相应的目标函数值向量;γ为一个松弛因子标量;F(x)为多目标规划中的目标函数向量。
在MATLAB5.x中,它的最优解由attgoal函数实现。
函数 fgoalattain
格式 x = fgoalattain(fun,x0,goal,weight)
x = fgoalattain(fun,x0,goal,weight,A,b)
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq)
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub)
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon)
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon,options)
[x,fval] = fgoalattain(…)
[x,fval,attainfactor] = fgoalattain(…)
[x,fval,attainfactor,exitflag] = fgoalattain(…)
[x,fval,attainfactor,exitflag,output] = fgoalattain(…)
[x,fval,attainfactor,exitflag,output,lambda] = fgoalattain(…)
参数说明:
x0为初始解向量;
fun为多目标函数的文件名字符串,其定义方式与前面fun的定义方式相同; goal为用户设计的目标函数值向量;
weight为权值系数向量,用于控制目标函数与用户自定义目标值的接近程度;
A、b满足线性不等式约束A⋅x≤b,没有时取A=[ ],b=[ ];
Aeq、beq满足线性等式约束Aeq⋅x=beq,没有时取Aeq=[ ],beq=[ ];
lb、ub为变量的下界和上界:lb≤x≤ub;
nonlcon的作用是通过接受的向量x来计算非线性不等约束C(x)≤0和等式约束
Ceq(x)=0分别在x处的值C和Ceq,通过指定函数柄来使用。
如:>>x = fgoalattain(@myfun,x0,goal,weight,A,b,Aeq,beq,lb,ub,@mycon),
先建立非线性约束函数,并保存为mycon.m:function [C,Ceq] = mycon(x)
C = … % 计算x处的非线性不等式约束C(x)≤0的函数值。
Ceq = … % 计算x处的非线性等式约束Ceq(x)=0的函数值。
options为指定的优化参数;
fval为多目标函数在x处的值;
attainfactor为解x处的目标规划因子;
exitflag为终止迭代的条件;
output为输出的优化信息;
lambda为解x处的Lagrange乘子
例5-14 控制系统输出反馈器设计。
设如下线性系统
&=Ax+Bu x
y=Cx
0⎤⎡−o.50⎡10⎤⎡100⎤其中:A=⎢0−210⎥ B=⎢−22⎥ C=⎢⎥ ⎢⎥⎢⎥001⎣⎦⎢⎢1−2⎥⎣0⎦⎣01⎥⎦
要求设计输出反馈控制器K,使闭环系统
&=(A+BKC)x+Bu x
y=Cx
在复平面实轴上点[-5,-3,-1]的左侧有极点,并要求 −4≤Kij≤4(i,j=1,2)
解:上述问题就是要求解矩阵K,使矩阵(A+BKC)的极点为[-5,-3,-1],这是一个多目标规划问题。
先建立目标函数文件,保存为eigfun.m:
function F = eigfun(K,A,B,C)
F = sort(eig(A+B*K*C)); % 估计目标函数值
然后,输入参数并调用优化程序:
A = [-0.5 0 0; 0 -2 10; 0 1 -2];
B = [1 0; -2 2; 0 1];
C = [1 0 0; 0 0 1];
K0 = [-1 -1; -1 -1]; % 初始化控制器矩阵
goal = [-5 -3 -1]; % 为闭合环路的特征值(极点)设置目标值向量
weight = abs(goal) % 设置权值向量
lb = -4*ones(size(K0)); % 设置控制器的下界
ub = 4*ones(size(K0)); % 设置控制器的上界
options = optimset('Display','iter'); % 设置显示参数:显示每次迭代的输出
[K,fval,attainfactor] = fgoalattain(@eigfun,K0,goal,weight,[],[],[],[],lb,ub,[],options,A,B,C)
结果为:
weight =
5 3 1
Attainment Directional
Iter F-count factor Step-size derivative Procedure
1 6 1.885 1 1.03
2 13 1.061 1 -0.679
3 20 0.4211 1 -0.523 Hessian modified
4 27 -0.06352 1 -0.053 Hessian modified twice
5 34 -0.1571 1 -0.133
6 41 -0.3489 1 -0.00768 Hessian modified 7 48 -0.3643 1 -4.25e-005 Hessian modified
8 55 -0.3645 1 -0.00303 Hessian modified twice 9 62 -0.3674 1 -0.0213 Hessian modified 10 69 -0.3806 1 0.00266
11 76 -0.3862 1 -2.73e-005 Hessian modified twice 12 83 -0.3863 1 -1.22e-013 Hessian modified twice Optimization terminated successfully:
Search direction less than 2*options. TolX and maximum constraint violation is less than options.TolCon
Active Constraints:
1
2
4
9
10
K =
-4.0000 -0.2564
-4.0000 -4.0000
fval =
-6.9313
-4.1588
-1.4099
attainfactor =
-0.3863
5.6 多目标规划问题
多目标规划是指在一组约束下,对多个不同目标函数进行优化。它的一般形式为 min[f1(x),f2(x),L,fm(x)]
sub.to gj(x)≤0j=1,2,L,p
其中:x=(x1,x2,L,xn)。
在同一约束下,当目标函数处于冲突状态时,不存在最优解x使所有目标函数同时达到最优。此时,我们使用有效解,即如果不存在x∈S,使得fi(x)≥fi(x*),i=1,2,…m, 则称x*为有效解。
在MATLAB中,多目标问题的标准形式为
minimizeγ x,γ
sub.to F(x)−weight⋅γ≤goal
C(x)≤0
Ceq(x)=0
A⋅x≤b
Aeq⋅x=beq
lb≤x≤ub
其中:x、b、beq、lb、ub是向量;A、Aeq为矩阵;C(x)、Ceq(x)和F(x)是返回向量的函数;F(x)、C(x)、Ceq(x)可以是非线性函数;weight为权值系数向量,用于控制对应的目标函数与用户定义的目标函数值的接近程度;goal为用户设计的与目标函数相应的目标函数值向量;γ为一个松弛因子标量;F(x)为多目标规划中的目标函数向量。
在MATLAB5.x中,它的最优解由attgoal函数实现。
函数 fgoalattain
格式 x = fgoalattain(fun,x0,goal,weight)
x = fgoalattain(fun,x0,goal,weight,A,b)
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq)
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub)
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon)
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon,options)
[x,fval] = fgoalattain(…)
[x,fval,attainfactor] = fgoalattain(…)
[x,fval,attainfactor,exitflag] = fgoalattain(…)
[x,fval,attainfactor,exitflag,output] = fgoalattain(…)
[x,fval,attainfactor,exitflag,output,lambda] = fgoalattain(…)
参数说明:
x0为初始解向量;
fun为多目标函数的文件名字符串,其定义方式与前面fun的定义方式相同; goal为用户设计的目标函数值向量;
weight为权值系数向量,用于控制目标函数与用户自定义目标值的接近程度;
A、b满足线性不等式约束A⋅x≤b,没有时取A=[ ],b=[ ];
Aeq、beq满足线性等式约束Aeq⋅x=beq,没有时取Aeq=[ ],beq=[ ];
lb、ub为变量的下界和上界:lb≤x≤ub;
nonlcon的作用是通过接受的向量x来计算非线性不等约束C(x)≤0和等式约束
Ceq(x)=0分别在x处的值C和Ceq,通过指定函数柄来使用。
如:>>x = fgoalattain(@myfun,x0,goal,weight,A,b,Aeq,beq,lb,ub,@mycon),
先建立非线性约束函数,并保存为mycon.m:function [C,Ceq] = mycon(x)
C = … % 计算x处的非线性不等式约束C(x)≤0的函数值。
Ceq = … % 计算x处的非线性等式约束Ceq(x)=0的函数值。
options为指定的优化参数;
fval为多目标函数在x处的值;
attainfactor为解x处的目标规划因子;
exitflag为终止迭代的条件;
output为输出的优化信息;
lambda为解x处的Lagrange乘子
例5-14 控制系统输出反馈器设计。
设如下线性系统
&=Ax+Bu x
y=Cx
0⎤⎡−o.50⎡10⎤⎡100⎤其中:A=⎢0−210⎥ B=⎢−22⎥ C=⎢⎥ ⎢⎥⎢⎥001⎣⎦⎢⎢1−2⎥⎣0⎦⎣01⎥⎦
要求设计输出反馈控制器K,使闭环系统
&=(A+BKC)x+Bu x
y=Cx
在复平面实轴上点[-5,-3,-1]的左侧有极点,并要求 −4≤Kij≤4(i,j=1,2)
解:上述问题就是要求解矩阵K,使矩阵(A+BKC)的极点为[-5,-3,-1],这是一个多目标规划问题。
先建立目标函数文件,保存为eigfun.m:
function F = eigfun(K,A,B,C)
F = sort(eig(A+B*K*C)); % 估计目标函数值
然后,输入参数并调用优化程序:
A = [-0.5 0 0; 0 -2 10; 0 1 -2];
B = [1 0; -2 2; 0 1];
C = [1 0 0; 0 0 1];
K0 = [-1 -1; -1 -1]; % 初始化控制器矩阵
goal = [-5 -3 -1]; % 为闭合环路的特征值(极点)设置目标值向量
weight = abs(goal) % 设置权值向量
lb = -4*ones(size(K0)); % 设置控制器的下界
ub = 4*ones(size(K0)); % 设置控制器的上界
options = optimset('Display','iter'); % 设置显示参数:显示每次迭代的输出
[K,fval,attainfactor] = fgoalattain(@eigfun,K0,goal,weight,[],[],[],[],lb,ub,[],options,A,B,C)
结果为:
weight =
5 3 1
Attainment Directional
Iter F-count factor Step-size derivative Procedure
1 6 1.885 1 1.03
2 13 1.061 1 -0.679
3 20 0.4211 1 -0.523 Hessian modified
4 27 -0.06352 1 -0.053 Hessian modified twice
5 34 -0.1571 1 -0.133
6 41 -0.3489 1 -0.00768 Hessian modified 7 48 -0.3643 1 -4.25e-005 Hessian modified
8 55 -0.3645 1 -0.00303 Hessian modified twice 9 62 -0.3674 1 -0.0213 Hessian modified 10 69 -0.3806 1 0.00266
11 76 -0.3862 1 -2.73e-005 Hessian modified twice 12 83 -0.3863 1 -1.22e-013 Hessian modified twice Optimization terminated successfully:
Search direction less than 2*options. TolX and maximum constraint violation is less than options.TolCon
Active Constraints:
1
2
4
9
10
K =
-4.0000 -0.2564
-4.0000 -4.0000
fval =
-6.9313
-4.1588
-1.4099
attainfactor =
-0.3863