实验07最优化方法建模及实现_第1页
实验07最优化方法建模及实现_第2页
实验07最优化方法建模及实现_第3页
实验07最优化方法建模及实现_第4页
实验07最优化方法建模及实现_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

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

文档简介

1、 实验实验07 07 最优化方法建模及实现最优化方法建模及实现 实验目的实验目的实验内容实验内容3、基于最优化方法建模及实现、论文写作。、基于最优化方法建模及实现、论文写作。1、了解最优化问题的基本内容。、了解最优化问题的基本内容。2、用数学软件包、用数学软件包matlab求解求解(非非)线性规划问题。线性规划问题。4、实验题目:钢管的订购与运输。、实验题目:钢管的订购与运输。1、基础知识、例子。、基础知识、例子。3、建模案例:投资的收益与风险、建模案例:投资的收益与风险2、掌握线性规划及非线性规划建模及其、掌握线性规划及非线性规划建模及其MATLAB实现。实现。 最优化问题最优化问题v优化问

2、题,一般是指用“最好”的方式,使用或分配有限的资源,即劳动力、原材料、机器、资金等,使得费用最小或利润最大.v建立优化问题的数学模型 1) 确定问题的决策变量 2) 构造模型的目标函数和允许取值的范围,常用一组不等式来表示. T1min(max)( ),(,)s.t.( )0,1,2,nizf xxxxgxim或(1)(2)由(1)、(2)组成的模型属于约束优化,若只有(1)式就是无约束优化,f(x)称为目标函数,gi(x)称为约束条件若目标函数f(x)和约束条件g(x)都是线性函数,则称该模型是线性规划. 线性规划模型线性规划模型例1 、生产炊事用具需要两种资源劳动力和原材料,某公司制定生产

3、计划,生产三种不同的产品,生产管理部门提供的数据如下 A B C劳动力(小时/件)736原材料(千克/件)445利润(元/件)423 每天供应原材料200kg,每天可使用的劳动力为150h. 建立线性规划模型,使总收益最大,并求各种产品的日产量. 解解 第一步,确定决策变量. 用 分别表示A, B, C三种产品的日产量 第二步, 约束条件 原材料: 劳动力: 第三步,确定目标函数 AxBxCx445200ABCxxx736150ABCxxx423ABCZxxx 例2 一家广告公司想在电视、广播上做广告,其目的是尽可能多的招来顾客,下面是调查结果: 电视无线电 广播杂志白天最佳时间一次广告费用(

4、千元)40753015受每次广告影响的顾客数(千人)400900500200受每次广告影响的女顾客数(千人)300400200100 这家公司希望广告费用不超过800(千元)还要求:1)至少要有200万妇女收看广告;2)电视广告费用不超过500(千元) 3)电视广告白天至少播出3次,最佳时间至少播出2次;4)通过广播、杂志做的广告要重复5到10次.123412341234121234m ax400900500200407530158003004002001002000. .40755003,2,510,510Zxxxxxxxxxxxxs txxxxxx令 分别白天,最佳电视、广播、杂志广告次数

5、 1234,xxxx, 例例3: 任务分配问题:某车间有甲、乙两台机床,可用于加工三种工件。假定这两台车床的可用台时数分别为800和900,三种工件的数量分别为400、600和500,且已知用三种不同车床加工单位数量不同工件所需的台时数和加工费用如下表。问怎样分配车床的加工任务,才能既满足加工工件的要求,又使加工费用最低? 解解 设在甲车床上加工工件1、2、3的数量分别为x1、x2、x3,在乙车床上加工工件1、2、3的数量分别为x4、x5、x6。可建立以下线性规划模型: 解答 例例4: 某厂每日8小时的产量不低于1800件。为了进行质量控制,计划聘请两种不同水平的检验员。一级检验员的标准为:速

