当前位置:文档之家› Lingo与线性规划

Lingo与线性规划

Ling o与线性规划线性规划得标准形式就是(1)其中称为口标函数,自变量称为决策变量,不等式组(1)称为约束条件、满足不等式组(1)得所有得集合称为可行域,在可行域里面使得Z取最小值得称为最优解,最优解对应得函数值称为最优值。

求解优化模型得主要软件有L i ng o、Ma t 1 a b> Ex c el等。

其中Lingo 就是一款专业求解优化模型得软件,有其她软件不可替代得方便功能。

本文将简要介绍其在线性规划领域得应用。

—、基本规定1、目标函数输入格式ma x二函数解析式;或者min二函数解析式;2、约束条件输入格式利用:>、V、〉=、〈二等符号。

但就是>与>二没有区别。

L ingo软件默认所以自变量都大于等于0、3、运算加(+),减(-),乘(*),除(/),乘方(x A a),要注意乘号(*)不能省略。

4、变量名不区分大小写字母,不超过32个字符,必须以字母开头。

5、标点符号每个语句以分号“;”结束,感叹号“!”开始得就是说明语句(说明语句也需要以分号";”结束)o但就是,mo d el, s e t s, data以":”结尾。

endsets, e n ddata, e n d尾部不加任何符号。

6、命令不考虑先后次序7、MODEL 语句一般程序必须先输入MODEL:表示开始输入模型,以“END”结束。

对简单(1)例1求目标函数得最小值,约束条件为输入Ling o 程序:min = 2*x1 + 3*x2;x I + x2 >= 350?x1 >= 1 0 0;2A *X 1 + x2 <= 600;有两种运行方式:1、点击工具条上得按钮 即可。

2、点击菜单:LINGO —Solve运行结果如下:下面对其各个部分进行说明:Gl o bal o p tima 1 solution f oun d :表示已找到全局最优解。

Ob j e ctive value :表示最优值得大小。

可见本题函数最小值8 00。

RovSlack or SurplusDual Price 1800.0000-1.0000002 CLOOCICICICI -4・00 OOOCI3 150.0CICICI O ・000000 4CLOOCICICICI1・000000Global optimal solution found ・Objective value:800.0000Infeasibilities:0 ・ OOOCICICITotal solver iterations:2Variable得模型,这两个语句也可以省略。

8、改变变量得取值范围bin (变量名); bnd (a,变量名,b ); free (变量名);gin (变量名);限制该变量为0或1、限制该变量介于a, b 之间、 允许该变量为负数、 限制该变量为整数、Value250.0000・dodoReduced Cost o ・000000 o・000000Infea s i b i I i ties:矛盾约束得数目。

T o tai s o 1 ver ite r a t i o ns:迭代次数。

Variable:变量。

本题有两个变量。

Vai u e:变量对应得最优解,即。

Reduced Cost:变量在最优解得基础上增加一个单位,目标函数值得改变量。

例如,一个变量得Red need Cost值为8,那么当该变量增加一个单位,在最大化(最小化)问题中目标函数值将减少(增大)8个单位。

Slack o r Surplus:表示接近等于得程度,即约束离相等还差多少。

在约束条件就是<=中,表示松弛程度,在约束条件就是> =中,不就是过剩程度。

如果约束条件就是则S 1 ack or Su r p lus为0,该约束就是个紧约束(或有效约束)。

如果一个约束就是矛盾得,即模型无可行解则Slack or s urplu s得值就是负数。

知道Slack or S u rplus得值,可以帮助我们发现优化模型中错误得约束条件。

在上例中第2与第4行松弛变量均为0,说明对于最优解来讲,两个约束(第2与4行)均取等号,即都就是紧约束,第3行为150,即最优解使得第3行过剩150、Dual Price :对偶价格得值,它表示约束条件中得常数,每增加一个单位,目标函数值改变得数量(在最大化问题中LI标函数值就是增加,在最小化问题中訂标函数值就是减少)。

比如,在上一个Min模型中第四行得1,表示2次xl+ X2 < =6 0 0增加一个单位到2 *x 1 + x2 <= 6 0 1,可以使目标值增加一1(因为第一行就是目标函数得DualPrice就是—1),即Object i ve valu e =7 9 9;如果增加J 个单位到59 9会使目标值增加到801o例2求目标函数得最小值.约束条件为输入L i ngo程序:min = 4*x1A2-x2^2+2*x3A2 + 12;3 次x1 + 2 次x2+x3=9;x1+x2+x3=-1 ;Af r e e(x1) ;free (x2); free (x3);运行结果:Local optirnal solution found ・ Objective vaLue: Infeasibilities:Extended soLver steps:Total solver iterations:即当时,。

二、灵敏度分析灵敬度分析就是指:找出模型变量系数得一个变化范圉,使得最优基(即最优 解)保持不变。

一般只对线性规划模型做灵敏度分析。

1、 灵敏度分析操作步骤第一步:菜单 ling o -->option s -->general so 1 ver --------------- >dua 1 putati o ns :prices & r ange s -->ok 、第二步:菜单 lingo --------- >range2、 灵敏度报告中常见得词汇C u rrent c o efficie n t:当前LI 标函数系数 A 1 1 owab 1 e inc r e a s e:允许增加量 Al 1 o w a b 1 e d e ere a se:允许减少量 C u rren t RHS :当前右边常数项 I NF I N I TY:表示正无穷。

例1求解下列模型:max = 72* x 1+6 4 *x2; x 1 +x2 <=50; 12*x1+8*x2 <= 48 0 ; 3<= 1 00;并做灵敏度分析。

VariableValue Reduced CostXI 丄・00ODOOD ・000000Z2B.0000000.000000 X3-10.000000.000000 152.0000 0.0000001Row Slack or Surplus1152.0000Dual Price -!.・2 0.0000003 0.000000-24.00000 64.00000求解报告:Global optimal solution found.Objective value:3360.000Infeasibilities:0.000000Total soLveir it-crations:2Var iable Value Reduced CostMl20・000000・000000X230・000000・000000ROW siac): or Surplus Dual Price1336D・000 1.000000z0・00000048・0000030.000000 2.0000004乂0・000000・000000灵敬度分析报告:Ranges in which the basis is unchanged:Objective Coefficient RangesCurrent Allowable AllowableVariable Coefficient Increase DecreaseXI72・0000024・000008・000000HZ"・0 0000E・000000"・00000Righthand Side PangesRow Current Allowsble AllowableRHS Increase Decrease250.0000010.00000 6.6666673480.000053.3333380・000004100.0000INFINITY40・00000灵敬度分析报告得解读:X1得系数变化范围就是(7 2-8,72+2 4)= ( 64, 9 6);x2得系数变化范围就是(64-1 6, 64+8)=(48,72)。

