如何在lingo中使用集合_第1页
如何在lingo中使用集合_第2页
如何在lingo中使用集合_第3页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、例题 1. 在 lingo 中输入以下线性规划模型,并求解min z (i,j) Ad(i, j) x(i, j)s.t. x(1, j ) 1,jVx(i,j) 1, j 1,iV所有x(i,j)为非负实数,x(i,i) 0,i VV 1,2, ,10, A V V,d的数值如下表:d=0 8 5 9 12 14 12 16 17 228 0 9 15 16 8 11 18 14 225 9 0 7 9 11 7 12 12 179 15 7 0 3 17 10 7 15 1512 16 9 3 0 8 10 6 15 1514 8 11 17 8 0 9 14 8 1612 11 7 10

2、 10 9 0 8 6 1116 18 12 7 6 14 8 0 11 1117 14 12 15 15 8 6 11 0 1022 22 17 15 15 16 11 11 10 0;分析:这个模型输入的难点,在于变量的数量太多,足足有 100 个。约束条件也比较多,有 没有什么方便的输入方法?下面介绍 lingo 中集合的建立新建 lingo 文件 输入下面容model :sets :V/1.10/; ! 创立集合 V;A(V,V):d,x; !创立集合A是V乘V.而d,x是与A同结构的,即d, x分别是10*10矩阵; endsetsmin=sum(A(i,j):d(i,j)*x(i,

3、j);! 创立目标函数 ;sum(V(j):x(1,j)>=1;! 第一个约束条件 ;for (V(j)|j#gt#1:!i#gt#1 为逻辑判断语句表示 i>1 是返回真值 ,但这里不能直接写 i>1, 因为">" 是关系运算符不是 逻辑运算符 ;sum(V(i):x(i,j)=1;);!利用循环函数表达:当 i>1 即 i 从2到 10丨时,x(i,j):j=1.1O的和等于 1;for (V(i):x(i,i)=0;);data :d=0 8 5 9 12 14 12 16 17 228 0 9 15 16 8 11 18 14 225

4、9 0 7 9 11 7 12 12 179 15 7 0 3 17 10 7 15 1512 16 9 3 0 8 10 6 15 1514 8 11 17 8 0 9 14 8 1612 11 7 10 10 9 0 8 6 1116 18 12 7 6 14 8 0 11 11!输入d的数值;17 14 12 15 15 8 6 11 0 1022 22 17 15 15 16 11 11 10 0; en ddata end这个模型如果按照常规输入是什么样子呢?Lin go也提供这样的功能点lingo 菜单File EditlingoWindow Help :|72|划劃创选 gen

5、erate 点 display model得到下面的界面局部截图File Ldrndow HplpLlNbU匸碉Id易|届|宙列皤MGDKI.71 H1N= BTX12 + 5*XL3 + 9*X1 fl + 12 * X 1 5 + "*耳1石 + 12 * X I 7+1 * X_l_8 十 17 * X_l_9 + 22 * X_l_10+ B * X_2_l +9*X_2_3 + 15*X_2_4 + 1 * X_2_5 + 8 w X_2_6 +_11 X_2_7 +_L6 * X_2_8 +11 匸 X_2_9+22 * X_2_10 + I * X 3 1 + 9 7

6、X_3_2 +7_*_X_3_4 + 9匚X_3_5+ 11 *心+ 7 * X_3_7 + 12 * X_3_8 + 12 厂心_»+口丁 X_3_1C+厂X 4 1 + 15_" X 42 +_7_* X 4 3 - 3 7 X45 + 17 * X 4 6 + 10 7 X 4 7 + 7 *_X_4 a 4 15 厂隶4 9 + 15*X4 10 + 12*X51 + 16'"X52 + 9*X 5 3 + 3 * K_5_4 + 3 * X_S_6 +1C* X+ 6 * W_S 8 + 15 * X S_9+15 *X_5_10 + 14 *

7、X_e_l + 6 *X_6_2 + 11* X_6_3+17 * X_6_4 + 6*X_6_5-9-+_X_6_7 + 14 * X_6_3 + 3 *X_6_9 -It * X_10 + 12_*_X_?_1+11*X_7_2_+_7 士 X_7_3 + 10 *厂广切古 X_7_5_+_9 + X_7_5 +_6_i工_7-日 +6*_x2v_9 + 11 V X_7_10 + l*X_d_l + 18_*_X_8_2 + 12 T X_8_3 + 7 T X_8_4 + 14_1_X_0_6 + B *_X2S_7 * 11 *一门_号 + 11 厂心_1。+ 17_*_X_9_l

8、+_14 * X_9_2 +_12 * X_9_3 + 15 * X_9_4 + 15 T X_9_5 + 8X_9_6 十t'XS? + Ll_*_X_e + 10_*K_L0 + 23 * Z_10_l + 22» X 102 7 17 * X_1D_3 + 15 * X_1024_+ 15 * X_10_5 + 16 * X_10_6_+ 11 * X_L0_7_+ 11 * 灯応B + 10 *门心;Q21_X_l_2 - X_T_3_+ X_L_4 + x_l_5 亠 X_l_& + x_l_7 - k_J_8 - x_l_9 + xl 10->= 1

9、 ;匸if X I 2 + X_3_2 + X 4 2 + X_5_2 + X_6_2 + X_7 2 + X_Q_2 + X_9_2 + X10_2_=_l ;Ml X_1_S + X_2_3 + X_J_3 + X_5_3 十 X_£_3 + M + X_3_3 + X_9_3 + x21G_3_1 ;5 X_l_4 + X_2_ + X_3_4 + X_5_4 + X_£_4 + X_7_4 + X_9_4 + X_9_4 + x21O_4_=_1 ;|X_l_5 + X_2_5 + X_3_5 + X_4_5 + X_6_5 + X_?_5 + X_0_5 + X_

10、9_5 +X j0_5 - 1 :_7 X_l_6 - X_2_6 + x_3_6 +- X_5_6 亠 X_ + X_8_fi - X_9_6 +z210_o_-_l ;匚S1_X1_7 十 Z_2_7 + K_3_7 + :- X_5_7 + X_7 + K_3_ -+1 ;r? _X_1_6 + X_2_0 + X 3 9 + X_S + X_5_S + K_fc_e + X_7_B + X_9_0 + 口 0_匚一1 ;LIO? X_l_& + X_2_9 + X_3_9 + X_4 & - X_5_9 + X_6_9 + X_7_9 + X_B_9 + x210_9

11、= i ;Q11T X_l_10 + X_2_10 亠 X_3_L0 亠 X_4_10 + X_5_10 + X_6_10 + X_7_10 + X_8 ID + X 9 10 = T ;可见,这个规划如果普通输入的话,工作量是很大的,而且容易出错。 运行结果局部截图点lingo菜单,选solution ,做如下设置,可以使得报告更加简洁D|嘲日侮I徃I屯I唱I 口|创 刎酬® 囲団 后甩列 创剧Global optimal solution fcund.Objective value:55.00000Eiiitended alvez 假设teps;0Total solver ite

12、xations;0VariableValixeReduced CostDlr1)0.0000000,000000D1,2)e.OOOODDO.OQOOOODlf3)5.000030O.OGOOOOlr4)0000000,000000D(lr5)12,000000.000000D(1,6)1.000300.000000D(1#?)12.000DD0-000000D(lr9)1tOOQOO0,000000D1,9)IT,000000,000000D( lt10)22*000300.000000D(2,1),0000000,000000D(2f2)0,000000D.000000D(2t3)&

13、;.0000000.000000D2t们15*000300.000000D(2f5)1.000300-000000D(2f6J0.0000000,000000D(2,7)11,000000,000000D(2,B)18.000000.000000D(2rP)141.000000.000000巩 2,10)22.00000O-OOOGOOU3,1)5.0000000.000000D3,2)S.0000300.000000D(3,3)O.OOOODO0.000000ti/t nnftnnna nHrinnn这个报告很不简洁,因为我们只需要显示x中非零局部,其他信息都不是我们关心的。有什么方法可以使

