数学建模社区-数学中国
标题:
今天开始,每天学点Lingo吧(Lingo一)
[打印本页]
作者:
X12345B
时间:
2015-7-17 23:52
标题:
今天开始,每天学点Lingo吧(Lingo一)
LINGO是用来求解线性和非线性优化问题的简易工具。LINGO内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO高效的求解器可快速求解并分析结果。
5 q" M* U" i2 @5 x0 L! F- T
0 f% P9 y; c: @' a% F. H) Z
§1 LINGO快速入门
6 B! Q2 M, o2 {: I2 Z& }
1 A% M& ]1 a) `+ \! _8 d
当你在windows下开始运行LINGO系统时,会得到一个窗口:
) Y9 |2 j" a1 _8 w( l
外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO的默认模型窗口,建立的模型都都要在该窗口内编码实现。下面举两个例子。
) A5 O0 ^3 j/ x% _6 p
例1.1 如何在LINGO中求解如下的LP问题:
9 T- T z- G1 Q; R5 _
- F, y+ r# w) C- K3 R! T6 u2 |
在模型窗口中输入如下代码:
* M: K1 k$ K( f" F
min=2*x1+3*x2;
8 q. | t, q4 T2 c1 t
x1+x2>=350;
1 J' u0 H; W( _! y8 M L
x1>=100;
6 i- \$ `' K! m
2*x1+x2<=600;
* n o# K( H4 O9 S- @ n% G
然后点击工具条上的按钮 即可。
$ j, s% v: V4 S$ u) |0 a
1 [# M% U1 I; R# ?
例1.2 使用LINGO软件计算6个发点8个收点的最小费用运输问题。产销单位运价如下表。
- y# o1 ?7 g0 c' J( N7 P
单
5 Q2 V, P* ?* R; d: K- O' I; j
位 销地
( s3 {4 O1 M& }& ^4 {( {: |
运
" ]' k' m. w, ^/ n$ n
价
8 G k0 a' w# |+ k' ]
产地 B1 B2 B3 B4 B5 B6 B7 B8 产量
8 Y# t8 R7 H4 y/ U1 G5 K
A1 6 2 6 7 4 2 5 9 60
2 I2 J r* Y. _7 D
A2 4 9 5 3 8 5 8 2 55
9 I3 G: m; b! {( [& `
A3 5 2 1 9 7 4 3 3 51
0 V/ \5 }# d' L# x, ^0 A" u
A4 7 6 7 3 9 2 7 1 43
2 U/ B) B; n9 W; p! P6 e
A5 2 3 9 5 7 2 6 5 41
) A2 K3 I: _5 x* a0 B1 M' v5 Y
A6 5 5 2 2 8 1 4 3 52
3 O" I* ?2 b. g2 s6 k
销量 35 37 22 32 41 32 43 38
/ e8 l3 i" ~5 \' x
使用LINGO软件,编制程序如下:
# H! v6 @. K* d& f3 j, T! W
model:
0 E) V" {9 W2 ]3 L- T
!6发点8收点运输问题;
% z, b8 _: o; p
sets:
/ M, y) j P: G& k& [" Y7 N
warehouses/wh1..wh6/: capacity;
! g2 K4 i! \7 t; m: e8 p
vendors/v1..v8/: demand;
3 A1 E4 r& B. V. Q9 [) S8 q
links(warehouses,vendors): cost, volume;
- O) j3 b/ T1 M! j
endsets
1 d- G2 R0 [& L
!目标函数;
u5 m0 L7 b4 z
min=@sum(links: cost*volume);
* c% o2 v/ r. L! @/ G) V, q
!需求约束;
6 m6 }0 g! h6 ~# n" S/ X U/ k
@for(vendors(J):
/ N2 g" a1 R9 {8 C" K: j
@sum(warehouses(I): volume(I,J))=demand(J));
4 J! B' x2 t7 {9 d2 q2 N/ s9 X
!产量约束;
- ^. V& D) i4 { m+ A; V5 z
@for(warehouses(I):
* S% T# {4 A# ?! v% V' V8 ?. [6 w1 u
@sum(vendors(J): volume(I,J))<=capacity(I));
+ j! R7 B% Y! ]2 |3 w v3 e
7 a! K# N1 |6 K7 m5 y/ S/ j
!这里是数据;
. U5 v! x Z2 ~6 h" K
data:
: c% s6 g/ [" o x, Y
capacity=60 55 51 43 41 52;
7 O8 E& k% `6 F. A
demand=35 37 22 32 41 32 43 38;
- C7 v( Y, P. ], N5 m
cost=6 2 6 7 4 2 9 5
% s3 {, @4 V' x' y
4 9 5 3 8 5 8 2
( E/ z B5 W' q |' U
5 2 1 9 7 4 3 3
, |" y. g* {! m" X Z0 x
7 6 7 3 9 2 7 1
4 j: ]8 @5 A1 a/ x* n
2 3 9 5 7 2 6 5
9 C- L9 I! U9 ~, H
5 5 2 2 8 1 4 3;
- ^) E# h& E/ v2 d* O
enddata
9 o* l, _9 p/ r5 K3 d+ l9 u/ H }
end
# N, S& Q k: E. z
然后点击工具条上的按钮 即可。
, G* M8 O S7 b6 X# {
为了能够使用LINGO的强大功能,接着第二节的学习吧。
8 u- m3 l$ M+ r3 F& J I
(明天见哦)
2 v1 S5 q6 _+ w/ O& g1 m3 _$ U
! t1 i8 f/ I* x
作者:
wujianjack2
时间:
2015-7-18 20:06
占个沙发,哈哈!
2 J6 T8 A4 N* ]" }
坐等更新........................... :-)
% d: P, L: A( b3 {" {& H9 ~
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5