6、度25件/小时,正确率98%,计时工资4元/小时;二级检验员的标准为:速度15小时/件,正确率95%,计时工资3元/小时。检验员每错检一次,工厂要损失2元。为使总检验费用最省,该工厂应聘一级、二级检验员各几名?解解 设需要一级和二级检验员的人数分别为x1、x2人,则应付检验员的工资为:212124323848xxxx因检验员错检而造成的损失为:21211282)%5158%2258(xxxx 故目标函数为:故目标函数为:2121213640)128()2432(minxxxxxxz约束条件为:0, 0180015818002581800158258212121xxxxxx 线性规划模型:线性规

7、划模型:213640minxxz0, 01594535 . .212121xxxxxxts 解答返 回 线性规划模型的一般形式线性规划模型的一般形式11112min,1,2,., .,1,2,.,0,1,2,., .ni iinik kikik kiiucxa xb inst Aeq xbeq inxin 目标函数和所有的约束条件都是决策变量目标函数和所有的约束条件都是决策变量的线性函数。的线性函数。min. . ucxAxbstAeq Xbeqvlbxvub矩矩阵阵形形式式: 实际问题中实际问题中的优化模型的优化模型mixgtsxxxxfzMaxMiniTn, 2 , 1, 0)(. .),

8、(),()(1或x决策变量决策变量f(x)目标函数目标函数gi(x) 0约束条件约束条件数学规划数学规划线性规划线性规划(LP)二次规划二次规划(QP)非线性规划非线性规划(NLP)纯整数规划纯整数规划(PIP)混合整数规划混合整数规划(MIP)整数规划整数规划(IP)0-1整数规划整数规划一般整数规划一般整数规划连续规划连续规划 优化模型的分类优化模型的分类 线性规划问题的求解在理论上有单纯形法,在实际建模中常用以下解法: 1. 图解法 2. LINGO 软件包; 3. Excel中的规划求解; 4. MATLAB软件包. min z=cX bAXts. .1、模型:命令:x=linprog

9、(c,A,b) 2、模型:min z=cX bAXts. .beqXAeq命令:x=linprog(c,A,b,Aeq,beq) 或或 x=linprog(c,A,b,Aeq,beq,x0)或或 x,fval=linprog(c,A,b,Aeq,beq)注意注意:若没有不等式: 存在,则令A= ,b= .bAX 用用MATLAB优化工具箱解线性优化工具箱解线性linear规划规划 3、模型:min z=cX bAXts.beqXAeqVLBXVUB(low,up) 命令:1 x=linprog(c,A,b,Aeq,beq, VLB,VUB) 2 x=linprog(c,A,b,Aeq,beq,

10、 VLB,VUB, X0) 注意:1 若没有等式约束: , 则令Aeq= , beq= . 2其中X0表示初始点 beqXAeq4、命令:x,fval=linprog() 返回最优解返回最优解及及处的目标函数值处的目标函数值fval. 321436minxxxz 1231231232380120. .3005020 xxxxxxstxxx 解解: 编写编写M文件文件xxgh1.m如下:如下: c=6 3 4; A=1,2,-3;0 1 0; b=80;50; Aeq=1 1 1; beq=120; vlb=30,0,20; vub=; x,fval=linprog(c,A,b,Aeq,beq,

11、vlb,vub)To Matlab (xxgh1)123123123123min(6 3 4)1238001050. . 1 1 112030020 xzxxxxxxstxxxxx 例例5 解解 编写编写M文件文件xxgh2.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=;

12、x,fval=linprog(c,A,b,Aeq,beq,vlb,vub) To Matlab (xxgh2)max 6543216 . 064. 072. 032. 028. 04 . 0 xxxxxxz 85003. 003. 003. 001. 001. 001. 0. .654321xxxxxxts 70005. 002. 041xx 10005. 002. 052xx 90008. 003. 063xx 6, 2 , 10jxj 例例6 S.t.Xz8121110913min 9008003 . 12 . 15 . 000000011 . 14 . 0X500600400100100

13、010010001001X ,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.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 4

14、00.0000 0.0000 500.0000fval =1.3800e+004计算结果:计算结果: 即在甲机床上加工600个工件2,在乙机床上加工400个工件1、500个工件3,可在满足条件的情况下使总加工费最小为13800。 问题问题 213640minxxz s.t. )45(3521xx改写为:例例4的解答 编写编写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 Mat

15、lab (xxgh4) 结果为:结果为: x = 9.0000 0.0000 fval =360即只需聘用9个一级检验员。 注:注:本问题应还有一个约束条件:x1、x2取整数。故它是一个整数线性规划整数线性规划问题。这里把它当成一个线性规划来解,求得其最优解刚好是整数:x1=9,x2=0,故它就是该整数规划的最优解。若用线性规划解法求得的最优解不是整数,将其取整后不一定是相应整数规划的最优解,这样的整数规划应用专门的方法求解。返 回 1) 首先建立M文件fun.m,定义目标函数F(X):function f=fun(X)f=F(X); 其中X为n维变元向量,G(X)与Ceq(X)均为非线性函数

