资源描述:
《经济数学建模规划实验》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、线性规划数学建模实验问题一:任务分配问题:某车间有甲、乙两台机床,可用于加工三种工件。假定这两台车床的可用台时数分别为800和900,三种工件的数量分别为400、600和500,且已知用三种不同车床加工单位数量不同工件所需的台时数和加工费用如下表。问怎样分配车床的加工任务,才能既满足加工工件的要求,又使加工费用最低?两个引例解设在甲车床上加工工件1、2、3的数量分别为x1、x2、x3,在乙车床上加工工件1、2、3的数量分别为x4、x5、x6。可建立以下线性规划模型:解答问题二:某厂每日8小时的产量不低于1800件。为了进行质量控制,计划聘请两种不同水平的检验员。一
2、级检验员的标准为:速度25件/小时,正确率98%,计时工资4元/小时;二级检验员的标准为:速度15小时/件,正确率95%,计时工资3元/小时。检验员每错检一次,工厂要损失2元。为使总检验费用最省,该工厂应聘一级、二级检验员各几名?解设需要一级和二级检验员的人数分别为x1、x2人,则应付检验员的工资为:因检验员错检而造成的损失为:故目标函数为:约束条件为:线性规划模型:解答返回1.线性规划的标准形式:用单纯法求解时,常将标准形式化为:2.线性规划的基本算法——单纯形法线性规划的基本算法——单纯形法引入松弛变量x3,x4,x5,将不等式化为等式,即单纯形标准形:显然A
3、的秩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若可行基进一步满足: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称为非基变量.定理
4、1如果线性规划(1)有可行解,那么一定有基可行解.定理2如果线性规划(1)有最优解,那么一定存在一个基可行解是最优解.4.基可行解是最优解的判定准则因为f=cBB-1b+(cN–cBB-1N)xN,即f-0•xB+(cBB-1N-cN)xN=cBB-1b5.基可行解的改进改进方法:返回用MATLAB解线性规划问题1、模型:命令:x=linprog(C,A,b)命令:x=linprog(C,A,b,Aeq,beq)注意:若没有不等式:存在,则令A=[],b=[].2、模型:3、模型:minz=CXVLB≤X≤VUB命令x=linprog(C,A,b,Aeq,beq,
5、VLB,VUB)注意:若没有等式约束:,则令Aeq=[],beq=[].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,
6、vlb,vub)ToMatlab(xxgh1)解:编写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)S.t.改写为:例3问题一的解答问题编写M文件xxgh3.m如下:f=[1391011128];A=[0.41.110000000.51.21.3];b=[800;900];Aeq=[100100010010001001];beq=[400600500]
7、;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问题二的解答问题改写为:编写M文件xxgh4.m如下:c=[40;36];A=[-5-3];b=[-45];Aeq=[];beq=[];vlb=zeros(2,
8、1);vu