规划模型MATLAB2013_第1页
规划模型MATLAB2013_第2页
规划模型MATLAB2013_第3页
规划模型MATLAB2013_第4页
规划模型MATLAB2013_第5页
已阅读5页,还剩107页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、用用MATLAB优化工具箱解线性规划优化工具箱解线性规划min z=cX bAXts. .1、模型:命令:x=linprog(c,A,b) 2、模型:min z=cX bAXt s. .beqXAeq命令:x=linprog(c,A,b,Aeq,beq)注意:若没有不等式: 存在,则令A= ,b= .bAX3、模型:min z=cX bAXts. .beqXAeqVLBXVUB命令:1 x=linprog(c,A,b,Aeq,beq, VLB,VUB) 2 x=linprog(c,A,b,Aeq,beq, VLB,VUB, X0) 注意:1 若没有等式约束: , 则令Aeq= , beq= .

2、 2其中X0表示初始点 beqXAeq4、命令:x,fval=linprog()返回最优解及处的目标函数值fval.解解 编写编写M文件文件xxgh1.m如下:如下:c=-0.4 -0.28 -0.32 -0.72 -0.64 -0.6; A=0.01 0.01 0.01 0.03 0.03 0.03; 0.02 0 0 0.05 0 0; 0 0.02 0 0 0.05 0; 0 0 0.03 0 0 0.08; b=850;700;100;900; Aeq=; beq=; vlb=0;0;0;0;0;0; vub=;x,fval=linprog(c,A,b,Aeq,beq,vlb,vub)

3、例例1 max 6543216 . 064. 072. 032. 028. 04 . 0 xxxxxxz 85003. 003. 003. 001. 001. 001. 0. .654321xxxxxxt s 70005. 002. 041xx 10005. 002. 052xx 90008. 003. 063xx 6, 2 , 10jxj To Matlab (xxgh1)例例 2 321436minxxxz 120. .321xxxts 301x 5002 x 203x解解: 编写编写M文件文件xxgh2.m如下:如下: c=6 3 4; A=0 1 0; b=50; Aeq=1 1 1;