注意:x 1系数得允许范围需要x 2系数6 4不变, 反之亦然。

由于口标函数得费用系数变化并不影响约束条件,因此此时最优基不变可以保证最优解也不变,但最优值变化。

右边常数项中,第2行原来为5 0,当它在[506 6 7, 50+1 0 ] =[43、33,6 0]范围变化时,最优基保持不变。

第3行可以类似解释。

对第4行,原来为100 ,当它在[1 0 0-40, 100+8] = [60, +8]范围变化时,最优基保持不变。

不过山于此时约束发生变化,最优基即使不变,最优解、最优值也会发生变化。

三、数据输入对于大型得优化问题,即自变量比较多得时候,还像上两节那样输入口标函数与约束条件就比较麻烦了。

一般输入数据得方法有两种:一、建立向量、矩阵输入;二、调用外部数据。

这里仅介绍第一种方法。

K建立向量命令格式:集合名称/集合维数/:向量名称例如:sets:s e tl / 1、、9/: x;se t 2/ 1、、5 / : a, b;e n d se t s表示建立了两类集合。

第一类集合setl,维数为9,x与y就是向量名。

向量x二(x(l),…,x ( 9 )),其中x(i)就是x得元素。

第二类集合s e t2,维数为5, a与b都就是向量名。

向量a= (a(l), •••, a ( 5 )), 其中a ( i )就是a得元素。

向量b二(b ( 1 ),…,b(5)),其中b (i)就是b得元素。

2、建立矩阵命令格式:集合名称(集合1,集合2) /:矩阵名称例如:sets:setl/1、、3/: x ;se t 2 / 1、、4 / :a;link (setl, s e t2) : A;endsets表示建立了一个矩阵类1 i nk,其矩阵得阶数为,A就是具体得矩阵名。

