数学建模社区-数学中国
标题:
今天开始,每天学点Lingo吧(Lingo一)
[打印本页]
作者:
X12345B
时间:
2015-7-17 23:52
标题:
今天开始,每天学点Lingo吧(Lingo一)
LINGO是用来求解线性和非线性优化问题的简易工具。LINGO内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO高效的求解器可快速求解并分析结果。
' x, `/ U/ L+ F7 ?( S
% d; q& }* Q% _8 {7 U! Z
§1 LINGO快速入门
. C! Y. X8 k: t: k0 s
1 e2 Z6 R3 Q& {5 f4 z
当你在windows下开始运行LINGO系统时,会得到一个窗口:
L: I, W1 ?# K$ X+ O# Z0 p" G
外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO的默认模型窗口,建立的模型都都要在该窗口内编码实现。下面举两个例子。
/ A% f4 D! W, O2 d$ N/ \
例1.1 如何在LINGO中求解如下的LP问题:
& W2 H e! k9 U) ~+ i
& T2 q5 L* c8 i
在模型窗口中输入如下代码:
) d; f5 ^2 f% I3 }" @$ x
min=2*x1+3*x2;
' w1 w( l. x6 C- e @8 _
x1+x2>=350;
8 d0 ]+ o; b6 c3 m' ]+ C
x1>=100;
4 z& ^' R. k& B4 B# L
2*x1+x2<=600;
) H4 i0 r6 C9 ]5 o
然后点击工具条上的按钮 即可。
# _/ q7 O; y; m& }- {0 Q
% R+ B" o* V3 i! y- R. h+ M5 p# m
例1.2 使用LINGO软件计算6个发点8个收点的最小费用运输问题。产销单位运价如下表。
3 I8 l# [& G5 i) R
单
- x7 Z3 A9 \1 I5 N8 k; A. ~5 e
位 销地
8 O7 Y& X$ A+ a2 Z- x: _2 [
运
0 i( a, n4 E8 }
价
$ z& Z4 O" a- v/ e+ F) L2 t
产地 B1 B2 B3 B4 B5 B6 B7 B8 产量
3 ?- u: ^* O4 t8 y, _8 T0 s
A1 6 2 6 7 4 2 5 9 60
3 w1 [% H3 [( ?9 R" F
A2 4 9 5 3 8 5 8 2 55
0 v2 A, L" h0 M9 o! B
A3 5 2 1 9 7 4 3 3 51
" B4 F. c; L1 x( O4 v3 {0 S; @+ I
A4 7 6 7 3 9 2 7 1 43
p0 B! x/ ?0 g. c: L
A5 2 3 9 5 7 2 6 5 41
! S( l4 E0 J5 {1 d! C0 E6 _
A6 5 5 2 2 8 1 4 3 52
' P1 Z! f2 \2 n6 \5 r/ \
销量 35 37 22 32 41 32 43 38
( I$ x4 f0 ?' g* F7 u$ {3 O; h
使用LINGO软件,编制程序如下:
1 K. U! N5 p+ l( W
model:
) K/ v, ^1 g$ U2 q1 O G. i
!6发点8收点运输问题;
' Q6 D5 n/ f6 A6 x( c0 ~, R( ?
sets:
1 ^ D/ V! c& Z2 c( p! _6 C" _
warehouses/wh1..wh6/: capacity;
2 b+ X. w R8 @- U3 E! ~! Y5 y
vendors/v1..v8/: demand;
7 D a8 C. o& l2 Q
links(warehouses,vendors): cost, volume;
$ O$ i9 @" `6 e; ~% W
endsets
5 Q; M5 J" ?- ?( k/ l+ B, z
!目标函数;
' N' ^" I7 z. c [0 _! ^
min=@sum(links: cost*volume);
9 C" j& O$ f1 w- H6 Z; q6 c" Z
!需求约束;
: t# `5 g7 O0 r/ \! T* z' f
@for(vendors(J):
7 z S' i+ G# Z& s) v
@sum(warehouses(I): volume(I,J))=demand(J));
( h, M2 N2 i6 X* E. G
!产量约束;
" l8 }. u1 _) z' v) `. R8 k
@for(warehouses(I):
' T/ y- y3 T, f+ K
@sum(vendors(J): volume(I,J))<=capacity(I));
( M7 L0 L. n( C a
( t! n% I+ _' U
!这里是数据;
( z* u2 k7 h, K3 S5 l9 l+ i4 h* U
data:
2 R# j J* a4 q) {
capacity=60 55 51 43 41 52;
r1 y3 `" p; ?' E
demand=35 37 22 32 41 32 43 38;
7 h; r" A r7 u; S D$ Q6 g
cost=6 2 6 7 4 2 9 5
" y3 X! [( l: ~5 B4 C( P- \
4 9 5 3 8 5 8 2
) S( d, `% \6 h* [
5 2 1 9 7 4 3 3
# U: {% V7 m, a5 p
7 6 7 3 9 2 7 1
; r& k7 L8 q- @% T" w
2 3 9 5 7 2 6 5
* O& t1 i3 `8 o3 F$ D) y
5 5 2 2 8 1 4 3;
) w* |0 _* h6 d( b1 R: ?; G
enddata
8 S# J4 ^4 G, G. j9 E
end
+ ?' t1 _" C" p m2 t6 E0 ?0 {/ \
然后点击工具条上的按钮 即可。
$ w- v# ~9 |6 m6 D' e
为了能够使用LINGO的强大功能,接着第二节的学习吧。
, I8 P1 [ Y' T
(明天见哦)
. P" Y' A" r. i
0 s& A) o2 X- Y$ w& ~
作者:
wujianjack2
时间:
2015-7-18 20:06
占个沙发,哈哈!
0 v2 M2 u' _. |
坐等更新........................... :-)
/ x$ w( t( A: ]# j2 Y2 ~4 Z5 [$ [
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5