数学建模社区-数学中国
标题:
今天开始,每天学点Lingo吧(Lingo一)
[打印本页]
作者:
X12345B
时间:
2015-7-17 23:52
标题:
今天开始,每天学点Lingo吧(Lingo一)
LINGO是用来求解线性和非线性优化问题的简易工具。LINGO内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO高效的求解器可快速求解并分析结果。
2 P7 G; t2 A; f+ |7 R% x2 `: z
5 T+ e0 P, Y/ r) D5 B% h
§1 LINGO快速入门
6 J* { k. C, K- n
! t% v! A9 u1 J& s2 S% _
当你在windows下开始运行LINGO系统时,会得到一个窗口:
% B7 N" Z$ o+ r+ K b* Q2 f
外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO的默认模型窗口,建立的模型都都要在该窗口内编码实现。下面举两个例子。
) v- t* n- \8 z8 e2 b
例1.1 如何在LINGO中求解如下的LP问题:
]2 q" Z0 N" D5 V8 j7 k
6 @3 C0 l6 j0 j& G! J
在模型窗口中输入如下代码:
# Q: L8 ]$ s i" L* X% h' S: t0 g
min=2*x1+3*x2;
, q' m( U, @+ m; I+ {
x1+x2>=350;
$ v" j# K9 j: H# A4 l5 x" V3 |8 C
x1>=100;
) w3 W1 G) W( k( y
2*x1+x2<=600;
) J4 e6 N/ n5 I& K* K
然后点击工具条上的按钮 即可。
5 ~1 G7 z/ c ~* e& g
/ L' v6 @4 n/ w+ p) U {
例1.2 使用LINGO软件计算6个发点8个收点的最小费用运输问题。产销单位运价如下表。
% X" ~+ C/ M: [
单
: j/ K7 _) ]% f6 U9 j$ V3 g& R
位 销地
" p; V: `# h& _% V- F6 q
运
4 p" V" K' ?5 |
价
4 |6 F" b( D0 o% p m1 e
产地 B1 B2 B3 B4 B5 B6 B7 B8 产量
( K+ v2 u$ ~0 E+ n6 S
A1 6 2 6 7 4 2 5 9 60
8 b6 e4 t. n# y# m& ~9 `/ T
A2 4 9 5 3 8 5 8 2 55
: l! c2 m$ p% L6 s; j, w
A3 5 2 1 9 7 4 3 3 51
$ P( t; I4 V0 G, o0 H
A4 7 6 7 3 9 2 7 1 43
1 D0 T/ |% j1 b
A5 2 3 9 5 7 2 6 5 41
. z1 s3 v: m: D( C
A6 5 5 2 2 8 1 4 3 52
5 L5 i7 @% S. c) Y. Z; q
销量 35 37 22 32 41 32 43 38
4 ^# R+ a, Q5 J1 d9 e
使用LINGO软件,编制程序如下:
8 p1 b" I9 S4 ^# [& o
model:
* h- q3 C, n, B9 E3 _1 f# c+ I8 n: ^3 l
!6发点8收点运输问题;
% O1 N$ X4 n7 h5 q$ p
sets:
, F2 q8 Y) V$ s
warehouses/wh1..wh6/: capacity;
7 Y+ i' }9 Q7 V; u/ _. x
vendors/v1..v8/: demand;
! X0 T. R& {% B8 K% L
links(warehouses,vendors): cost, volume;
1 e! ~: e' t0 L/ I# c. x: K' `
endsets
- ~: Y. C& [* i. ^* H. m1 w
!目标函数;
( b8 [6 G& ?9 _- h! P2 H. b1 f
min=@sum(links: cost*volume);
5 {4 e+ G$ X0 n; m' \/ f3 f
!需求约束;
! `4 E/ ?& b% x3 |; A3 p3 X
@for(vendors(J):
! r3 n J. R7 D, j
@sum(warehouses(I): volume(I,J))=demand(J));
/ D( Z4 ~% P( \+ M2 p! w. Q# `
!产量约束;
, n) P5 I, ^# f- B; |
@for(warehouses(I):
) a: f: O) _4 k. }* Q* s4 E J
@sum(vendors(J): volume(I,J))<=capacity(I));
- V4 o/ o5 v! l0 R# Q; c5 T$ _
2 v5 C- x0 q% V9 H6 s; A y+ O
!这里是数据;
. {1 }% t' f" s/ {- `
data:
( ~. i& m7 T0 t2 ?0 B( X7 J; v
capacity=60 55 51 43 41 52;
8 V; Z) B5 N) x' @; B5 a
demand=35 37 22 32 41 32 43 38;
8 G2 @" W* t6 {
cost=6 2 6 7 4 2 9 5
* n4 Z. R( n; t2 A; B5 ~
4 9 5 3 8 5 8 2
9 ]1 a7 r$ x0 V9 I5 e7 q" x. V4 h# y
5 2 1 9 7 4 3 3
% D' n/ p6 p" L+ Y
7 6 7 3 9 2 7 1
+ a! E0 m( ~) b# r3 n
2 3 9 5 7 2 6 5
, ?6 `* z) `" J$ C$ p2 Z
5 5 2 2 8 1 4 3;
4 O8 ?# r( B3 G. Z: F' _/ a
enddata
+ _' N% N7 \; x1 x. N* [
end
9 x% ~* f+ o, }6 U' p. V
然后点击工具条上的按钮 即可。
. J1 s9 D3 y" a, P/ S
为了能够使用LINGO的强大功能,接着第二节的学习吧。
# M3 l3 }! \2 J3 \% o1 q: M
(明天见哦)
! w2 |$ d, w- C/ v
4 L4 e, F2 y2 ^# L
作者:
wujianjack2
时间:
2015-7-18 20:06
占个沙发,哈哈!
6 {5 q/ }" M; m3 F* f7 l, X
坐等更新........................... :-)
/ I$ o7 C! A1 [
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5