有两个命令就是比较常见得:求与语句:sum(集合名(i ):含集合名(i)得语句);循环语句:for (集合名(i):循环得语句);例3:求目标函数得最小值,约束条件为输入L i ngo程序:mod e 1:sets:s e tl/1、、2 /:c, x;se t 2/1、、3 /: b ;li n k (s e t2, s etl):A;endse t sm a x= s um (set 1(i): c ( i ) *x( i ));f o r(s e t2(i):sum (lin k ( i , j):A ( i , j) *x(j)) <=b(i));d ata:c=ll 15;A=20 303 0 2 530 25;b二3 6 0 2 0 00 30 0 ;enddataend运行结果报告:G 丄otoal opciml solution :round ・ Iniea3ibilitie3:Total solver iterations:voriatolevalueRedacea CoseC( 1) 11・ 00000 0.000000 C( Z) L5.000000.000000 承1)0.000000 7.000000 2) 12.00000 0.000000 B( 1) 360.0000 0.000000 B( 2)2000.000 0.000000 B( 3) 300.0000 0.000000 A( l z 1) 20.00000 0.000000 A( lz 2) 30.00000 0.000000 A( 2Z 1) 30.00000 0.000000 A( 2, 2) 25.000000.000000 M 3, 1) 30.00000 0.000000 M 3, 2)25.00000 0.000000 Pou Slack or SurplusDual Price 1 160.0000 1.000000 2 0.000000 0.000000 31700.000 0.000000 40.0000000.6000000例4、某地区有三个蔬菜生产基地,佔计每年可供应本地区得蔬菜量表为:如果从各蔬菜生产基地到各地市得每吨蔬菜得运价表(单位:万元/吨)为:(1) 根据以上资料表制订一个使总得运费为最少得蔬菜调拨方案.(2) 如果有机会增加生产基地得产量1吨,问应当优先增加那个基地得产量?180.0000 O ・O ODOCJQ(3)如果将A到乙市得运价减少为5万元/吨,问这会影响最优得调拨方案吗?设:第i个蔬菜生产基地,,分别对应生产基地A, B,C;:第/•个蔬菜需求地,,分别对应蔬菜需求地市屮、乙、丙、T;:总运输费用;:表示得就是从第/•个生产基地向第丿•个地市运输得蔬菜数量;:表示得就是从第/•个生产基地向笫丿•个地市运输蔬菜得运价;:第i个蔬菜生产基地得蔬菜产量;:第丿个地市得蔬菜需求量;那么有优化模型:x n+x n+x l3+x l4<b}x2l + x22 +x n+ x24 < b2X3\ + X32 + X33 +— ^3x u+x21+x31=q}"'12 + 人22 + 人32 = QiA-13 +x23 +x33 = ^3A-I4+A-24+A-34=^4Xq >0,z = 1,2,3; j = 1,2、3,4输入Lingo程序求解模型:model:sets:se t 1/ 1、、3/: b ;s et 2 /I、、4 /: q ;link(setl, s e t2) : c , x;e n dsetsmin =sum (link (i, j ) :c(i, j)*x(i, j ));for (s e tl (i) :s u m (link( i , j) : x(i, j)) <=b ( i ));Q( 3 )3、0 0 00000、 000000Q( 4 ) 3、0 0 0 0 0 0、f o r (se t 2 (j) : sum ( 1 in k ( i, j) : x( i ,j))=q(j )); data: c =5, 8,7, 9 4, 9, 10, 7 & 4, 2, 9;end d at a e nd运行结果如下:G1 o bal opt imal solut i o n found>10 0、0000I nf e asi b i 1 i ties : To t al s o lver i t e ratio n s九 0 0 0 0000 0 00000 0 00000000000000000 0 0000、0 0 000 0Var 1 ableValue Re d 0、0B(2)8、00000 00、 B ( 3)3、0 0 00 0 00、 Q( 1)6、00 0 00 0 0、 Q( 2)6、0000 0 0、0 000 0 0c ( 1, 1) 5、00 0 0 0 0 0、00 0 000000000 c( 1, 2)8x 0000 0 0 0、0 0 0 00 C( 1, 3) 7、00 0 0000、000 0 0 0 0 c (1, 4) 9. 0 0 000 00、00000 0 C( 2, 1) 4.0000000、0 000 0 0 c ( 2 z 2) 9 0 0 0 0000、0 0000 C( 2, 3)10x 00000 0、00 0 0000C ( 2, 4) 7、0000 0 0 Ox00 0 0 0 0 C( 3, 1)8、000000 0、0000 0 0 c( 3, 2) 4 . 0 00 0 0 00、0、000000 C ( 3, 3)2、00 0 0 0 00 0 00 C( 3, 4) 9、0 0 0 00 00. 000000 0 0 X( 1, 1)1.000 0 00 0、0 X( lz 2)6、000000 0. 000 0 00 00 0 00 X( 1, 3 )0、00 0 00 0lx X( lz 4) 0、00 0 0000 0 0000x ( 2, 1)5、 0000000、0 0008 Ox 0 0 000 0一8、00 0 0000 02 . 00 0 000x ( 2, 2)0. 00000 0X( 2Z 3)0、 0000005. 0 0 0000000000X ( 2, 4)3、0 0000 00> 0 0 0000X( 3 ,1)0、0 0 0 0 00 7、0000 0 0X( 3, 2 )Ox 00 0 0 000、0 . 000000X ( 3, 3)3 . 0 000 0 00 0 000X( 3, 4)0、00 0 0 0 05、0riceRowS 1 a ck or SurplusD u al P0 00 0 0 011 0 0. 0 0 0 0-1>0 00020、00 0 0 0 00.0000000030、0 00000lx0 00040、0 0 0 0 004、00000 0 0 050、0 0 0 00 0-5、000 0 0 060、0 0 00 0 0 -8、 00000070、00000 0—6、X ( 1)5、00 0 0 00 1、0 0 0 00 0从该报告可以得到:1、 最优得调拨方案为:2、从来瞧生产基地A 得供应量增加1个单位,费用不变; 生产基地B 得供应量增加1个单位,费用减少1 ; 生产基地C 得供应量增加1个单位,费用减少4; 城市甲得需求量增加1个单位,费用减少-5 ,即增加5; 城市乙得需求量增加1个单位,费用减少即增加8: 城市丙得需求量增加1个单位,费用减少一6 ,即增加6 ; 城市丁得需求量增加1个单位,费用减少- 8 ,即增加8;3、从Slack or Surplus 来瞧,所有得约朿都就是紧约束。

相关主题