4、 beq=120; vlb=30,0,20; vub=; x,fval=linprog(c,A,b,Aeq,beq,vlb,vub)To Matlab (xxgh2)321)436(minxxxz32120030 xxx50120010111 .321xxxts问题一问题一 : 任务分配问题:某车间有甲、乙两台机床,可用于加工三种工件。假定这两台车床的可用台时数分别为800和900,三种工件的数量分别为400、600和500,且已知用三种不同车床加工单位数量不同工件所需的台时数和加工费用如下表。问怎样分配车床的加工任务,才能既满足加工工件的要求,又使加工费用最低? 单位工件所需加工台时数 单位

5、工件的加工费用 车床类 型 工件1 工件2 工件3 工件1 工件2 工件3 可用台时数 甲 0.4 1.1 1.0 13 9 10 800 乙 0.5 1.2 1.3 11 12 8 900 两个引例两个引例解解 设在甲车床上加工工件1、2、3的数量分别为x1、x2、x3,在乙车床上加工工件1、2、3的数量分别为x4、x5、x6。可建立以下线性规划模型:6543218121110913minxxxxxxz 6 , 2 , 1, 09003 . 12 . 15 . 08001 . 14 . 0500600400 x . .654321635241ixxxxxxxxxxxxtsi 解答问题二:问题

6、二: 某厂每日8小时的产量不低于1800件。为了进行质量控制,计划聘请两种不同水平的检验员。一级检验员的标准为:速度25件/小时,正确率98%,计时工资4元/小时;二级检验员的标准为:速度15小时/件,正确率95%,计时工资3元/小时。检验员每错检一次,工厂要损失2元。为使总检验费用最省,该工厂应聘一级、二级检验员各几名?解解 设需要一级和二级检验员的人数分别为x1、x2人,则应付检验员的工资为:212124323848xxxx因检验员错检而造成的损失为:21211282)%5158%2258(xxxx故目标函数为:故目标函数为:2121213640)128()2432(minxxxxxxz约

7、束条件为:0, 0180015818002581800158258212121xxxxxx线性规划模型:线性规划模型:213640minxxz0, 01594535 . .212121xxxxxxts 解答返 回S.t.Xz8121110913min 9008003 . 12 . 15 . 000000011 . 14 . 0X500600400100100010010001001X ,0654321xxxxxxX改写为:例例3 问题一的解答 问题问题编写编写M文件文件xxgh3.m如下如下:f = 13 9 10 11 12 8;A = 0.4 1.1 1 0 0 0 0 0 0 0.5 1

8、.2 1.3;b = 800; 900;Aeq=1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1;beq=400 600 500;vlb = zeros(6,1);vub=;x,fval = linprog(f,A,b,Aeq,beq,vlb,vub)To Matlab (xxgh3)结果结果:x = 0.0000 600.0000 0.0000 400.0000 0.0000 500.0000fval =1.3800e+004 即在甲机床上加工600个工件2,在乙机床上加工400个工件1、500个工件3,可在满足条件的情况下使总加工费最小为13800。例例2 问题二的解

9、答 问题问题 213640minxxz s.t. )45(3521xx改写为:编写编写M文件文件xxgh4.m如下:如下:c = 40;36;A=-5 -3;b=-45;Aeq=;beq=;vlb = zeros(2,1);vub=9;15; %调用linprog函数:x,fval = linprog(c,A,b,Aeq,beq,vlb,vub)To Matlab (xxgh4)结果为:结果为:x = 9.0000 0.0000fval =360即只需聘用9个一级检验员。 注:注:本问题应还有一个约束条件:x1、x2取整数。故它是一个整数线性规划整数线性规划问题。这里把它当成一个线性规划来解,

10、求得其最优解刚好是整数:x1=9,x2=0,故它就是该整数规划的最优解。若用线性规划解法求得的最优解不是整数,将其取整后不一定是相应整数规划的最优解,这样的整数规划应用专门的方法求解。返 回16用MATLAB软件求解,其输入格式如下: 1. x=quadprog(H,C,A,b); 2. x=quadprog(H,C,A,b,Aeq,beq); 3. x=quadprog(H,C,A,b,Aeq,beq,VLB,VUB); 4. x=quadprog(H,C,A,b, Aeq,beq ,VLB,VUB,X0); 5. x=quadprog(H,C,A,b, Aeq,beq ,VLB,VUB,X

11、0,options); 6. x,fval=quaprog(.); 7. x,fval,exitflag=quaprog(.); 8. x,fval,exitflag,output=quaprog(.);1、二次规划标准型为: Min Z= 21XTHX+cTX s.t. AX=b beqXAeq VLBXVUB 17例1 min f(x1,x2)=-2x1-6x2+0.5x12-x1x2+x22 s.t. x1+x22 -x1+2x22 x10, x20 MATLAB(youh1)1、写成标准形式: 2、 输入命令: H=1 -1; -1 2; c=-2 ;-6;A=1 1; -1 2;b=

12、2;2; Aeq=;beq=; VLB=0;0;VUB=; x,z=quadprog(H,c,A,b,Aeq,beq,VLB,VUB)3、运算结果为: x =0.6667 1.3333 z = -8.2222212121622 11- 1 ),(*5 . 0minxxxxxxzT212100222 11 1 xxxxs.t.18 1. 首先建立M文件fun.m,定义目标函数F(X):function f=fun(X);f=F(X);2、一般非线性规划标准型为: min F(X) s.t AX=b beqXAeq G(X)0 Ceq(X)=0 VLBXVUB 其中X为n维变元向量,G(X)与Ce

13、q(X)均为非线性函数组成的向量,其它变量的含义与线性规划、二次规划中相同.用Matlab求解上述问题,基本步骤分三步:2. 若约束条件中有非线性约束:G(X)0或Ceq(X)=0,则建立M文件nonlcon.m定义函数G(X)与Ceq(X): function G,Ceq=nonlcon(X) G=. Ceq=. 193. 建立主程序.非线性规划求解的函数是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,VU

14、B) (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(.)输出极值点M文件迭代的初值参数说明变量上下限20注意:1 fmincon函数提供了大型优化算法和中型优化算法。默认时,若在fun函数中提供了梯度(options参数的GradObj设置为on),并且

15、只有上下界存在或只有等式约束,fmincon函数将选择大型算法。当既有等式约束又有梯度约束时,使用中型算法。2 fmincon函数的中型算法使用的是序列二次规划法。在每一步迭代中求解二次规划子问题,并用BFGS法更新拉格朗日Hessian矩阵。3 fmincon函数可能会给出局部最优解,这与初值X0的选取有关。211、写成标准形式: s.t. 00546322121xxxx2100 xx22212121212minxxxxf22212121212minxxxxf 2x1+3x2 6 s.t x1+4x2 5 x1,x2 0例2222、先建立M-文件 fun3.m: function f=fun

16、3(x); f=-x(1)-2*x(2)+(1/2)*x(1)2+(1/2)*x(2)2MATLAB(youh2)3、再建立主程序youh2.m: x0=1;1; 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.0294231先建立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

17、(2)+1);) 12424()(22122211xxxxxexfx x1+x2=0 s.t. 1.5+x1x2 - x1 - x2 0 -x1x2 10 0例32再建立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;243主程序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)MATLAB(youh3)3. 运算结果

