1.二次规划问题
二次规划的数学模型
AX≤b
AeqX=beq
lb≤X≤ub
式中,H为二次型矩阵;A、Aeq分别为不等式约束和等式约束系数矩阵。求解二次规划问题函数为quadprog。
1)语法:
x=quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options)
[x,fval,exitflag,outputl,lambda]=quadprog(…)
2)说明:x0为初始点;若无等式约束或无不等式约束,就将相应的矩阵和向量设置为空;options为指定优化参数。输出参数中,x是返回最优解;fval是返回解所对应的目标函数值;exitflag是描述搜索是否收敛;output是返回包含优化信息的结构;lamdba是返回x包含拉格朗日乘子的参数。
例4-10 求解二次规划问题
minf(X)=x1-3x2+3x21+4x22-2x1x2
s.t.2x1+x2≤2
-x1+4x2≤3
MATLAB代码如下:
f=[1;-3];
H=[6 -2;-2 8];
A=[2 1;-1 4];
b=[2;3]
[x,fval,exitflag]=quadprog(H,f,A,b)
结果:
x=
-0.0455
0.3636 .
fval=
-0.5682.
exitflag=
1
2.多目标规划问题
对于多目标规划,其数学模型为
min(f1(X) f2(X) … fm(X))
s.t.gj(X)≤0 (j=1,2,…,n)
先设计与目标函数相应的一组目标值理想化向量(f1∗f2∗ … fm∗),再设γ为一松弛因子标量,设W=(w1w2 … wm)为权值系数向量,于是多目标规划问题化为
minγ
x,r
fj(X-wjγ≤fj∗ (j=1,2,…,m)
gj(X)≤0 (j=1,2,…,k)
在MATLAB的优化工具箱中,fgoalattain函数用于解决此类问题。
其数学模型形式为
minγ
minf(X)-weight·γ≤goal
c(X)≤0
ceq(X)=0
AX≤b
AeqX=beq
lb≤X≤ub
式中,X、weight、goal、b、beq、lb和ub为向量;A和Aeq为矩阵;c(X)、ceq(X)和f(X)为函数。
1)语法:
x=fgoalattain(F,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon,options,P1,P2)
[x,fval,attainfactor,exitflag,output,lambda]=fgoalattain(…)
2)说明:F为目标函数;x0为初值;goal为F达到的指定目标;weight为参数指定权重;A、b为线性不等式约束的矩阵与向量;Aeq、beq为等式约束的矩阵与向量;lb、ub为变量x的上、下界向量;nonlcon为定义非线性不等式约束函数c(x)和等式约束函数ceq(x);options中设置优化参数。
例4-11 求解如下问题
minf1(X)=2x1+5x2
minf2(X)=4x1+x2(www.xing528.com)
s.t.x1≤5
x2≤6
x1+x2≥7
x1≥0,x2≥0
首先编辑目标函数M文件myfun.m
function f=myfun(x)
f(1)=2∗x(1)+5∗x(2);
f(2)=4∗x(1)+x(2);
在Command Window输入命令:
goal=[20,12];
weight=[20,12];
x0=[2,2]
A=[10;01;-1-1];
lb=zeros(2,1);
[x,fval,attainfactor,exitflag]=fgoalattain(@myfun,x0,aoal,weight,A,b,[],[],lb,[])
结果:
x=
2.9167 4.0833
fval=
26.2500 15.7500
attainfactor=
0.3125
exitflag=
4
3.最大最小化问题
最大最小化的数学模型为
求解最大最小化问题的函数为fminimax。
1)语法:
x=fminimax(F,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
[x,fval,maxfval,exitflag,output,lambda]=fminimax(…)
2)说明:F为目标函数;x0为初值;A、b为线性不等式约束的矩阵与向量;Aeq、beq为等式约束的矩阵与向量;lb、ub为变量x的上、下界向量;nonlcon为定义非线性不等式约束函数c(x)和等式约束函数ceq(x);options中设置优化参数。
x返回最优解;fval返回解x处的目标函数值;maxfval返回解x处的最大函数值;exit-flag描述计算的退出条件;output返回包含优化信息的输出参数;lambda返回包含拉格朗日乘子的参数。
例4-12 求解下列最大最小值
min max(f1(X) f2(X) f3(X) f4(X))
其中f1(X)=3x21+2x22-12x1+35
f2(X)=5x1x2-4x2+7
f3(X)=x21+6x2
f4(X)=4x21+9x22-12x1x2+20
首先编辑m文件myfun.m:
function f=myfun(x)
f(1)=3∗x(1)^2+2∗x(2)^2-12∗x(1)+35;
f(2)=5∗x(1)∗x(2)-4∗x(2)+7;
f(3)=x(1)^2+6∗x(2);
f(4)=4∗x(1)^2+9∗x(2)^2-12∗x(1)∗x(2)+20;
取初值为x0=(1,1),调用优化函数,在Command Window输入命令:
x0=[11];
[x,fval]=fminimax(@myfun,x0)
结果:
x=
1.7637 0.5317
fval=
23.7331 9.5621 6.3010 23.7331
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。