1 / 18

数 学 模 型 最 优 化 方 法 实 现

数 学 模 型 最 优 化 方 法 实 现. 数学与计算机科学学院 2007 年 3 月. 一、线性规划模型. 线性规划模型: min ( max)z=c’x s.t. AX<=b x>=0 其中 C 为价格向量。 A 为约束条件的系数矩阵, b 为约束条件的右侧常数。 最优化模型还有二次规划、非线性规划等。.

calder
Download Presentation

数 学 模 型 最 优 化 方 法 实 现

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 数 学 模 型最 优 化 方 法 实 现 数学与计算机科学学院 2007年3月

  2. 一、线性规划模型

  3. 线性规划模型:min (max)z=c’x s.t. AX<=b • x>=0 • 其中C为价格向量。A为约束条件的系数矩阵,b为约束条件的右侧常数。 • 最优化模型还有二次规划、非线性规划等。

  4. 二、求解线性规划:min z=c’x s.t. AX<=b x>=0 • 用matlab采用矩阵方法求解,但要转化为上述形式,输入格式如下: • 1.x=lp(c,A,b)---注:此模型无非负条件 • 2.x=lp(c,A,b,xlb,xub)----模型中加上条件:xlb<=x<=xub • 3.x=lp(c,A,b,xlb,xub,x0,nEq)—其中nEq表示Ax<=b中前n个约束为等式

  5. 例1. Min z=6x1+3x2+4x3s.t. x1+x2+x3=120x1≥30;0≤x2≤50;x3≥20 用matlab软件求解如下: C=[6;3;4];A=[1 1 1];b=[120]; Xlb=[30;0;20];xub=[inf;50;inf]; X0=30*ones(3,1);nEq=1; X=lp(c,A,b,xlb,xub,x0,nEq) X=30.0000 50.0000 40.0000 f=c’*x

  6. 二、二次规划模型:标准型如下min z=0.5*X’HX+C’Xs.t. AX≤b X≥0 用matlab求解,其输入格式如下: 1. x=QP(H,C,A,b) 2. X=QP(H,C,A,b,vlb,vub) 3. X=QP(H,C,A,b,vlb,vub,x0) 4. X=QP(H,C,A,b,vlb,vub,x0,N) N表示前N个等式约束的数目

  7. 例2. min f(x1, x2) = -2x1-6x2+x12-2x1x2+2x22s.t. x1+x2≤2 -x1+2x2≤2 x1≥0, x2≥0 H=[2 –2; -2 4]; c=[-2 –6]; A=[1 1; -1 2]; b=[2 2] x=QP(H, c, A, b) x=0.8000 1.2000 0.5*x’*H*x+c*x

  8. 三、无约束极小化问题 Matlab提供了求解最优化的函数fmin( )和fmins( ),它们分别对应于单变量和多变量的最优化问题的求解,其调用格式如下: X=fmin(函数名,初值,选项) 其中函数名的定义和其他函数一致,而初值往往能决定最后解的精度和收敛速度。选项要根据实际问题来决定,查看选项的内容只需用命令 help foptions(共有18种)

  9. 1. 一元非线性函数的极小化:基本的输入格式为:x=fmin(‘F’,x1,x2)其中F表示极小化的函数, 例3. min f =2exp(-x)*sin(x) s.t. 2 < x < 5 用Matlab 求解如下: f=‘2*exp(-x).*sin(x)’; fplot( f, [0, 8] ); 作图语句 xmin=fmin( f , 2 , 5)

  10. f1=‘-2*exp(-x).*sin(x)’; xmax = fmin( f1 , 0 , 3) xmax=0.7854 x=xmin; ymin=evalf( f ) ymin=-0.0279 x=xmax; ymax=evalf( f ) ymax=0.6448

  11. 2. 多元函数的极小化问题:x=fmins(‘f ’, x0)x=fmins(‘f ’,x0,options) 例4. Min f=100 (x2-x12)2 + (1-x1)2 其中初值为x0 = (-1.2 , 1) 首先编写M—文件myfun.m function y = myfun(x ) y=100*(x(2)-x(1)^2)^2+(1-x(1))^2; 然后由下面的命令求解该问题:

  12. x0=[-1.2 1];x=fmins(‘myfun’,x0) x=1.0000 1.0000 myfun(x) 计算函数值 ans = 1.1115e-09 另外一个命令是fminu( ), 其默认算法是BFGS拟Newton法,但函数一定要以M--文件形式输入, 输入格式为: x=fminu(‘fun’, x0, options)

  13. 四、有约束的非线性规划问题:标准型: min F(x) s.t. G(x) ≤zeros(G) ; vlb≤x≤vub其中G(x)为m维非线性函数向量,zeros(G)为m维零向量;不等式中允许含等式约束,输出目标函值及约束函数值: [f, g] = fun( x ) 用matlab求解上述问题,分两步: 首先建立函数M—文件: function [F, G] =fun( x )

  14. F=具体的目标函数 G=[函数1;函数2;….;函数m]; 2. 运行的基本格式如下: 1) x=constr(‘fun’, x0) 2) x=constr(‘fun’,x0,options,vlb,vub) 例5. min (x1-2)2+(x2-1)2 s.t. x1-2x2+1=0; 0.25*x12 + x22 -1≤0; 用matlab输入求解如下:

  15. x0=[2 ; 2]; options(13) =1; xl=[-inf ; -inf ]; xu=[inf ; inf ]; 建立M--文件: function [F,G] =myfun1(x) F=(x(1)-2)^2+(x(2)-1)^2; G(1)=x(1) -2*x(2) +1; G(2)=0.25*x(1)^2 +x(2)^2 -1; 运行: [x,options] = constr(‘myfun1’, x0,options, xl, xu)

  16. x=0.8229 0.9114myfun1( x ) ans =1.3935 (目标函数值) 例6: 求解 min f(x)=ex1(4x12+2x22+4x1x2+2x2+1) s.t. x1x2-x1-x2≤-1.5; x1x2≥-10; Step1: 编制M—文件myfun2.m: function [f , g]=myfun2(x) f=exp(x(1))*(4*x(1)^2+2*x(2)^2+ 4*x(x)*x(2)+2*x(2)+1);

  17. g(1)=1.5+x(1)*x(2) -x(1) -x(2);g(2) = -x(1)*x(2) -10; Step2: 计算最优化点和最优值 x0=[-1 , 1]; x=constr(‘myfun2’, x0) x=-9.5474 1.0474 [f , g]= myfun2(x) f = 0.0236 g=1.0e-015*[-0.8882 0]

  18. 谢 谢 大 家 祝你们成功

More Related