首页 理论教育 解决其他问题的方法介绍

解决其他问题的方法介绍

时间:2023-06-24 理论教育 版权反馈
【摘要】:例4-10 求解二次规划问题minf=x1-3x2+3x21+4x22-2x1x2s.t.2x1+x2≤2-x1+4x2≤3MATLAB代码如下:f=[1;-3];H=[6 -2;-2 8];A=[2 1;-1 4];b=[2;3][x,fval,exitflag]=quadprog结果:x=-0.04550.3636 .fval=-0.5682.exitflag=12.多目标规划问题对于多目标规划,其数学模型为min(f1(X) f2(X) …例4-11 求解如下问题minf1=2x1+5x2minf2=4x1+x2s.t.x1≤5x2≤6x1+x2≥7x1≥0,x2≥0首先编辑目标函数M文件myfun.mfunction f=myfunf=2x+5x;f=4x+x;在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结果:x=2.9167 4.0833fval=26.2500 15.7500attainfactor=0.3125exitflag=43.最大最小化问题最大最小化的数学模型为求解最大最小化问题的函数为fminimax。

解决其他问题的方法介绍

1.二次规划问题

二次规划的数学模型

AXb

AeqX=beq

lbXub

式中,H为二次型矩阵AAeq分别为不等式约束和等式约束系数矩阵。求解二次规划问题函数为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 求解二次规划问题

minfX)=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(f1Xf2X) … fmX))

s.t.gjX)≤0 (j=1,2,…,n

先设计与目标函数相应的一组目标值理想化向量(f1f2∗ … fm),再设γ为一松弛因子标量,设W=(w1w2wm)为权值系数向量,于是多目标规划问题化为

minγ

xr

fjX-wjγfjj=1,2,…,m

gjX)≤0 (j=1,2,…,k

在MATLAB的优化工具箱中,fgoalattain函数用于解决此类问题。

其数学模型形式为

minγ

minfX)-weight·γgoal

cX)≤0

ceqX)=0

AXb

AeqX=beq

lbXub

式中,Xweightgoalbbeqlbub为向量;AAeq为矩阵;cX)、ceqX)和fX)为函数。

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 求解如下问题

minf1X)=2x1+5x2

minf2X)=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(f1Xf2Xf3Xf4X))

其中f1X)=3x21+2x22-12x1+35

f2X)=5x1x2-4x2+7

f3X)=x21+6x2

f4X)=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

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