- 在线时间
- 63 小时
- 最后登录
- 2019-5-3
- 注册时间
- 2004-5-10
- 听众数
- 442
- 收听数
- 0
- 能力
- -250 分
- 体力
- 10122 点
- 威望
- -12 点
- 阅读权限
- 150
- 积分
- -586
- 相册
- 6
- 日志
- 10
- 记录
- 10
- 帖子
- 2003
- 主题
- 1253
- 精华
- 36
- 分享
- 8
- 好友
- 1292

复兴中华数学头子
TA的每日心情 | 开心 2011-9-26 17:31 |
---|
签到天数: 3 天 [LV.2]偶尔看看I
- 自我介绍
- 数学中国网站(www.madio.cn)是目前中国最大的数学建模交流社区
 群组: 越狱吧 群组: 湖南工业大学数学建模同盟会 群组: 四川农业大学数学建模协会 群组: 重庆交通大学数学建模协会 群组: 中国矿业大学数学建模协会 |
写在前面的话
/ ~: T% U; d0 |0 n l
' M! ?0 k" q$ A( s6 Z在学习和工作之余写点东西,这种想法由来已久了。只是总是觉得很忙,抽不出时间做一点点自己喜欢做的事情。突然有一天发现,你必须牺牲某些东西才能得到某些东西。所以,就索性写上几句话聊以**吧。
6 H5 |* z3 m* a( S1 X最开始,只想翻译一下GAMS的用户手册。但是又觉得这样写很枯燥,不光读者不喜欢看,连自己也要打瞌睡了。如果想催眠的话,还不如去听评书。但是本书还是以解释GAMS的用法为主。中间夹杂着一些自己做modelling 的体验,还可能还有一些毫不相关的东西。可能有很多错误,请读者们原谅。想学习GAMS的同学,想必一定是数学,运筹学或计算机相关专业的了。让大家失望了,其实我的专业是chemical engineering, 本科时候做的是量子化学。阴差阳错上了贼船。但是觉得自己用了这么多年了,总该有点体会,能过帮帮大家。/ k% T. F; o4 q
; ]* G }9 M$ B9 Y2 r2 e进入正题之前,还想啰嗦几句题外的话。8 C- ]/ o. a- B% F" `
能看到这篇文字的同学,恐怕大多数是在灯下苦读的学子。实际上学习某种工具并不重要。真正要学习的是知识,是思维的方法。就像很多计算机系的学生一样,把数据结构和算法精通了,任何工具都是一样的。所以,你用GAMS或者不用GAMS,都没有关系,要把握事物的本质,最关键的东西抓住了,任何语言就是一种输入法。另外,学习一定要有兴趣,要认识到他的beauty,不要把什么都换算**民币,那样你会觉得很累。除了,coding 以外,还要博览群书,文史哲,拿来翻翻,就当休息了。
% r- \' a( [# `, _最后,男子汉们,别忘了,谈一场轰轰烈烈的恋爱!! g; y3 G8 ^' I% P+ ]1 v
) r) F, d F7 O1 b7 s' W1 M' ^% N. x- r/ v, F6 C: }( h, |' k+ o2 p
1 l/ y+ \% h- M; O: J
2 O1 U0 I- a: @4 B |* l- k4 f' b
1 {0 G, P. q2 v! K& ?
! W' k9 o: h4 l1 P5 W" I第一章,基本概况
& J5 j4 b% Y2 O/ X6 r0 S' R2 A. `7 D7 g5 L
GAMS是一种非常简单易学的运筹学建模语言 (www.gams.com),是由WORLD BANK 开发的。由于近几十年计算机软硬件的的高速发展,世界银行决定投资开发GAMS, 来提供:% K6 d$ g$ l& O9 `# H
1. 建立复杂模型的高级语言8 h- L8 E( Z$ E* q, m" V1 j8 }8 f
2. 简单易学& ?- {/ k: Y4 z) G! g8 f
3. 强大的描述代数及逻辑关系
; j9 |3 @ k1 A% m+ ^4. 模型可以独立于算法系统
7 O& x- Y% L) {3 p1 lGAMS 可以让使用者专心致力于模型的建立而省略了解法方面的考虑因为GAMS包含了解决通用的LP,NLP,MILP,MINLP等各类模型所需要的solver. 另外,GAMS提供了和外界进行交互的输入输出借口。使得用户很方便的导入导出data。5 r: N7 i0 f7 b; n6 e
下面当然是tutorial了,就想学习任何一种编程语言一样,最开始都要学习输出 hello world. 我们这里当然要复杂一点了,举一个最简单的例子,运输问题.
- Y: Z9 D/ Y) ^0 S这是一个经典的LP问题(不用解释什么是LP吧,呵呵)9 g; K+ k2 @% I' h' H+ N/ l3 b
用点英语,呵呵,: O) p& E: C: F' M# a' t# R5 J
In the familiar transportation problem, we are given the supplies at several plants and the demands at several markets for a single commodity, and we are given the unit costs of shipping the commodity from plants to markets. The economic question is: how much shipment should there be between each plant and each market so as to minimize total transport cost?
& ~4 |! R5 h) k# ^就是说,我们已知有一些工厂,生产出的产品要运往一些市场来满足他们的需求,每一个工厂的生产能力(每个工厂能提供产品的数量)以及每个市场的需求(每个市场需要产品的数量)是已知的。另外,我们还知道从特定的工厂到特定的市场,运输一件产品的运费。那么我们怎么样设计从每个工厂到每个市场运送货物的数量,使得总运费最小?9 i6 z5 {3 q6 J1 U, Q7 H' }
Indices:
0 R+ Y8 L1 z! M6 B, W% hi = plants. U" F: Y- O- O v, J0 z, o
j = markets2 |/ ^. T O1 R& w
Given Data:
' f9 Q: p' f/ b+ `ai = supply of commodity of plant i (in cases)
6 |% R1 B! ]/ P4 o6 D+ [$ Gbj = demand for commodity at market j (cases)
; m% j" G* v2 w# v5 e9 ^6 ucij = cost per unit shipment between plant i and market j ($/case)
; G& N* W, d) LDecision Variables:. l4 Y3 v q" ?. u) f
Xij = amount of commodity to ship from plant i to market j
6 D8 l2 n8 T1 q8 p在这里唯一的连续变量是Xi,j,
- S$ G* [8 w5 m! i) @模型就不用我说了吧。。。。
; w% r. `" g8 P: ~9 {) T) d) B+ ~5 V4 r% h; _
这是一个典型的线性规划问题,他的GAMS code is2 n) ~: y- I# M. t! J4 r) ^. {
# x2 [' k. V/ f9 x- N- |
Sets
0 V, q, |) B2 ?* S! k, o2 J1 W! Ji canning plants / seattle, san-diego /
) L6 M# I1 [9 ^- ]; A dj markets / new-york, chicago, topeka / ;: |) _( T- \: k
Parameters
& A( w9 i% K8 p4 m# q8 P( e" Ra(i) capacity of plant i in cases
+ }1 a9 y1 ]' A. N* |/ seattle 350
0 Q& L0 n; f4 dsan-diego 600 /
- i4 H8 O& U/ Y' b0 L# g+ r2 T% fb(j) demand at market j in cases
& G" ?5 H( t# s5 p0 b' b+ h X/ new-york 325
( q2 J2 s1 E+ h2 B! {: p; dchicago 300* v3 I( {' @0 k3 C5 x
topeka 275 / ;9 Y t/ N( a3 |
Table d(i,j) distance in thousands of miles
; ~4 \: P+ a1 Q, x8 u; q3 Lnew-york chicago topeka
, r) I; t6 Y( _5 g: X" o! gseattle 2.5 1.7 1.8
5 H( j- U1 g" F! w* E: v! asan-diego 2.5 1.8 1.4 ;; Z0 r# ~5 {* Q( k2 x4 `0 M
Scalar f freight in dollars per case per thousand miles /90/ ;
j7 x) t1 }! O y4 _Parameter c(i,j) transport cost in thousands of dollars per case ;6 @- P# G: q; h7 `! t
c(i,j) = f * d(i,j) / 1000 ;2 b/ U; t4 I3 i" m" m. \
Variables
4 B+ w& _' K( `2 e1 Ax(i,j) shipment quantities in cases
4 w: `8 K1 ?' \% l/ E) Uz total transportation costs in thousands of dollars ;
* n# W- w1 z7 h7 E) s t+ U; VPositive Variable x ;1 Z& a- u1 r j) F
Equations
+ V2 s) K3 a7 \4 |% i9 Ucost define objective function
x8 r% X, @7 e9 U. osupply(i) observe supply limit at plant i. t+ n/ R- t) u! d7 @
demand(j) satisfy demand at market j ;6 c8 B$ h. u+ I5 z0 I w" {) y
cost .. z =e= sum((i,j), c(i,j)*x(i,j)) ;% n9 c ?' M' _- m" _+ J# t
supply(i) .. sum(j, x(i,j)) =l= a(i) ;: |4 M) a8 ^) F" F) y7 u
demand(j) .. sum(i, x(i,j)) =g= b(j) ;. {0 B. J0 m4 u1 A- V1 h) g
Model transport /all/ ;
+ w% f& N% N" u& j/ iSolve transport using lp minimizing z ;0 F- y2 @0 N9 r* {5 _3 ~
Display x.l, x.m ;, f9 L5 P8 ?) ~& a& [( v% L
这是一个非常典型的LP(linear programming)问题,所有的变量和约束都是线性相关的。 |
zan
|