Matlab非线性规划

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一般非线性规划 标准型为:

min F(X)

s.t AX<=b b e q

X A e q =⋅ G(X)0≤ Ceq(X)=0 VLB ≤X ≤VUB

其中X 为n 维变元向量,G(X)与Ceq(X)均为非线性函数组成的向量,其它变量的含义与线性规划、二次规划中相同.用Matlab 求解上述问题,基本步骤分三步:

1. 首先建立M 文件fun.m,定义目标函数F (X ): function f=fun(X);

f=F(X);

2. 若约束条件中有非线性约束:G(X)0≤或Ceq(X)=0,则建立M 文件nonlcon.m 定义函数G(X)与Ceq(X): function [G,Ceq]=nonlcon(X) G=...

Ceq=...

3. 建立主程序.非线性规划求解的函数是fmincon,命令的基本格式如下:

(1) x=fmincon (‘fun’,X0,A,b)

(2) x=fmincon (‘fun’,X0,A,b,Aeq,beq)

(3) x=fmincon (‘fun’,X0,A,b, Aeq,beq,VLB,VUB)

(4) x=fmincon (‘fun’,X0,A,b,Aeq,beq,VLB,VUB,’nonlcon’)

(5)x=fmincon (‘fun’,X0,A,b,Aeq,beq,VLB,VUB,’nonlcon’,options)

(6) [x,fval]= fmincon(...)

(7) [x,fval,exitflag]= fmincon(...)

(8)[x,fval,exitflag,output]= fmincon(...) 注意:

[1] fmincon 函数提供了大型优化算法和中型优化算法。默认时,若在

fun 函数中提供了梯度(options 参数的GradObj 设置为’on’),并且只有上下界存在或只有等式约束,fmincon 函数将选择大型算法。当既有等式约束又有梯度约束时,使用中型算法。

[2] fmincon 函数的中型算法使用的是序列二次规划法。在每一步迭代中求解二次规划子问题,并用BFGS 法更新拉格朗日Hessian 矩阵。

[3] fmincon 函数可能会给出局部最优解,这与初值X0的选取有关。

例2 2221212

121

2min x x x x f ++--= s.t.0

,546

32212121≥≤+≤+x x x x x x

2、先建立M-文件 fun3.m:

function f=fun3(x);

f=-x(1)-2*x(2)+(1/2)*x(1)^2+(1/2)*x(2)^2

3、再建立主程序youh2.m :

x0=[1;1]; 1、写成标准形式:

s.t.

⎪⎭⎫ ⎝⎛≤⎪⎭⎫ ⎝⎛-+-+00546322121x x x x ⎪⎭⎫ ⎝⎛≤⎪⎭⎫ ⎝⎛2100x x 22212121212min x x x x f ++--=

A=[2 3 ;1 4]; b=[6;5];

Aeq=[];beq=[];

VLB=[0;0]; VUB=[];

[x,fval]=fmincon('fun3',x0,A,b,Aeq,beq,VLB,VUB) 4、运算结果为:

x = 0.7647 1.0588

fval = -2.0294

例3

0 100

5.1

..

)1

2

4

2

4(

)

(

min

2 1

2

1

2

1

2

1

2

2

1

2

2

2

1

1

-

-

-

-

+

=

+

+

+

+

+

=

x

x

x

x

x

x

x

x t s

x

x

x

x

x

e

x

f x

1.先建立M文件fun4.m,定义目标函数:

function f=fun4(x);

f=exp(x(1))

*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1); 2.再建立M文件mycon.m定义非线性约束:

function [g,ceq]=mycon(x)

g=[x(1)+x(2);1.5+x(1)*x(2)-x(1)-x(2);-x(1)*x(2)-10]; 3.主程序youh3.m为:

x0=[-1;1];

A=[];b=[];

Aeq=[1 1];beq=[0];

vlb=[];vub=[];

[x,fval]=fmincon('fun4',x0,A,b,Aeq,beq,vlb,vub,'mycon')

3. 运算结果为:

x = -1.2250 1.2250

fval = 1.8951

例4.资金使用问题

设有400万元资金, 要求4年内使用完, 若在一年内使用资金x 万元, 则可得效益x 万元(效益不能再使用),当年不用的资金可存入银行, 年利率为10%. 试制定出资金的使用计划, 以使4年效益之和为最大.

设变量i x 表示第i 年所使用的资金数,则有 4,3,2,1,04

.5321.121.1331.1484

1.121.1440

1.1400

..max 43213212114

321=≥≤+++≤++≤+≤+++=i x x x x x x x x x x x t s x x x x z i

1.先建立M 文件 fun44.m,定义目标函数:

function f=fun44(x)

f=-(sqrt(x(1))+sqrt(x(2))+sqrt(x(3))+sqrt(x(4)));

2.再建立M 文件mycon1.m 定义非线性约束:

function [g,ceq]=mycon1(x)

g(1)=x(1)-400;

g(2)=1.1*x(1)+x(2)-440;

g(3)=1.21*x(1)+1.1*x(2)+x(3)-484;

g(4)=1.331*x(1)+1.21*x(2)+1.1*x(3)+x(4)-532.4;

ceq=0

3.主程序youh4.m 为:

x0=[1;1;1;1];vlb=[0;0;0;0];vub=[];A=[];b=[];Aeq=[];beq=[];

[x,fval]=fmincon('fun44',x0,A,b,Aeq,beq,vlb,vub,'mycon1')

相关文档
最新文档