LINGO是用来求解线性和非线性优化问题的简易工具。LINGO内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO高效的求解器可快速求解并分析结果。( A/ Y/ N: m: p
: ^$ u4 O0 [$ @. m1 F
§1 LINGO快速入门' F G- K, G/ Y. D% l9 A0 H
6 s1 G* I& W3 O6 Z当你在windows下开始运行LINGO系统时,会得到一个窗口: 2 ~- M; V6 U* E外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO的默认模型窗口,建立的模型都都要在该窗口内编码实现。下面举两个例子。 . L4 W; P1 P' T* t- n- h) c例1.1 如何在LINGO中求解如下的LP问题:6 N, C9 W, B# u& g
4 n [0 r( D9 K8 F% j" M0 i
在模型窗口中输入如下代码:0 P8 y# \3 L1 S$ R
min=2*x1+3*x2; ( Y8 R! w+ x$ h% r, k; N Y" Y$ ^x1+x2>=350;4 L- N; a6 H, {7 g2 B
x1>=100; * p1 d/ W1 ~& H2*x1+x2<=600;- m5 c& w6 W' h9 ~
然后点击工具条上的按钮 即可。 4 y# _0 `$ O& f% T: {4 x % R L+ o+ _* Q7 ^% ^# D* K例1.2 使用LINGO软件计算6个发点8个收点的最小费用运输问题。产销单位运价如下表。 7 [) ~& F l+ e: O单+ Q7 P! K9 O! U. F; K
位 销地! y- z8 ?, Y" M
运" x! ~% E. \8 X/ a, G- \
价3 \$ b$ B/ D! p' J! n
产地 B1 B2 B3 B4 B5 B6 B7 B8 产量% J% F# J' {; m5 H. b- N; }- z) t
A1 6 2 6 7 4 2 5 9 60" W0 g8 O2 P. M$ U3 A
A2 4 9 5 3 8 5 8 2 55 $ E( s2 f6 \! N) R/ D# t, y/ g5 HA3 5 2 1 9 7 4 3 3 51 # K& N7 t: \+ @- Y9 r- vA4 7 6 7 3 9 2 7 1 43+ U3 W& R# l! t1 @
A5 2 3 9 5 7 2 6 5 41 7 z. K. i q! v( f2 ~A6 5 5 2 2 8 1 4 3 52 8 s2 Z% d4 L x2 {8 p. O7 g销量 35 37 22 32 41 32 43 38 5 \: l+ L1 W6 G& Y, E使用LINGO软件,编制程序如下:+ G$ j. D: D% V' ]+ k. ?' y
model:' A2 s# b! I9 Q0 d- S
!6发点8收点运输问题; 9 `+ P* z- V$ F. N; hsets: 2 z5 ~4 Q7 g7 Z' s2 T; L warehouses/wh1..wh6/: capacity;# O$ s0 a& I4 @/ L8 k/ u+ Z% a6 P
vendors/v1..v8/: demand; , S3 a6 L2 I2 X( I6 d/ P links(warehouses,vendors): cost, volume; 8 J7 H$ {! {8 J2 ]5 D8 _, A6 kendsets9 h6 `/ n2 c. v, J; Q; R
!目标函数; ; r6 o3 c% \' U8 L min=@sum(links: cost*volume);- s) [2 F" z7 ~; s7 o
!需求约束; * K L+ A, l. N | @for(vendors(J): , \; @- ]" N0 r- ` @sum(warehouses(I): volume(I,J))=demand(J)); ; `/ B5 ^ \, Z" A' P' p2 M8 Q!产量约束;. z. S* [7 I- ^
@for(warehouses(I):& j% ?! i4 X7 J3 W
@sum(vendors(J): volume(I,J))<=capacity(I));, [9 p- @/ ]1 P S