16、组成的向量,其它变量的含义与线性规划、二次规划中相同.用Matlab求解上述问题,基本步骤分三步:二、非线性规划问题及其二、非线性规划问题及其MatlabMatlab (). .()0()0MinF XAXbAeq XbeqstG XCeq XVLBXVUB 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,Ae

17、q,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文件迭代的初值参数说明变量上下限 注意:注意:1 fmincon函数提供了大型优化算法和中型优化算法。默认时,若在fun函数中提供了梯度(options参数的GradObj设置为on),并且只有上下界存在或只有等式约束,fmincon函数将

18、选择大型算法。当既有等式约束又有梯度约束时,使用中型算法。2 fmincon函数的中型算法使用的是序列二次规划法。在每一步迭代中求解二次规划子问题,并用BFGS法更新拉格朗日Hessian矩阵。3 fmincon函数可能会给出局部最优解,这与初值X0的选取有关。 1先建立先建立M文件文件 fun2.m,定义目标函数定义目标函数: function f=fun2(x) f=exp(x(1)*(4*x(1)2+2*x(2)2+4*x(1)*x(2)+2*x(2)+1);) 12424()(22122211xxxxxexfx x1+x2=0 s.t. 1.5+x1x2 - x1 - x2 0 -x1

19、x2 10 02再建立再建立M文件文件mycon2.m定义非线性约束:定义非线性约束: function g,ceq=mycon2(x) g=1.5+x(1)*x(2)-x(1)-x(2);-x(1)*x(2)-10; ceq= ;例例2 3主程序主程序youh2.m为为:x0=-1;1;A=;b=;Aeq=1 1;beq=0;vlb=;vub=;x,fval=fmincon(fun2,x0,A,b,Aeq,beq,vlb,vub,mycon2)MATLAB(youh2)4. 运算结果为运算结果为: x = -1.2247 1.2247 fval = 1.8951 12221122221212

20、min2250s.t.7005, 010fXxxgXxxgXxxxx 1先建立先建立M-文件文件fun3.m定义目标函数定义目标函数: function f=fun3(x) f=-2*x(1)-x(2);2再建立再建立M文件文件mycon3.m定义非线性约束:定义非线性约束: function g,ceq=mycon3(x) g=x(1)2+x(2)2-25;x(1)2-x(2)2-7; ceq=;例例3 3. 主程序主程序youh3.m为为: x0=3;2.5; VLB=0 0;VUB=5 10; x,fval,exitflag,output =fmincon(fun3,x0,VLB,VUB

21、,mycon3)MATLAB(youh3(fun3) 4. 运算结果为运算结果为: x = 4.0000 3.0000fval =-11.0000exitflag = 1output = iterations: 4 funcCount: 17 stepsize: 1 algorithm: 1x44 char firstorderopt: cgiterations: 返回返回 建模案例:投资的收益和风险建模案例:投资的收益和风险(1998A)(1998A) 二、基本假设和符号规定二、基本假设和符号规定 1.1.总体总体风险用所投资的风险用所投资的S Si i中最大的一个风险来衡量,即:中最大的一

22、个风险来衡量,即: iiqxinmax|1,2, 三、模型的建立与分析三、模型的建立与分析 3.3.建立模型建立模型00101 2max ()minmax (). ., ,niiiiiiniiiirp xq xp xMs txin 双目标模型双目标模型为:为: 4.4.模型简化模型简化00101 2max (). .(), ,niiiiiiniiiirp xq xaMs tp xMxin 即模型为即模型为: 四、模型四、模型1 1的求解的求解siri (%)qi (%)pi (%)ui (元)(元)S0(银行)5000S1282.51103S2211.52198S3235.54.552S425

23、2.66.540将将n=4,M=1,及平均收益率及平均收益率ri, 风险损失率风险损失率qi,费率费率 pi代入模型代入模型1得:得:00101 2max (). .(), ,niiiiiiniiiirp xq xaMs tp xMxin 由于由于a是任意给定的风险度,到底怎样给定没有一个准是任意给定的风险度,到底怎样给定没有一个准则,不同的投资者有不同的风险度。我们从则,不同的投资者有不同的风险度。我们从a=0开始,以开始,以步长步长a=0.001进行循环搜索,编制程序如下:进行循环搜索,编制程序如下: a=0;while(1.1-a)1 c=-0.05 -0.27 -0.19 -0.185

24、 -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); ax=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)模型模型1 1的的MATLABMATLAB程序:程序:

25、a=0.006计算结果:计算结果: 4. 在a=0.006=0.006附近有一个转折点,在这一点左边,风险增加很少时,利润增长很快。在这一点右边,风险增加很大时,利润增长很缓慢,所以对于风险和收益没有特殊偏好的投资者来说,应该选择曲线的拐点作为最优投资组合, 大约是a*=0.6%,Q*=20% ,所对应投资方案为: 风险度风险度 收益收益 x0 x1 x2 x3 x4 0.0060 0.2019 0 0.2400 0.4000 0.1091 0.2212 3. 3. 曲线上的任一点都表示该风险水平的最大可能收益和该收益要求的最小风险。对于不同风险的承受能力,选择该风险水平下的最优投资组合。当投

26、资越分散时,投资者承担的风险越小,这与题意一致。 即: 冒险的投资者会出现集中投资的情况,保守的投资者则尽量分散投资。1. 1. 风险大,收益也大。模型模型1 1的结果分析的结果分析 此模型又可改写为min y001s. t . 0,00,1,niiiiniiiiiirpxkpxMxqyxyinL模型模型2 2的求解:的求解: min y. . . 01234012341230 050 270 190 1850 185 101 10210451065=10 0250 0150 055xxxxxkxxxxxxyxyxy . (),40 0260 0,1, ,40ixyxiy由于k是任意给定的盈利

27、,到底怎样给定没有一个准则,不同的投资者有不同的盈利.我们从k=0.05开始,以步长k=0.01进行循环搜索,编制程序如下:模型模型2 2的求解:的求解: k=0.05while k0.26/1.01;C= 0 0 0 0 0 1;A= 0 0.025 0 0 0 -1;0 0 0.015 0 0 -1;0 0 0 0.055 0 -1;0 0 0 0 0.026 -1;B= 0;0;0;0;Aeq= 0.05 0.27 0.19 0.185 0.185,0;1 1.01 1.02 1.045 1.065,0;Beq= k;1;Vlb= 0;0;0;0;0;0;% or Vlb= zeros(

28、6,1);Vub= ;x,fval= linprog(C,A,B,Aeq,Beq,Vlb,Vub);模型模型2 2的的MATLABMATLAB求解:求解: kQ=fval x=xplot(k, Q, m.)axis(0 0.5 0 0.05)xlabel(收益k) ylabel(最小风险度Q)title(最小风险度Q随收益R的变化趋势图)hold onk=k+0.01;grid onend模型模型2 2的的MATLABMATLAB求解:求解: 00.050.10.150.20.250.30.350.40.450.500.0050.010.0150.020.0250.030.0350.040.0

29、450.05收 益 k最小风险度Q最 小 风 险 度 Q随 收 益 R的 变 化 趋 势 图模型模型2 2的结果分析:的结果分析: 此模型又可改写为此模型又可改写为0min (sy-(1-s)niiiirpx01s. t . 0,0niiiiiipxMxqyxy模型模型3 3的求解:的求解: 012340.050min (.270.190.1850.185sy-(1-s)()xxxxx. . . . (),012341234 101 10210451065=10 0250 0150 0550 0260 0,1, ,40ixxxxxxyxyxyxyxiy模型模型3 3的求解:的求解: s=0wh

30、ile s1;C= -0.05*(1-s),-0.27*(1-s),-0.19*(1-s),-0.185*(1-s),-0.185*(1-s),s;A= 0 0.025 0 0 0 -1;0 0 0.015 0 0 -1;0 0 0 0.055 0 -1;0 0 0 0 0.026 -1;B= 0;0;0;0;Aeq= 1 1.01 1.02 1.045 1.065,0;Beq= 1;Vlb= 0;0;0;0;0;0;% or Vlb= zeros(6,1);Vub= ;x,fval= linprog(C,A,B,Aeq,Beq,Vlb,Vub);模型模型3 3的的MATLABMATLAB程序:程序: sQ=x(6) x=xplot(s,Q,r.)axis(0 1 0 0.025)xlabel(权重s)ylabel(风险度Q)title(风险度Q随权重s的变化趋

温馨提示

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

评论

0/150

提交评论