LINGO软件及其应用.doc
14页LINGO 软件及其应用一、求解线性规划例题1:目的函数:max z=2x1+3x2约束条件:x1+2x2<=84x1<=174x2<=13 x1,x2>=0输入语句:model:max=2*x1+3*x2;x1+2*x2<8;4*x1<17;4*x2<13;end阐明: 1)问题模型由MODEL:命令开始,END 结束,对简朴模型可以省略 2)目的函数必须由“min =”或“max =”开头 3)分号是LINGO的分隔符LINGO中的每一行都以分号结束,如果缺少,模型将无法求解若一种命令或语句一行写不下,可以分多行写,但是,最后结束命令时,一定别忘了打个分号“;”,一行内也可写多种命令,只要每个用分号分开即可 4)语句中乘号(*)不能省略,支持()的输入 5)LINGO中<与<=均代表<=,>与>=也均代表>= 6)LINGO中的注解必须用感慨号“!”开始,用分号结束在感慨号和分号之间的所有内容都将被LINGO忽视注释可以占据多行,也可以插入LINGO体现式之中 7)LINGO的命令历来不辨别大小写,当你在LINGO中定义变量时,每个变量都要以26个字母开始,背面可跟数字或者下划线,最多可以是32个字符。
8)软件默认决策变量是非负的如果需要一种变量取负数、整数或一定范畴内的值,可以通过变量限定函数加以限制@bin(x) 限制x为0或1@bnd(L,x,U) 限制L≤x≤U@free(x) 取消对变量x的默认下界为0的限制,即x可以取任意实数@gin(x) 限制x为整数在默认状况下,LINGO规定变量是非负的,也就是说下界为0,上界为+∞@free取消了默认的下界为0的限制,使变量也可以取负值@bnd用于设定一种变量的上下界,它也可以取消默认下界为0的约束求解成果如下: Global optimal solution found. Objective value: 14.12500 Total solver iterations: 1 Variable Value Reduced Cost X1 4.250000 0.000000 X2 1.875000 0.000000 Row Slack or Surplus Dual Price 1 14.12500 1.000000 2 0.000000 1.500000 3 0.000000 0.1250000 4 5.500000 0.000000例题2 一奶制品加工厂用牛奶生产A1,A2两种奶制品,1桶牛奶可以在甲车间用12小时加工成3公斤A1,或者在乙车间用8小时加工成4公斤A2。
根据市场需求,生产的A1,A2所有能售出,且每公斤A1获利24元,每公斤A2获利16元目前加工厂每天能得到50桶牛奶的供应,每天正式工人总的劳动时间480小时,并且甲车间每天至多能加工100公斤A1,乙车间的加工能力没有限制试为该厂制定一种生产筹划,使每天获利最大,并进一步讨论如下3个附加问题: 1) 若用35元可以买到1桶牛奶,应否作这项投资?若投资,每天最多购买多少桶牛奶? 2) 若可以聘任临时工人以增长劳动时间,付给临时工人的工资最多是每小时几元? 3) 由于市场需求变化,每公斤A1的获利增长到30元,应否变化生产筹划?模型代码如下:max=72*x1+64*x2;x1+x2<=50;12*x1+8*x2<=480;3*x1<=100;求解这个模型并做敏捷性分析,成果如下 Global optimal solution found at iteration: 0 Objective value: 3360.000 Variable Value Reduced Cost X1 20.00000 0.000000 X2 30.00000 0.000000 Row Slack or Surplus Dual Price 1 3360.000 1.000000 2 0.000000 48.00000 3 0.000000 2.000000 4 40.00000 0.000000 Ranges in which the basis is unchanged: Objective Coefficient Ranges Current Allowable AllowableVariable Coefficient Increase Decrease X1 72.00000 24.00000 8.000000 X2 64.00000 8.000000 16.00000 Righthand Side Ranges Row Current Allowable Allowable RHS Increase Decrease 2 50.00000 10.00000 6.666667 3 480.0000 53.33333 80.00000 4 100.0000 INFINITY 40.00000成果告诉我们:这个线性规划的最优解为x1=20,x2=30,最优值为z=3360,即用20桶牛奶生产A1, 30桶牛奶生产A2,可获最大利润3360元。
输出中除了告诉我们问题的最优解和最优值以外,尚有许多对分析成果有用的信息,下面结合题目中提出的3个附加问题予以阐明 3个约束条件的右端不妨看作3种“资源”:原料、劳动时间、车间甲的加工能力输出中Slack or Surplus给出这3种资源在最优解下与否有剩余:原料、劳动时间的剩余均为零,车间甲尚余40(公斤)加工能力 目的函数可以看作“效益”,成为紧约束的“资源”一旦增长,“效益”必然跟着增长输出中DUAL PRICES 给出这3种资源在最优解下“资源”增长1个单位时“效益”的增量:原料增长1个单位(1桶牛奶)时利润增长48(元),劳动时间增长1个单位(1小时)时利润增长2(元),而增长非紧约束车间甲的能力显然不会使利润增长这里,“效益”的增量可以看作“资源”的潜在价值,经济学上称为影子价格,即1桶牛奶的影子价格为48元,1小时劳动的影子价格为2元,车间甲的影子价格为零读者可以用直接求解的措施验证上面的结论,即将输入文献中原料约束milk)右端的50改为51,看看得到的最优值(利润)与否正好增长48(元)用影子价格的概念很容易回答附加问题1):用35元可以买到1桶牛奶,低于1桶牛奶的影子价格48,固然应当作这项投资。
回答附加问题2):聘任临时工人以增长劳动时间,付给的工资低于劳动时间的影子价格才可以增长利润,因此工资最多是每小时2元 目的函数的系数发生变化时(假定约束条件不变),最优解和最优值会变化吗?这个问题不能简朴地回答上面输出给出了最优基不变条件下目的函数系数的容许变化范畴:x1的系数为(72-8,72+24)=(64,96);x2的系数为(64-16,64+8)=(48,72)注意:x1系数的容许范畴需要x2系数64不变,反之亦然由于目的函数的费用系数变化并不影响约束条件,因此此时最优基不变可以保证最优解也不变,但最优值变化用这个成果很容易回答附加问题3):若每公斤A1的获利增长到30元,则x1系数变为30×3=90,在容许范畴内,因此不应变化生产筹划,但最优值变为90×20+64×30=3720 下面对“资源”的影子价格作进一步的分析影子价格的作用(即在最优解下“资源”增长1个单位时“效益”的增量)是有限制的每增长1桶牛奶利润增长48元(影子价格),但是,上9 面输出的CURRENT RHS 的ALLOWABLE INCREASE 和 ALLOWABLE DECREASE 给出了影子价格故意义条件下约束右端的限制范畴: milk)原料最多增长10(桶牛奶),time)劳动时间最多增长53(小时)。
目前可以回答附加问题1)的第2问:虽然应当批准用35元买1桶牛奶的投资,但每天最多购买10桶牛奶顺便地说,可以用低于每小时2元的工资聘任临时工人以增长劳动时间,但最多增长53.3333小时 需要注意的是:敏捷性分析给出的只是最优基保持不变的充足条件,而不一定是必要条件例如对于上面的问题,“原料最多增长10(桶牛奶)”的含义只能是“原料增长10(桶牛奶)”时最优基保持不变,因此影子价格故意义,即利润的增长不小于牛奶的投资反过来,原料增长超过10(桶牛奶),影子价格与否一定没故意义?最优基与否一定变化?一般来说,这是不能从敏捷性分析报告中直接得到的此时,应当重新用新数据求解规划模型,才干做出判断因此,从正常理解的角度来看,我们上面。