18、为: x = -1.2250 1.2250 fval = 1.895125 例4 100 , 50 07 025 . .2min 21222122221121xxxxXgxxXgtsxxXf1先建立M-文件fun.m定义目标函数: function f=fun(x); f=-2*x(1)-x(2);2再建立M文件mycon2.m定义非线性约束: function g,ceq=mycon2(x) g=x(1)2+x(2)2-25;x(1)2-x(2)2-7;263. 主程序fxx.m为: x0=3;2.5; VLB=0 0;VUB=5 10; x,fval,exitflag,output =fm

19、incon(fun,x0,VLB,VUB,mycon2)MATLAB(fxx(fun)274. 运算结果为: x = 4.0000 3.0000fval =-11.0000exitflag = 1output = iterations: 4 funcCount: 17 stepsize: 1 algorithm: 1x44 char firstorderopt: cgiterations: 返回MATLAB应用实例: 供应与选址 某公司有6个建筑工地要开工,每个工地的位置(用平面坐标系a,b表示,距离单位:千米 )及水泥日用量d(吨)由下表给出。目前有两个临时料场位于A(5,1),B(2,7)

20、,日储量各有20吨。假设从料场到工地之间均有直线道路相连。 (1)试制定每天的供应计划,即从A,B两料场分别向各工地运送多少吨水泥,使总的吨千米数最小。 (2)为了进一步减少吨千米数,打算舍弃两个临时料场,改建两个新的,日储量各为20吨,问应建在何处,节省的吨千米数有多大?工地位置(a,b)及水泥日用量 d 1 2 3 4 5 6 a 1.25 8.75 0.5 5.75 3 7.25 b 1.25 0.75 4.75 5 6.5 7.25 d 3 5 4 7 6 11 (一)、建立模型 记工地的位置为(ai,bi),水泥日用量为di,i=1,6;料场位置为(xj,yj),日储量为ej,j=1

21、,2;从料场j向工地i的运送量为Xij。目标函数为:216122)()(minjiijijijbyaxXf 约束条件为:2 , 1 ,6 , 2 , 1 ,6121jeXidXjiijijij 当用临时料场时决策变量为:Xij,当不用临时料场时决策变量为:Xij,xj,yj。(二)使用临时料场的情形 使用两个临时料场A(5,1),B(2,7).求从料场j向工地i的运送量为Xij,在各工地用量必须满足和各料场运送量不超过日储量的条件下,使总的吨千米数最小,这是线性规划问题. 线性规划模型为:2161),(minjiijXjiaaf2 , 1 , 6 , 2 , 1 , s.t.6121jeXid

22、Xjiijijij其中 22)()(),(ijijbyaxjiaa,i=1,2,6,j=1,2,为常数。 设X11=X1, X21= X 2, X31= X 3, X41= X 4, X51= X 5, X61= X 6X12= X 7, X22= X 8, X32= X 9, X42= X 10, X52= X 11, X62= X 12 编写程序gying1.mMATLAB(gying1)31cleara=1.25 8.75 0.5 5.75 3 7.25;b=1.25 0.75 4.75 5 6.5 7.75;d=3 5 4 7 6 11;x=5 2;y=1 7;e=20 20;for

23、i=1:6 for j=1:2 aa(i,j)=sqrt(x(j)-a(i)2+(y(j)-b(i)2); endendCC=aa(:,1); aa(:,2);A=1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1;B=20;20;Aeq=1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 ;beq=d(1);d(2)

24、;d(3);d(4);d(5);d(6);VLB=0 0 0 0 0 0 0 0 0 0 0 0;VUB=;x0=1 2 3 0 1 0 0 1 0 1 0 1;xx,fval=linprog(CC,A,B,Aeq,beq,VLB,VUB,x0)MATLAB(gying1)32计算结果为:x = 3.0000 5.0000 0.0000 7.0000 0.0000 1.0000 0.0000 0.0000 4.0000 0.0000 6.0000 10.0000fval = 136.2275即由料场A、B向6 个工地运料方案为: 1 2 3 4 5 6 料场A 3 5 0 7 0 1 料场B

25、0 0 4 0 6 10 总的吨千米数为136.2275。 33(三)改建两个新料场的情形 改建两个新料场,要同时确定料场的位置(xj,yj)和运送量Xij,在同样条件下使总吨千米数最小。这是非线性规划问题。非线性规划模型为:216122)()(minjiijijijbyaxXf2 , 1 , 6 , 2 , 1 , . .6121jeXidXtsjiijijij34设 X11=X1, X21= X 2, X31= X 3, X41= X 4, X51= X 5, X61= X 6 X12= X 7, X22= X 8, X32= X 9, X42= X 10, X52= X 11, X62=

26、 X 12 x1=X13, y1=X14, x2=X15, y2=X16 (1)先编写M文件liaoch.m定义目标函数。MATLAB(liaoch)(2) 取初值为线性规划的计算结果及临时料场的坐标: x0=3 5 0 7 0 1 0 0 4 0 6 10 5 1 2 7;编写主程序gying2.m.MATLAB(gying2)35clear%x0=3 5 0 7 0 1 0 0 4 0 6 10 5 1 2 7;%x0= 3.0000 5.0000 0.0707 7.0000 0 0.9293 0 0 3.9293 0 6.0000 10.0707 6.3875 4.3943 5.7511

27、 7.1867;%x0= 3.0000 5.0000 0.3094 7.0000 0.0108 0.6798 0 0 3.6906 0 5.9892 10.3202 5.5369 4.9194 5.8291 7.2852;x0=3 5 4 7 1 0 0 0 0 0 5 11 5.6348 4.8687 7.2479 7.7499;A=1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0;B=20;20;Aeq=1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0

28、 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0;beq=3 5 4 7 6 11;vlb=zeros(12,1);-inf;-inf;-inf;-inf;vub=;x,fval,exitflag=fmincon(liaoch,x0,A,B,Aeq,beq,vlb,vub)MATLAB(gying2)36MATLAB(liaoch)function f=liaoch(x)a

29、=1.25 8.75 0.5 5.75 3 7.25;b=1.25 0.75 4.75 5 6.5 7.75;d=3 5 4 7 6 11;e=20 20;f1=0;for i=1:6 s(i)=sqrt(x(13)-a(i)2+(x(14)-b(i)2); f1=s(i)*x(i)+f1;endf2=0;for i=7:12 s(i)=sqrt(x(15)-a(i-6)2+(x(16)-b(i-6)2); f2=s(i)*x(i)+f2;endf=f1+f2;37(3) 计算结果为:x= 3.0000 5.0000 0.0707 7.0000 0 0.9293 0 0 3.9293 0 6.

30、0000 10.0707 6.3875 4.3943 5.7511 7.1867fval = 105.4626exitflag = 1即两个新料场的坐标分别为(6.3875, 4.3943),(5.7511, 7.1867),由料场 A、B 向 6 个 工地运料方案为: 1 2 3 4 5 6 料场 A 3 5 0.0707 7 0 0.9293 料场 B 0 0 3.9293 0 6 10.0707 总的吨千米数为105.4626。比用临时料场节省约 31 吨千米. 38(4) 若修改主程序gying2.m, 取初值为上面的计算结果:x0= 3.0000 5.0000 0.0707 7.00

31、00 0 0.9293 0 0 3.9293 0 6.0000 10.0707 6.3875 4.3943 5.7511 7.1867得结果为:x=3.0000 5.0000 0.3094 7.0000 0.0108 0.6798 0 0 3.6906 0 5.9892 10.3202 5.5369 4.9194 5.8291 7.2852fval =103.4760exitflag = 1总的吨千米数比上面结果略优. (5) 若再取刚得出的结果为初值, 却计算不出最优解.MATLAB(gying2)MATLAB(gying2)39(6) 若取初值为: x0=3 5 4 7 1 0 0 0 0

32、 0 5 11 5.6348 4.8687 7.2479 7.7499, 则计算结果为:x=3.0000 5.0000 4.0000 7.0000 1.0000 0 0 0 0 0 5.0000 11.0000 5.6959 4.9285 7.2500 7.7500fval =89.8835exitflag = 1总的吨千米数89.8835比上面结果更好. 通过此例可看出fmincon函数在选取初值上的重要性.MATLAB(gying2) 返回 某厂生产甲乙两种口味的饮料,每百箱甲饮料需用原料6千克,工人10名,可获利10万元;每百箱乙饮料需用原料5千克,工人20名,可获利9万元.今工厂共有原

33、料60千克,工人150名,又由于其他条件所限甲饮料产量不超过8百箱.问如何安排生产计划,即两种饮料各生产多少使获利最大.进一步讨论: 1)若投资0.8万元可增加原料1千克,问应否作这项投资. 2)若每百箱甲饮料获利可增加1万元,问应否改变生产计划.返 回练习 141 某厂向用户提供发动机,合同规定,第一、二、三季度末分别交货40台、60台、80台每季度的生产费用为 (元),其中x是该季生产的台数若交货后有剩余,可用于下季度交货,但需支付存储费,每台每季度c元已知工厂每季度最大生产能力为100台,第一季度开始时无存货,设a=50、b=0.2、c=4,问工厂应如何安排生产计划,才能既满足合同又使总

34、费用最低讨论a、b、c变化对计划的影响,并作出合理的解释练习 2 2bxaxxf42 一一基基金金管管理理人人的的工工作作是是,每每天天将将现现有有的的美美元元、英英镑镑、马马克克、日日元元四四种种货货币币按按当当天天汇汇率率相相互互兑兑换换,使使在在满满足足需需要要的的条条件件下下,按按美美元元计计算算的的价价值值最最高高设设某某天天的的汇汇率率、现现有有货货币币和和当当天天需需求求如如下下:美美元元英英镑镑马马克克日日元元现现有有量量)10(8需需求求量量)10(8美美元元1.589281.743138.386英英镑镑1.69712.9579234.713马马克克.57372.338081

35、79.34681日日元元.007233.00426.01261010 问问该该天天基基金金管管理理人人应应如如何何操操作作(“按按美美元元计计算算的的价价值值”指指兑兑 入入 、 兑兑 出出 汇汇 率率 的的 平平 均均 值值 , 如如 1 英英 镑镑 相相 当当 于于258928. 01697. 1=1.696993 美美元元)练习 3 返回MatlabMatlab优化工具箱简介优化工具箱简介1.MATLAB1.MATLAB求解优化问题的主要函数求解优化问题的主要函数类 型模 型基本函数名一元函数极小Min F(x)s.t.x1xx2x=fminbnd(F,x1,x2)无约束极小Min F(

36、X)X=fminunc(F,X0)X=fminsearch(F,X0)线性规划Min XcTs.t.AX=bX=linprog(c,A,b)二次规划Min 21xTHx+cTxs.t. Ax=bX=quadprog(H,c,A,b)约束极小(非线性规划)Min F(X)s.t. G(X)=0X=fmincon(FG,X0)达到目标问题Min rs.t. F(x)-wr=goalX=fgoalattain(F,x,goal,w)极小极大问题Min max Fi(x)X Fi(x)s.t. G(x)0,则x为解;否则,x不是最终解,它只是迭代制止时优化过程的值所有优化函数fval解x处的目标函数值

37、linprog,quadprog,fgoalattain,fmincon,fminimax,lsqcurvefit,lsqnonlin, fminbndexitflag描述退出条件: exitflag0,表目标函数收敛于解x处 exitflag=0,表已达到函数评价或迭代的最大次数 exitflag0,表目标函数不收敛output包含优化结果信息的输出结构. Iterations:迭代次数 Algorithm:所采用的算法 FuncCount:函数评价次数所有优化函数4 4控制参数控制参数optionsoptions的设置的设置 (3) MaxIterMaxIter: 允许进行迭代的最大次数,

38、取值为正整数.OptionsOptions中常用的几个参数的名称、含义、取值如下中常用的几个参数的名称、含义、取值如下: : (1)DisplayDisplay: 显示水平.取值为off时,不显示输出; 取值为iter时,显示每次迭代的信息;取值为final时,显示最终结果.默认值为final.(2)MaxFunEvalsMaxFunEvals: 允许进行函数评价的最大次数,取值为正整数.例:opts=optimset(Display,iter,TolFun,1e-8) 该语句创建一个称为opts的优化选项结构,其中显示参数设为iter, TolFun参数设为1e-8. 控制参数控制参数opt

39、ionsoptions可以通过函数可以通过函数optimsetoptimset创建或修改。命创建或修改。命令的格式如下:令的格式如下:(1) options=optimset(options=optimset(optimfunoptimfun) ) 创建一个含有所有参数名,并与优化函数optimfun相关的默认值的选项结构options.(2)options=optimset(options=optimset(param1param1,value1,value1,param2param2,value2,.),value2,.) 创建一个名称为options的优化选项参数,其中指定的参数具有指定

40、值,所有未指定的参数取默认值.(3)options=optimset(oldops,options=optimset(oldops,param1param1,value1,value1,param2param2, , value2,.) value2,.) 创建名称为oldops的参数的拷贝,用指定的参数值修改oldops中相应的参数.返回用用MatlabMatlab解无约束优化问题解无约束优化问题 1. 一元函数无约束优化问题一元函数无约束优化问题: : min f(x) 21xxx 其中(3)、(4)、(5)的等式右边可选用(1)或(2)的等式右边。 函数fminbnd的算法基于黄金分割法

41、和二次插值法,它要求目标函数必须是连续函数,并可能只给出局部最优解。常用格式如下:常用格式如下:(1)x= fminbnd (x= fminbnd (fun,xfun,x1 1,x,x2 2) )(2)x= fminbnd (x= fminbnd (fun,xfun,x1 1,x,x2 2 ,options)options)(3)xx,fval= fminbndfval= fminbnd(.)(4)xx,fvalfval,exitflag= fminbndexitflag= fminbnd(.)(5)xx,fvalfval,exitflagexitflag,output= fminbndout

42、put= fminbnd(.)运行结果: xmin = 3.9270 ymin = -0.0279 xmax = 0.7854 ymax = 0.6448To Matlab(wliti1) 例例 1 1 求 f = 2xexsin在 0 x8 中的最小值与最大值 主程序为主程序为wliti1.m:wliti1.m: f=2*exp(-x).*sin(x); fplot(f,0,8); %作图语句 xmin,ymin=fminbnd (f, 0,8) f1=-2*exp(-x).*sin(x); xmax,ymax=fminbnd (f1, 0,8)例例2 2 对边长为3米的正方形铁板,在四个角

43、剪去相等的正方形以制成方形无盖水槽,问如何剪法使水槽的容积最大?设剪去的正方形的边长为x,则水槽的容积为:xx )23(2建立无约束优化模型为:min y=-xx )23(2, 0 xui 交易费 = piui xiui而题目所给定的定值 ui(单位:元)相对总投资 M 很小, piui更小,可以忽略不计,这样购买 Si的净收益为(ri-pi)xi 3要使净收益尽可能大,总体风险尽可能小,这是一个多目标规划模型: 目标函数 MAXniiiixpr0)( MINmax qixi 约束条件 niiixp0)1 (=M xi0 i=0,1,n4. 模型简化:c投资者在权衡资产风险和预期收益两方面时,

44、希望选择一个令自己满意的投资组合。因此对风险、收益赋予权重 s(0s1),s 称为投资偏好系数.模型模型 3 目标函数:min smaxqixi -(1-s)niiiixpr0)( 约束条件 niiixp0)1 (=M, xi0 i=0,1,2,nb若投资者希望总盈利至少达到水平 k 以上,在风险最小的情况下寻找相应的投资组合。模型模型 2 固定盈利水平,极小化风险 目标函数: R= minmax qixi 约束条件:niiiixpr0)(k, Mxpii)1 ( , xi 0 i=0,1,na 在实际投资中,投资者承受风险的程度不一样,若给定风险一个界限 a,使最大的一个风险 qixi/Ma

45、,可找到相应的投资方案。这样把多目标规划变成一个目标的线性规划。模型模型 1 1 固定风险水平,优化收益 目标函数: Q=MAX11)(niiiixpr 约束条件: Mxqiia Mxpii)1 (, xi 0 i=0,1,n四、模型四、模型1 1的求解的求解 模型1为: minf = (-0.05, -0.27, -0.19, -0.185, -0.185) (x0 x1 x2 x3 x 4 ) T x0 + 1.01x1 + 1.02x2 +1.045x3 +1.065x4 =1s.t. 0.025x1 a 0.015x2 a 0.055x3 a 0.026x4a xi 0 (i = 0,

46、1,.4) 由于a是任意给定的风险度,到底怎样给定没有一个准则,不同的投资者有不同的风险度。我们从a=0开始,以步长a=0.001进行循环搜索,编制程序如下:a=0;while(1.1-a)1 c=-0.05 -0.27 -0.19 -0.185 -0.185; Aeq=1 1.01 1.02 1.045 1.065; beq=1; A=0 0.025 0 0 0;0 0 0.015 0 0;0 0 0 0.055 0;0 0 0 0 0.026; b=a;a;a;a; vlb=0,0,0,0,0;vub=; x,val=linprog(c,A,b,Aeq,beq,vlb,vub); a x=

47、x Q=-val plot(a,Q,.),axis(0 0.1 0 0.5),hold on a=a+0.001;end xlabel(a),ylabel(Q)To Matlab(xxgh5)a = 0.0030 x = 0.4949 0.1200 0.2000 0.0545 0.1154 Q = 0.1266a = 0.0060 x = 0 0.2400 0.4000 0.1091 0.2212 Q = 0.2019a = 0.0080 x = 0.0000 0.3200 0.5333 0.1271 0.0000 Q = 0.2112a = 0.0100 x = 0 0.4000 0.584

48、3 0 0 Q =0.2190a = 0.0200 x = 0 0.8000 0.1882 0 0 Q =0.2518 a = 0.0400 x = 0.0000 0.9901 0.0000 0 0 Q =0.2673计算结果:计算结果:五、五、 结果分析结果分析返 回4 4.在a=0.006附近有一个转折点,在这一点左边,风险增加很少时,利润增长 很快。在这一点右边,风险增加很大时,利润增长很缓慢,所以对于风险和 收益没有特殊偏好的投资者来说,应该选择曲线的拐点作为最优投资组合, 大约是a*=0.6%,Q*=20% ,所对应投资方案为: 风险度 收益 x0 x1 x2 x3 x4 0.006

49、0 0.2019 0 0.2400 0.4000 0.1091 0.2212 3.3.曲线上的任一点都表示该风险水平的最大可能收益和该收益要求的最小风险。对于不同风险的承受能力,选择该风险水平下的最优投资组合。2 2.当投资越分散时,投资者承担的风险越小,这与题意一致。即: 冒险的投资者会出现集中投资的情况,保守的投资者则尽量分散投资。1.1.风险大,收益也大。例例5 5 产销量的最佳安排产销量的最佳安排-无约束优化问题无约束优化问题 某厂生产一种产品有甲、乙两个牌号,讨论在产销平衡的情况下如何确定各自的产量,使总利润最大. 所谓产销平衡指工厂的产量等于市场上的销量. 符号说明符号说明z(x1

50、,x2)表示总利润;p1,q1,x1分别表示甲的价格、成本、销量;p2,q2,x2分别表示乙的价格、成本、销量; aij,bi,i,ci(i,j =1,2)是待定系数.基本假设基本假设1 1价格与销量成线性关系价格与销量成线性关系利润既取决于销量和价格,也依赖于产量和成本。按照市场规律,甲的价格 p1会随其销量 x1的增长而降低,同时乙的销量 x2的增长也会使甲的价格有稍微的下降,可以简单地假设价格与销量成线性关系,即: p1 = b1 - a11 x1 - a12 x2 ,b1,a11,a12 0,且a11 a12;同理, p2 = b2 - a21 x1- a22 x2 ,b2,a21,a

51、22 0,且a22 a21 .2 2成本与产量成负指数关系成本与产量成负指数关系甲的成本随其产量的增长而降低,且有一个渐进值,可以假设为负指数关系,即: 0,11111111crcerqx 同理, 0,22222222crcerqx 模型建立模型建立 若根据大量的统计数据,求出系数b1=100,a11=1,a12=0.1,b2=280,a21=0.2,a22=2,r1=30,1=0.015,c1=20, r2=100,2=0.02,c2=30,则问题转化为无约束优化问题:求甲,乙两个牌号的产量x1,x2,使总利润z最大. 为简化模型,先忽略成本,并令a12=0,a21=0,问题转化为求: z1

52、 = ( b1 - a11x1 ) x1 + ( b2 - a22x2 ) x2 的极值. 显然其解为x1 = b1/2a11 = 50, x2 = b2/2a22 = 70,我们把它作为原问题的初始值.总利润为:总利润为: z z( (x x1 1,x,x2 2)=()=(p p1 1-q-q1 1) )x x1 1+(+(p p2 2-q-q2 2) )x x2 2 模型求解模型求解 1.建立M-文件fun.m: function f = fun(x) y1=(100-x(1)- 0.1*x(2)-(30*exp(-0.015*x(1)+20)*x(1); y2=(280-0.2*x(1)

53、- 2*x(2)-(100*exp(-0.02*x(2)+30)*x(2); f=-y1-y2; 2.输入命令: x0=50,70; x=fminunc(fun,x0), z=fun(x) 3.计算结果: x=23.9025, 62.4977, z=6.4135e+003 即甲的产量为23.9025,乙的产量为62.4977,最大利润为6413.5.To Matlab(wliti5)返回实验作业实验作业1. 求下列函数的极小点: 1) 2123222118294xxxxxXf;2) 212122212223xxxxxxXf;3) 224121 xXf. 第 1) ,2)题的初始点可任意选取,

54、第 3)题的初始点取为TX1 , 00.2. 2. 梯子长度问题梯子长度问题一楼房的后面是一个很大的花园. 在花园中紧靠着楼房有一个温室,温室伸入花园 2m,高 3m,温室正上方是楼房的窗台. 清洁工打扫窗台周围,他得用梯子越过温室,一头放在花园中,一头 靠在楼房的墙上. 因为温室是不能承受 a 梯子压力的,所以梯子太短是不行的. 现清洁工只有一架 7m 长的梯子, b 你认为它能达到要求吗? 能 满足要求的梯子的最小 长度为多少? 3. 3. 陈酒出售的最佳时机问题陈酒出售的最佳时机问题某酒厂有批新酿的好酒,如果现在就出售,可得总收入 R0=50 万元(人民币),如果窖藏起来待来日(第 n

55、年)按陈酒价格出售,第 n 年末可得总收入60neRR (万元),而银行利率为 r=0.05,试分析这批好酒窖藏多少年后出售可使总收入的现值最大. (假设现有资金 X 万元,将其存入银行,到第 n 年时增值为 R(n)万元,则称 X 为 R(n)的现值.)并填下表:第一种方案:将酒现在出售,所获 50 万元本金存入银行;第二种方案:将酒窖藏起来,待第 n 年出售。(1) 计算 15 年内采用两种方案,50 万元增值的数目并 填入表 1,2 中;(2) 计算 15 年内陈酒出售后总收入 R(n)的现值填入 表 3 中。表 1 第一种方案第 1 年第 2 年第 3 年第 4 年第 5 年第 6 年