14、得报告更简洁?设置完后结果是E? Edit UNGO Window tlTp肓2旧iWTEpMQl斜场险斜|回|证| S|ffi|罰椽|Glckal optimal solutloh fCtjective value:Total solver iterations:onnd.55.000000VariabLeValueReduced Co厅二X(rf1.0000000,000000X(1.3)1.00000C0.000000X(务5)1,0000000.000000X(料1.00000U0,000000X(Dr1.0000000,000000X(5f1.00000C0.000000X(1.列1

15、,0000000.000000X(7)l.OQOOOO0.000000X( 9ID)l.oaooao0.000000练习1.求以下线性规划模型maxz d(i, j)* x(i, j)(i,j) As.t. x(i, j) b(i),i Vj Vx(i, j)为非负实数,(i,j) A这里 V=1,2,3,7, A V V .b=49 38 49 44 58 50 47;d=1 2 3 1 2 1 22 3 4 1 2 2 34 1 1 2 1 5 11 2 2 2 3 1 12 1 2 3 5 3 12 2 2 1 3 2 41 1 1 1 2 1 1;参考答案model:sets :V/1

16、.7/:b;!创立集合V,而b是与V同结构的;A(V,V):d,x ; !创立集合A是 V乘 V.而d,x是与A同结构的,即d, x分别是10*10矩阵;en dsetsmax=sum(A(i ,j):d(i ,j )*x (i,j); !创立目标函数for( V(i):sum(V(j): x(i,j)<b(i););!第一个约束条件;data:b=49 38 49 44 58 50 47;d=1 2 3 1 2 1 22 3 4 1 2 2 34 1 1 2 1 5 11 2 2 2 3 1 12 1 2 3 5 3 12 2 2 1 3 2 4输入d的数值;1 1 1 1 2 1 1

17、;en ddataendGlobal optie日二 scluticn Obje匚匕jjve value;Tota亠 solver iterations:126C.000V=iiable f Value 、Reduced CostX( 1, 3)O.OCDOOOX( 2f 3)39.00000 0-000000X( 3, 6)49.00000 0.000000X( 4, 5)44,Q0Q03o,otjooaaX( 5# 5)5B.OCOOJI0.000000X( 6, 1)50,00000i0.000000X( lt 5)<7.00003/ 0.000000例题2. 一家公司需要决定四个

18、季度的帆船生产量,下四个季度的需求分别为40, 60, 75 ,25条,需要按时满足,每个季度生产能力是40条,每条生产费用400美元。如果加班,每条船的生产费为450美元。每个季度末,每条船的库存费用为20美元。假定生产提前期为0,库存为10条,如何安排生产使得总费用最小?创立lingo文件,输入皤 UNGO Madfl -例題 1model:sets:片 4/: DE出 RPf OP,二NV; !定义一个集合叫 quarters-1f 2> 3. 4 ;JDEM.RPrOFp为quaters上的属炷C几个闪兀議组?;!分别表示各嘩度的需卞:&正帝生产的产量.加班注产闘产苣,库

19、存量;ndsets1吐建戻合空束'下面是匚标因数和约束磐住;min=0 sum (quarters: 400 *RP+4 5Q*OP+20* IWV);肯巴音季庫的生产脅用加起未#本句也可写咸; n=im (yiarters (i) ; 400*p71 (i) 4 45C*Op (1 20*TNV (i i);Sfor (duartcrsdl:RPHH40);!各个季度的正常生产产童不超过百乩 这本来星四个约東式子;!用f#语句町以荷化为一个句子来喪迖,未旬也町頁融:!EfOTquaters:RP<4Q);& fcr (quarters (I) II I#GT#1;INV

20、(I)=INV<I-1)+RF(IJ4-OP<IHI®M(I>; !后三个季度库存必须满足的亲件,ItGTflS示工Al;INV (1) =10+RP (1) +OP (1) -DEM (1 ; !第一亍季度库存满足的衆件;data:!下面瑜入敖狷;DEM=4at60t75f25; !削个季度的需求童:enddaba!数為输.人第束;eno运行结果Solution Repurt -顿區 1Global optinial solution foundObeexivsIce:Variablej&,aa40.0000040.0000040.0000025.0000

21、0 Q OQOQOO 10.00000 35.DCOOO D- DDODOCi10.000000.000000D.DDODflO0.0000040.00000 60.000007S.OOOOCRow slack or surplus1 78450.002 D.OQOOOO3 0.0000004 D.QOOOOO5 15.DOQOOE0. QOQOflC10.000000BD.ODDDOQ6 0.0000()00-0000000,0000000.000000 o.aoDooo 0000000 0.000000 O.OOOOOQ 0.000000 20.000DQO.IJOOOOQO.MHKXW)

22、53.CDDDQ C TCCOOOO 23 .C&DC'J70.0000042C.0001Dual Price -1.00000030. DOOM50.00000SO.00000Q,OGDOOQ4nC .伍 1450.00004J匚 一 DDDO410.0000Total solves iterations:注1如果创立一个集合包含的元素较多,例如月份,只需Sets :Mo nth/仁12/en dsets 而不需要把1到12都罗列出来.注2:上面的程序由三局部组成集合段,目标和约束段,数据段,但一般lingo程序可以由五局部组成新增“初值设定“和'计算'两局部1集合段sets开场,endsets完毕2目标函数口"=或max=和约束段一些等式或不等式,或逻辑

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论