用MATLAB优化工具箱解线性规划MATLAB软件求解线性规划的命令如下:1、x=linprog(c,A,b)用于求解模型:Minz=cX(1)s.t.AXbA是不等式约束的系数矩阵,b是相应的常数列向量,若没有不等式约束,则均用[]代替,即令A=[],b=[].2、x=linprog(c,A,b,Aeq,beq)用于求解模型:Minz=cX(2)AXbs.t.AeqX=beqAeq是等式约束的系数矩阵,beq是相应的常数列向量,若没有不等式约束,则均用[]代替.3、x=linprog(c,A,b,Aeq,beq,vlb,vub)用于求解模型:Minz=cX(3)AXbs.t.AeqX=beqvlbXvub若没有等式约束:AeqX=beq,则令Aeq=[],beq=[].如果某个变量无下界,则用-inf表示;如果某个变量无上界,则用inf表示;若决策变量x无下界和上界,则vlb和vub均用[]代替.4、x=linprog(c,A,b,Aeq,beq,vlb,vub,0X)也用于求解模型(3),其中0X表示线性规划的初始解,这种设计仅对中规模算法有效,通常可以缺省..5、[x,fval]=linprog(...)返回最优解x及x处的目标函数值fval.6、[x,fval,exitflag,output,lambda]=linprog(c,A,b,Aeq,beq,vlb,vub)也用于将最优目标值返回变量fval中.输出项exitflag的值描述程序运行的情况:当exitflag的值为1时,说明程序收敛于解x;当exitflag的值为0时,说明迭代次数达到了设定的最大次数;当exitflag的值小于0时,说明的情况比较多,可在MATLAB的help中通过搜索函数linprog查看.输出项output中的iterations表示程序的迭代次数;algorithm表示程序所用的算法,cgiterations给出共轭梯度迭代次数(仅对大规模算法).输出项lambda是解x处的Lagrange乘子,其中lower是对应于vlb的,upper是对应于vub的,ineqlin是对应于不等式约束的,eqlin是对应于等式约束的。在经济问题中,Lagrange乘子的含义是影子价格.7、[x,fval,exitflag,output,lambda]=linprog(c,A,b,Aeq,beq,vlb,vub,0X,options)输入中多了两项,0X是初始点,单纯型法不需要初始点.options是选择项,应用options为函数设置选项,其调用格式是:options=optimset(‘param1’,value1,‘param2’,value2,……)可以用options选择使用单纯型算法,具体格式:options=optimset(‘LargeScale’,‘off’,‘Simplex’,‘on’)注.linprog对应看MATLAB5.3中的lp.lp目前在6.3版中仍然使用,但在以后的新版本中将废除.例1任务分配问题:某车间有甲乙两台机床,可用于加工三种工件.假定这两台车床的可用台时数分别为800和900,三种工件的数量分别为400、600和500,且已知用三种不同车床加工单位数量不同工件所需的台时数和加工费用如下表.问怎样分配车床的加工任务,才能既满足加工工件的要求,又使加工费用最低?车床类型单位工件所需加工台时数单位工件的加工费用可用台时数工件1工件2工件3工件1工件2工件3甲0.41.11.013910800乙0.51.21.311128900解设在甲车床上加工工件1、2、3的数量分别是1x、2x、3x,在乙车床上加工工件1、2、3的数量分别是4x、5x、6x.可建立以下线性规划模型:123456142536123456min1391011128400600500..0.41.18000.51.21.39000,1,2,,6izxxxxxxxxxxxxstxxxxxxxi改写为123456min[1391011128]xxxzxxx1234561234561234560.41.110008000000.51.21.3900100100400..0100106000010015000xxxxxxxxxstxxxxxxxxx编写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某厂每日8小时的产量不低于1800件.为了进行质量控制,计划聘请两种不同水平的检验员.且每种检验员的日产量不高于1800件.一级检验员的标准为:速度25件/小时,正确率98%,计时工资4元/小时;二级检验员的标准为:速度15件/小时,正确率95%,计时工资3元/小时.检验员每检错一次,工厂要损失2元.为使总检验费用最省,该工厂应聘一级、二级检验员各几名?注:本问题应还有一个约束条件:1x、2x取整数.故它是一个整数线性规划问题.这里把它当成一个线性规划求解,求得其最优解刚好是整数:19x,20x,故它就是该整数规划的最优解.若用线性规划解法求得的最优解不是整数,将其取整后不一定是相应整数规划的最优解,这样的整数规划应用LINGO求解.例3(工业污水处理问题)某公司在一条主干河流沿岸有甲、乙两家企业,甲企业居上游,每天排污3万立方米;乙企业居下游,每天排污2万立方米,一条支流在乙企业处汇入主干河流。已知主干河流的流量为750万立方米,支流的流量为每天250万立方米,甲企业排放的污水流到乙企业处有25%的自然净化。环境保护要求河流中含污水不大于0.2%,因此,两企业都必须处理部分污水。已知甲企业处理1万立方米的污水的成本为1200元,乙企业处理1万立方米的污水的成本为850元,设计一个污水处理方案,使得在污水含量不大于0.2%的条件下,两企业的污水处理费用的总和最小。例4(生产安排问题)某糖果厂用A、B、C3中原料生产甲、乙、丙3种糖果。已知甲、乙、丙3种糖果中,A、B、C3种原料的含量、原料的成本、各种原料每月的限供量、糖果的单位加工费及售价见下表。设计该厂每月生产甲、乙、丙3种糖果的生产计划,使所获利润最大。表甲、乙、丙3种糖果的相关数据甲乙丙原料成本/(元/kg)限用量/kgA60%30%2.002000B1.502500C20%50%60%1.001200加工费/(元/kg)0.500.400.30售价/(元/kg)3.402.852.25例5(空气污染控制问题)某钢厂的钢铁生产对城市的空气造成污染,是该城市的主要污染源。钢厂主要有两个污染源:生产铁的高炉和将生铁炼成钢的平炉。造成空气中的污染成分有:微粒、硫氧化物和碳氢化合物。城市管理部门对该钢厂下达的3种污染物的减排任务见表6—1.表6—13种污染物的减排任务表(单位:kt)污染物质每年减排量微粒60硫氧化物150碳氢化合物125有效地减少排污的方法有3种:(1)增加高炉的高度。(2)安装过滤器。(3)在熔炉燃料中加入高级清洁燃料。每一种减少排污的方法都存在技术限制。3种减排方法的年减排量见表6—2。表6—23种减排方法的年减排量(单位:kt)污染物质加高烟囱过滤器改进燃料高炉平炉高炉平炉高炉平炉微粒12925201713硫氧化物354218315649碳氢化合物375328242920各种减排方法的年成本见表6—3表6—3各种减排方法的年成本(单位:百万元)减排方法高炉平炉加高烟囱810过滤器76改进燃料119设变量ix是技术限制的最大量的百分比,具体设置见表6—4表6—4各种减排方法的相关设置减排方法高炉平炉加高烟囱1x2x过滤器3x4x改进燃料5x6x设计一种排污方案,使其满足减排要求,并且成本最小。例6(农场管理问题)设某农场有3个分厂,影响每个农场收益的因素有两个:可使用的土地和分配的灌溉用水。3个农场的资源情况见表7—1表7—13个农场的资源农场可用土地/亩分配水量/立方米140060026008003300375注:1亩=10000/15平方米适合本地区的农作物有甜菜、棉花和高粱,它们的耗水量、期望净收入和根据市场预测得到的最大种植面积见表7—2.表7—23种农作物的耗水量、期望净收入和最大种植面积农作物耗水量/(立方米/亩)期望净收入/(元/亩)最大种植面积/亩甜菜31000600棉花2750500高粱1250325农场管理委员会要制定下一年的生产计划,制定计划时要求3个分厂的闲置土地的比例相同,目标是使全农场总预期净收入最大。