56、第 7 年第 8 年第 9 年第 10 年第 11 年第 12 年第 13 年第 14 年第 15 年表 2 第二种方案第 1 年第 2 年第 3 年第 4 年第 5 年第 6 年第 7 年第 8 年第 9 年第 10 年第 11 年第 12 年第 13 年第 14 年第 15 年表 3 陈酒出售后的现值第 1 年第 2 年第 3 年第 4 年第 5 年第 6 年第 7 年第 8 年第 9 年第 10 年第 11 年第 12 年第 13 年第 14 年第 15 年LINGO快速入门快速入门在模型窗口中输入如下代码:min=2*x1+3*x2;x1+x2=350;x1=100;2*x1+x2=6

57、00; 注:非负约束可省略例例1.1 如何在如何在LINGO中求解如下的中求解如下的LP问题:问题:例例1.2 使用使用LINGO软件计算软件计算:6个发点个发点8个收点的最小费用运输问题。个收点的最小费用运输问题。产销单位运价如下表产销单位运价如下表。6个发点个发点8个收点的最小费用运输问题共有个收点的最小费用运输问题共有48个变量,个变量,14个约束条个约束条件。件。使用使用LINGO软件,编制程序如下:软件,编制程序如下:model: !6发点8收点运输问题;sets: warehouses/wh1.wh6/: capacity; vendors/v1.v8/: demand; link

