MATLAB线性规划

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

线性规划数学建模与数学实验理学院数学教研室实验目的实验内容2、掌握用数学软件包求解线性规划问题。1、了解线性规划的基本内容。*2、线性规划的基本算法。5、实验作业。3、用数学软件包求解线性规划问题。1、两个引例。4、建模案例:投资的收益与风险问题一:任务分配问题:某车间有甲、乙两台机床,可用于加工三种工件。假定这两台车床的可用台时数分别为800和900,三种工件的数量分别为400、600和500,且已知用三种不同车床加工单位数量不同工件所需的台时数和加工费用如下表。问怎样分配车床的加工任务,才能既满足加工工件的要求,又使加工费用最低?单位工件所需加工台时数单位工件的加工费用车床类型工件1工件2工件3工件1工件2工件3可用台时数甲0.41.11.013910800乙0.51.21.311128900两个引例解设在甲车床上加工工件1、2、3的数量分别为x1、x2、x3,在乙车床上加工工件1、2、3的数量分别为x4、x5、x6。可建立以下线性规划模型:6543218121110913minxxxxxxz6,,2,1,09003.12.15.08001.14.0500600400x..654321635241ixxxxxxxxxxxxtsi解答问题二:某厂每日8小时的产量不低于1800件。为了进行质量控制,计划聘请两种不同水平的检验员。一级检验员的标准为:速度25件/小时,正确率98%,计时工资4元/小时;二级检验员的标准为:速度15小时/件,正确率95%,计时工资3元/小时。检验员每错检一次,工厂要损失2元。为使总检验费用最省,该工厂应聘一级、二级检验员各几名?解设需要一级和二级检验员的人数分别为x1、x2人,则应付检验员的工资为:212124323848xxxx因检验员错检而造成的损失为:21211282)%5158%2258(xxxx故目标函数为:2121213640)128()2432(minxxxxxxz约束条件为:0,0180015818002581800158258212121xxxxxx线性规划模型:213640minxxz0,01594535..212121xxxxxxts解答返回1.线性规划的标准形式:xminz=)(xf..ts)(xgi0(),,2,1mi其中目标函数)(xf和约束条件中)(xgi都是线性函数minf=cxs.t.Ax=b(1)x0这里A=(ija)m,n,x=T21nxxxb=T21nbbb,c=nccc21用单纯法求解时,常将标准形式化为:2.线性规划的基本算法——单纯形法线性规划的基本算法——单纯形法例minz=10x1+9x2s.t.6x1+5x2≤6010x1+20x2≥150x1≤8x1,x2≥0引入松弛变量x3,x4,x5,将不等式化为等式,即单纯形标准形:minz=10x1+9x2s.t.6x1+5x2+x3=6010x1+20x2-x4=150x1+x5=8xi≥0(i=1,2,3,4,5)系数矩阵为:65100A=10200-10=(P1P2P3P4P5)10001b=(60,150,8)T显然A的秩ran(A)=3,任取3个线性无关的列向量,如P3P4P5称为一组基,记为B.其余列向量称为非基,记为N.于是f=cBxB+cNxN,Ax=BxB+NxN=b,则xB=B-1b-B-1NxN,f=cBB-1b+(cN–cBB-1N)xN令非基变量xN=0,解得基变量xB=B1b,称(xB,xN)为基解.基解的所有变量的值都非负,则称为基可行解,此时的基称为可行基.若可行基进一步满足:cN–cBB-1N≥0,即:cBB-1N-cN≤0则对一切可行解x,必有f(x)≥cBB-1b,此时称基可行解x=(B-1b,0)T为最优解.3.最优解的存在性定理将A的列向量重排次序成A=(B,N),相应x=(xB,xN)T,c=(cB,cN)基对应的变量xB称为基变量,非基对应的变量xN称为非基变量.定理1如果线性规划(1)有可行解,那么一定有基可行解.定理2如果线性规划(1)有最优解,那么一定存在一个基可行解是最优解.4.基可行解是最优解的判定准则因为f=cBB-1b+(cN–cBB-1N)xN,即f-0•xB+(cBB-1N-cN)xN=cBB-1b若基B=(1P,2P,,mP),非基N=(1mP,2mP,,nP),令j=Bc1BjP-jc,j=m+1,m+2,,n,则(1)可写成minfs.t.Bx+1BNNx=1Bbf+0·Bx+nmjjjx1=Bc1Bbx0称为(1)式的典式.定理3设(1x,2x,,mx)是规划(1)的一个可行基,B是对应的基阵,如果典式中的1,2,,m都不大于零,即对应的1m0,2m0,,n0,则基(1x,2x,,mx)对应的基可行解0X=01bB是最优解.令1Bb=m21,1BN=nmmmmmnmmnmm,2,1,,22,21,2,12,11,15.基可行解的改进线性规划(1)的典式变为:minfs.t.ix+nmjjijx1=ii=1,2,,mf+0·Bx+nmjjjx1=Bc1Bbx0定理4设(1x,2x,,mx)是规划(1)的一个可行基,B是对应的基阵,如果存在km0,使1)km,1,km,2,,kmm,中至少有一个大于零;2)所有的i0,i=1,2,,m则一定存在另一个可行基,它对应的基可行解使目标函数值更小.令0=kmiikmi,0,min=kmll,,则把lx从原有的基中取出来,把kmx加进后得到的(1x,2x,,lx,kmx,1lx,,mx)仍是基,即是所要找的新基.改进方法:返回用MATLAB优化工具箱解线性规划minz=cXbAXts..1、模型:命令:x=linprog(c,A,b)2、模型:minz=cXbAXts..beqXAeq命令:x=linprog(c,A,b,Aeq,beq)注意:若没有不等式:存在,则令A=[],b=[].bAX3、模型:minz=cXbAXts..beqXAeqVLB≤X≤VUB命令:[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]其中X0表示初始点beqXAeq4、命令:[x,fval]=linprog(…)返回最优解x及x处的目标函数值fval.解编写M文件xxgh1.m如下:c=[-0.4-0.28-0.32-0.72-0.64-0.6];A=[0.010.010.010.030.030.03;0.02000.0500;00.02000.050;000.03000.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)例1max6543216.064.072.032.028.04.0xxxxxxz85003.003.003.001.001.001.0..654321xxxxxxts70005.002.041xx10005.002.052xx90008.003.063xx6,2,10jxjToMatlab(xxgh1)例2321436minxxxz120..321xxxts301x5002x203x解:编写M文件xxgh2.m如下:c=[634];A=[010];b=[50];Aeq=[111];beq=[120];vlb=[30,0,20];vub=[];[x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub)ToMatlab(xxgh2)321)436(minxxxz32120030xxx50120010111..321xxxtsS.t.Xz8121110913min9008003.12.15.000000011.14.0X500600400100100010010001001X,0654321xxxxxxX改写为:例3问题一的解答问题编写M文件xxgh3.m如下:f=[1391011128];A=[0.41.110000000.51.21.3];b=[800;900];Aeq=[100100010010001001];beq=[400600500];vlb=zeros(6,1);vub=[];[x,fval]=linprog(f,A,b,Aeq,beq,vlb,vub)ToMatlab(xxgh3)结果:x=0.0000600.00000.0000400.00000.0000500.0000fval=1.3800e+004即在甲机床上加工600个工件2,在乙机床上加工400个工件1、500个工件3,可在满足条件的情况下使总加工费最小为13800。例2问题二的解答问题213640minxxzs.t.)45(3521xx改写为:编写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)ToMatlab(xxgh4)结果为:x=9.00000.0000fval=360即只需聘用9个一级检验员。注:本问题应还有一个约束条件:x1、x2取整数。故它是一个整数线性规划问题。这里把它当成一个线性规划来解,求得其最优解刚好是整数:x1=9,x2=0,故它就是该整数规划的最优解。若用线性规划解法求得的最优解不是整数,将其取整后不一定是相应整数规划的最优解,这样的整数规划应用专门的方法求解。返回投资的收益和风险一、问题提出市场上有n种资产is(i=1,2……n)可以选择,现用数额为M的相当大的资金作一个时期的投资。这n种资产在这一时期内购买is的平均收益率为ir,风险损失率为iq,投资越分散,总的风险越小,总体风险可用投资的is中最大的一个风险来度量。购买is时要付交易费,(费率ip),当购买额不超过给定值iu时,交易费按购买iu计算。另外,假定同期银行存款利率是0r,既无交易费又无风险。(0r=5%)已知n=4时相关数据如下:isir(%)iq(%)ip(%)iu(元)S1282.51103S2211.52198S3235.54.552S4252.66.540试给该公司设计一种投资组合方案,即用给定达到资金M,有选择地购买若干种资产或存银行生息,使净收益尽可能大,使总体风险尽可能小。基本假设:1.投资数额M相当大,为了便于计算,假设M=1;2.投资越分散,总的风险越小;3.总体风险用投资项目is中最大的一个风险来度量;4.n种资产Si之间是相互独立的;5.在投资的这一时期内,ri,pi,qi,r0为定值,不受意外因素影响;6.净收益和总体风险只受ri,pi,qi影响,不受其他因素干扰。二、基本假设和符号规定符号规定:S

1 / 32
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功