线性规划实验目的实验内容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。可建立以下线性规划模型:6543218121110913minxxxxxxz6,,2,1,09003.12.15.08001.14.0500600400x..654321635241ixxxxxxxxxxxxtsi问题二:某厂每日8小时的产量不低于1800件。为了进行质量控制,计划聘请两种不同水平的检验员。一级检验员的标准为:速度25件/小时,正确率98%,计时工资4元/小时;二级检验员的标准为:速度15小时/件,正确率95%,计时工资3元/小时。检验员每错检一次,工厂要损失2元。为使总检验费用最省,该工厂应聘一级、二级检验员各几名?解设需要一级和二级检验员的人数分别为x1、x2人,则应付检验员的工资为:212124323848xxxx因检验员错检而造成的损失为:21211282)%5158%2258(xxxx故目标函数为:2121213640)128()2432(minxxxxxxz约束条件为:0,0180015818002581800158258212121xxxxxx线性规划模型:213640minxxz0,01594535..212121xxxxxxts1.线性规划的标准形式:xminz=)(xf..ts)(xgi0(),,2,1mi其中目标函数)(xf和约束条件中)(xgi都是线性函数minf=cxs.t.Ax=b(1)x0这里A=(ija)m,n,x=T21nxxxb=T21nbbb,c=nccc21用单纯法求解时,常将标准形式化为: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用MATLAB优化工具箱解线性规划minz=cXbAXts..1、模型:命令:x=linprog(c,A,b)2、模型:minz=cXbAXts..beqXAeq命令:x=linprog(c,A,b,Aeq,beq)注意:若没有不等式:存在,则令A=[],b=[].bAX3、模型:minz=cXbAXts..beqXAeqVLB≤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表示初始点beqXAeq4、命令:[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.0xxxxxxz85003.003.003.001.001.001.0..654321xxxxxxts70005.002.041xx10005.002.052xx90008.003.063xx6,2,10jxj例2321436minxxxz120..321xxxts301x5002x203x解:编写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)321)436(minxxxz32120030xxx50120010111..321xxxtsS.t.Xz8121110913min9008003.12.15.000000011.14.0X500600400100100010010001001X,0654321xxxxxxX改写为:例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)结果:x=0.0000600.00000.0000400.00000.0000500.0000fval=1.3800e+004即在甲机床上加工600个工件2,在乙机床上加工400个工件1、500个工件3,可在满足条件的情况下使总加工费最小为13800。例2问题二的解答213640minxxzs.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)结果为: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影响,不受其他因素干扰。二、基本假设和符号规定符号规定:Si——第i种投资项目,如股票,债券ri,pi,qi----分别为Si的平均收益率,交易费率,风险损失率ui----Si的交易定额0r-------同期银行利率xi-------投资项目Si的资金a-----投资风险度Q----总体收益ΔQ----总体收益的增量三、模型的建立与分析1.总体风险用所投资的Si中最大的一个风险来衡量,即max{qixi|i=1,2,…n}2.购买Si所付交易费是一个分段函数,即pixixiui交易费=piuixi≤ui而题目所给定的定值ui(单位:元)相对总投资M很小,piui更小,可以忽略不计,这样购买Si的净收益为(ri-pi)xi3.要使净收益尽可能大,总体风险尽可能小,这是一个多目标规划模型:目标函数MAXniiiixpr0)(MINmax{qixi}约束条件niiixp0)1(=Mxi≥0i=0,1,…n4.模型简化:c.投资者在权衡资产风险和预期收益两方面时,希望选择一个令自己满意的投资组合。因此对风险、收益赋予权重s(0<s≤1),s称为投资偏好系数.模型3目标函数:mins{max{qixi}}-(1-s)niiiixpr0)(约束条件niiixp0)1(=M,xi≥0i=0,1,2,…nb.若投资者希望总盈利至少达到水平k以上,在风险最小的情况下寻找相应的投资组合。模型2固定盈利水平,极小化风险目标函数:R=min{max{qixi}}约束条件:niiiixpr0)(≥k,Mxpii)1(,xi≥0i=0,1,…na.在实际投资中,投资者承受风险的程度不一样,若给定风险一个界限a,使最大的一个风险qixi/M≤a,可找到相应的投资方案。这样把多目标规划变成一个目标的线性规划。模型1固定风险水平,优化收益目标函数:Q=MAX11)(niiiixpr约束条件:Mxqii≤aMxpii)1(,xi≥0i=0,1,…n四、模型1的求解模型1为:minf=(-0.05,-0.27,-0.19,-0.185,-0.185)(x0x1x2x3x4)Tx0+1.01x1+1.02x2+1.045x3+1.065x4=1s.t.0.025x1≤a0.015x2≤a0.055x3≤a0.026x4≤axi≥0(i=0,1,…..4)由于a是任意给定的风险度,到底怎样给定没有一个准则,不同的投资者有不同的风险度。我们从a=0开始,以步长△a=0.001进行循环搜索,编制程序如下:a=0;while(1.1-a)1c=[-0.05-0.27-0.19-0.185-0.185];Aeq=[11.011.021.0451.065];beq=[1];A=[00.025000;000.01500;0000.0550;00000.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=-valplot(