58、s(warehouses,vendors): cost, volume;Endsets min=sum(links: cost*volume); !目标函数; for(vendors(J):sum(warehouses(I): volume(I,J)=demand(J); !需求约束;for(warehouses(I):sum(vendors(J): volume(I,J)=capacity(I); !产量约束;data: !这里是数据; capacity=60 55 51 43 41 52; demand=35 37 22 32 41 32 43 38; cost=6 2 6 7 4 2 9

59、 5 4 9 5 3 8 5 8 2 5 2 1 9 7 4 3 3 7 6 7 3 9 2 7 1 2 3 9 5 7 2 6 5 5 5 2 2 8 1 4 3;enddataend Global optimal solution found at iteration: 20 Objective value: 664.0000 Variable Value Reduced Cost CAPACITY( WH1) 60.00000 0.000000 CAPACITY( WH2) 55.00000 0.000000 CAPACITY( WH3) 51.00000 0.000000 CAPACI

60、TY( WH4) 43.00000 0.000000 CAPACITY( WH5) 41.00000 0.000000 CAPACITY( WH6) 52.00000 0.000000 DEMAND( V1) 35.00000 0.000000 DEMAND( V2) 37.00000 0.000000 DEMAND( V3) 22.00000 0.000000 DEMAND( V4) 32.00000 0.000000 DEMAND( V5) 41.00000 0.000000 DEMAND( V6) 32.00000 0.000000 DEMAND( V7) 43.00000 0.0000

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论