QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 25271|回复: 17
打印 上一主题 下一主题

GAMS示例——运输问题 【代码及演算过程】

[复制链接]
字体大小: 正常 放大

1253

主题

443

听众

-516

积分

复兴中华数学头子

  • TA的每日心情
    开心
    2011-9-26 17:31
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    自我介绍
    数学中国网站(www.madio.cn)是目前中国最大的数学建模交流社区

    邮箱绑定达人 优秀斑竹奖 发帖功臣 元老勋章 新人进步奖 原创写作奖 最具活力勋章 风雨历程奖

    群组越狱吧

    群组湖南工业大学数学建模同盟会

    群组四川农业大学数学建模协会

    群组重庆交通大学数学建模协会

    群组中国矿业大学数学建模协会

    跳转到指定楼层
    #
    发表于 2009-11-14 04:27 |只看该作者 |正序浏览
    |招呼Ta 关注Ta |邮箱已经成功绑定

    GAMS示例

    1 i& z4 ]" k9 D, n

    下面这个问题主要是用来举例说明GAMS是如何让您以一种自然的方式建立模型.GAMS能够处理大的多和高度复杂的问题.在这里只展示了GAMS的很少一部分的基本特征.

    ; W( C2 \) k. i& L, Z# `* Y! ^8 G% w5 o. g% v" h- t: K+ `' c( j0 I4 t3 |. J/ g2 z/ j7 k9 Q1 u+ @2 e- i. Q% _1 ^' Z/ h+ n+ ?2 p
       代数描述
    ' y" F0 b# x! V% x4 n

    下面是问题的标准的代数描述,这是用来最小化把货物从2个工厂运输到3个市场的费用.受约束于供需约束.

    ; e- ~2 Y6 W" n: G" @

    指标:

    ( A8 Y* n y' ?: ]2 K, y. T3 F

     i=工厂(plants)
    j=市场(markets)

    ( \8 b2 e; Z7 g

    给定的数据:

    / x! d/ \$ R, `# M+ i/ K0 U

    =在工厂i日常供应量(批数cases)
    =在市场j的日常需求量(批数cases)
    =在工厂i和市场j之间的距离(千英里)
    =在工厂i和市场j之间每单位的运输费用($/批/千英里)

    3 L3 L! p. V, p: r! c- N$ M / H; M, z. U" j" f0 j( v* k( a7 @4 a8 m5 E2 G1 g; G! N3 p) x# K$ ?0 I+ P& ]' x3 m1 g; V5 T6 i7 C+ ~, w! L4 B( U3 J" E, O% J- t* }2 `6 x+ r3 Y1 G) q a Z5 _. R7 F! M6 _, Z) W$ T, S' e6 n1 C( X. H# k+ T' u. Q, q' t- e7 |% }$ E, C. p$ j4 B9 \! F, ^* ^5 K" @3 Y$ A1 O" w& K( T, L% b# }+ Y) z6 {6 u& x0 o, n J. z: S" N" f6 Z: m2 |6 }5 b+ T. ]2 H# ]. z& r2 ]" t' t5 u. ~& W1 Z# k) N+ V6 q1 b7 R- Z) n# C$ T( a2 ~% p& F5 X3 _) ^) x% [( l3 C' _& y% y3 G) E; b; f Z+ V9 x' [' z8 J9 e/ q e* ^8 p0 X3 e( b$ {! o+ L6 K* _9 @% v3 ~! n0 T9 E$ _ r+ M; p% n8 G' K5 h( {0 i x4 |' k4 b* }7 k9 U4 x" ^2 v4 l8 ]: F5 @/ ?. C( n7 j+ E# g4 D2 D' `: t4 D5 n( }4 M1 T, \- p8 j4 ]" Y9 \! z* X6 \! w: G7 u6 a5 p0 M! v: c' D7 Z( x0 W6 T9 c; v& J. ]* I8 T6 a W8 i
    距离  
      市场  
    工厂 New York Chicago Topeka 供应量
    Seattle 2.5 1.7 1.8 350
    San Diego 2.5 1.8 1.4 600
    需求量 325 300 275  
    ! u' j8 [9 }- Q7 C. ]8 j

     F=每批每千英里的费用$

    + ?. Q" L/ Z2 A6 ]* B6 ^

    决策变量:

    # b2 [5 l; J$ T; Q

    =日常从工厂i运输到市场j的总量(批数cases)
    这里 适用所有i,j

    1 w5 P; Q% N2 v

    约束:

    # @' s8 t; t. a/ C

    在工厂i的供应量**(批数cases):适用所有的i
    在市场j的需求量:适用所有的j

    8 [: C" S/ J: J- k9 L

    目标函数:

    ) C: @, a+ p- G+ D/ Z

    Minimize (千元)

    1 l" \/ H1 p! x8 J4 Y3 ~% M. V; w + u. j; u3 Q" m. W' I' L* A* Z2 J5 s L6 U8 h4 ]' [! f* [0 f" W: u+ ^; m! ?8 s( W$ N2 L
       GAMS模型
    # x4 R8 y/ ^1 g8 K# c1 [0 _, [9 E# X

    同样的模型在GAMS中建模.简练的代数描述使得模型高度紧凑,并带有逻辑结构.内部的文档,比如对参数的解释和测量的单位,使得模型很容易读懂.
    * C3 U# O) d+ Q0 J# P6 F& T9 Q; C) ~4 T

    集合(Sets)

    1 Z8 U) z( C4 _; G+ }

    ) X. S* Q+ i3 {5 l4 k% E2 e

    GAMS让您以直接的方式指定指标:声明和命名集合(这里是I和J),并列举它们的元素.

    ' E; w% o2 a! f

    参数

    ! V. [+ e& O& W

    2 {# b" p- m* Q* W; j0 g$ h

    这里的数据输入被作为指标参数A(I)和B(J),值简单的被列出.

    ! q: \% Y! {5 V

    GAMS让您可以在模型的任意位置放置解释性文本(以小写格式显示),当您在开发它时.您的注释自动被结合到输出报告中的合适位置.

    . ?& M2 H$ s8 g4 Q+ K

    表格

    ! S/ V4 |- C9 _; N


    数据同样能够以方便的表格形式输入.GAMS让您以数据的基本形式来输入数据-转换是特定的代数化的.

    * u; H7 @ x8 g- E

    标量(Scalar)

    6 `7 F) f6 [5 |1 {$ ~+ d, ?" p


    常量能够被声明为标量,它的值是指定的. 7 L" y7 {8 b v3 Z

    数据处理

    * R+ O! u# p i7 }' F# o

    , |4 f8 C4 X. k

    当数据值要被计算前,您首先要声明参数(比如,给它一个符号,随意给它编个指标),然后给它一个代数公式.GAMS将自动进行计算.

    8 `! u% k6 D# v# w0 C

    变量

    + p5 T* n- I2 N

    7 F" S& {6 \/ T+ d7 y3 g. p. a: }" J

    决策变量以代数的方式表达,带有特定的指标.从这种常见的形式,GAMS在域中生成变量的每个实例.

    ; ] ?" X( T. l; f, B! O8 [

    变量可以被指定为下列类型:任意(FREE),正值(POSITIVE),负值(NEGATIVE),二元(BINARY),或者整数(INTEGER).默认是任意(FREE).

    * J, \8 t; j% h

    目标变量(这里是z)仅被声明,没有指标(index).

    . @! ? ?' l$ `$ \- g" h

    方程式

    6 }. ~5 d" ?8 `1 p

    / g- R! k1 `# s# s$ s$ W) E

    目标函数和约束方程式首先被通过指定名字来声明.然后它们的概括的算术公式被声明.GAMS现在已经有了足够的信息(从上面的数据输入和从在方程式中指定的算术关系)来自动生成每个单独的约束声明-就像您能在下面的输出报告中看到的.

    ) d% o0 a* P8 Q& F3 F* P9 G

    =E=表示'equal to' (等于)
    =L=表示 'less than or equal to' (小于或等于)
    =G=表示'greater than or equal to' (大于或等于)

    . r6 O$ J+ C) ?2 d8 ^0 V

    模型声明

    ) L# {, m4 j T R* g! d7 C

    " x* I) X! L" c: t1 `9 K9 t9 s

    模型被指定了一个唯一的名字(这里是TRANSPORT),模型缔造者指定那个方程式应该被包含到这个特别的公式中.在这里我们指定了ALL,也就是说所有的方程式都是模型的一部分.就等于是MODEL TRANSPORT /COST, SUPPLY, DEMAND/ . 这个方程式选择使您能够在单个的GAMS输入文件中以公式表达不同的模型,基于相同或不同的给定数据.

    : C' s0 u% X' J# g

    求解声明

    $ ~% r+ H. i" W# a

    5 G/ j. K6 j ]0 J8 M2 B

    求解声明(1)告诉GAMS那个模型要被求解,(2)选择要使用的求解器(在这里是LP求解器),(3)表明优化方向,或者是求最小值,或者是求最大值.(4)指定目标变量.

    - n3 c" z i5 B6 r$ m& i2 H: A. c) F* a `- Y$ B) [! \1 Z) @) L d0 w3 E- `/ m+ X1 W" I8 ]* b1 B/ d2 D" `. p
       GAMS输出报告(部分摘录)
    / j2 ^! O( |4 n0 P3 \

    完整的GAMS输出报告比下面列出的部分摘录详细的多,包含了更多的帮助用于解释和诊断您的模型.甚至您能够修改输出格式来符合您的特定的需要.

    . ]' }4 F9 ^. H' N6 X3 t& D1 ^" U/ n

    方程式列表

    + c4 X+ D/ a) @- O

    5 R: F: @. | T; P* x7 k3 {" {" B

    方程式列表显示从在GAMS输入中指定的分区(block)生成的单独的约束.在GAMS中使用者可以以一种非常紧凑的形式写下被索引的方程式分区(block),这将产生大量的单个方程式.在我们的示例中,我们指定了3个方程式分区,生成了6个单独的方程式.

    & Q! p% }& h3 Y5 d& r J

    列列表

    x, \$ |# Y+ ?, h) v# F o

    % m! d: L& I' A% }1 ?+ X

    列列表提供信息到生成的单独的变量上.变量X(I,J)扩展出6个单独的变量.当许多变量从一个分区中被生成,默认的列表只显示最初的3个(用户可以修改).

    9 N( g% L" ^1 ]0 L7 i* E0 }. z 5 H- a$ o" r1 V7 l4 |5 B" ?0 \6 j7 c9 K2 _/ V" M4 w2 ~0 S+ p4 q+ x% L1 ^: f! T- W
       求解信息
    1 X& F( a+ \' E5 I( Q

    - f. ~! w! v2 g

    求解声明将生成模型(单个方程式和对应到特定模型的变量的产物).首先一些关于生成的模型的统计表将会被显示:方程式数,变量和非零元素.

    3 M6 g2 e2 | x9 I* R( Z" k

    在求解汇总信息部分,我们看到BDMLP被调用来求解这个模型.BDMLP经过4次反复,耗时0.18秒找到了这个问题的最优解.求解信息下列的消息来自求解器.

    . s$ O( E) v2 I- {4 ?; q5 P3 `/ T/ {

    解(Solution)

    ; j7 ~% p# q8 I7 p4 ~0 h, x

    0 Y# D, G+ Z3 _. y8 |6 `

    解被显示在这里.边际值(marginals)对应方程式的重复和变量减少的花费.

    3 q1 X2 b4 r( ^4 K S0 ^' W

    写工具不需要学习一门其它的语言.在GAMS所有的数据处理,模型定义和报告编写都是在一个单独的环境中完成的.

    ; z6 U2 z$ ]( w/ x' [5 @. K, [3 H) q# ` H v6 O: u! U# u2 U* V, r5 u, Y, [/ Y+ s/ a3 U; V, R. p) N. n8 k9 N. V/ ^3 k x
       参考
    9 q ~& Q( n/ h

    Dantzig G. B., Linear Programming and Extensions, Princeton University Press,Princeton, New Jersey, 1963, Chapter 3-3.

    GAMS Example.pdf

    143.39 KB, 下载次数: 57, 下载积分: 体力 -2 点

    GAMS 示例 (PDF格式)下载

    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏1 支持支持2 反对反对0 微信微信
    板砖sy        

    0

    主题

    9

    听众

    5

    积分

    升级  0%

    该用户从未签到

    自我介绍
    系统工程专业
    入门看这个就足够了,但是一旦独立进行编程的话,会出现很多bug,还有错误代码,都不知道什么意思,大神有没有解决这些问题的方法,辛苦了
    2 [( [; \6 X0 M) F& G
    回复

    使用道具 举报

    3

    主题

    14

    听众

    27

    积分

    升级  23.16%

  • TA的每日心情
    开心
    2017-3-1 21:26
  • 签到天数: 1 天

    [LV.1]初来乍到

    回复

    使用道具 举报

    LYJA        

    20

    主题

    3

    听众

    375

    积分

    升级  25%

  • TA的每日心情
    开心
    2017-8-27 23:29
  • 签到天数: 61 天

    [LV.6]常住居民II

    社区QQ达人

    回复

    使用道具 举报

    鸣凤123        

    0

    主题

    12

    听众

    244

    积分

    升级  72%

  • TA的每日心情
    开心
    2016-1-29 08:03
  • 签到天数: 34 天

    [LV.5]常住居民I

    群组2014美赛MCMA题备战群

    回复

    使用道具 举报

    7

    主题

    9

    听众

    779

    积分

    升级  44.75%

  • TA的每日心情
    开心
    2016-5-19 15:19
  • 签到天数: 200 天

    [LV.7]常住居民III

    自我介绍
    我是一个勇于挑战自我的人。

    社区QQ达人 新人进步奖

    群组西安交大数学建模

    群组学术交流B

    群组第一期sas基础实训课堂

    群组认证人才交流群

    回复

    使用道具 举报

    0

    主题

    6

    听众

    30

    积分

    升级  26.32%

  • TA的每日心情
    开心
    2013-4-10 08:59
  • 签到天数: 13 天

    [LV.3]偶尔看看II

    群组东北三省联盟

    wsq200808 发表于 2012-12-9 22:55 8 D8 R: \7 Z8 h  {  H
    你的时间怎么是明天呢?
    % C0 l6 b- J8 l/ |$ L% v9 j
    我是外星人。。。嘎嘎嘎
    回复

    使用道具 举报

    wsq200808        

    0

    主题

    7

    听众

    10

    积分

    升级  5.26%

  • TA的每日心情
    奋斗
    2012-12-9 23:18
  • 签到天数: 1 天

    [LV.1]初来乍到

    自我介绍
    数学掌控世界,统计预测未来!
    邓浩考研 发表于 2012-10-10 09:47   B- G0 d9 n3 a  I% y" x# o; @
    帖子很好啊,入门很好啊。
      m# Q$ f$ ?/ o2 n4 D5 x
    你的时间怎么是明天呢?

    点评

    邓浩考研  我是外星人。。。嘎嘎嘎  详情 回复 发表于 2012-12-10 10:08
    回复

    使用道具 举报

    0

    主题

    6

    听众

    30

    积分

    升级  26.32%

  • TA的每日心情
    开心
    2013-4-10 08:59
  • 签到天数: 13 天

    [LV.3]偶尔看看II

    群组东北三省联盟

    帖子很好啊,入门很好啊。

    点评

    wsq200808  你的时间怎么是明天呢?  详情 回复 发表于 2012-12-9 22:55
    回复

    使用道具 举报

    市_长 实名认证       

    0

    主题

    0

    听众

    5

    积分

    升级  0%

    该用户从未签到

    回复

    使用道具 举报

    0

    主题

    4

    听众

    30

    积分

    升级  26.32%

  • TA的每日心情
    难过
    2012-4-24 16:16
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    自我介绍
    数学建模
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-7-22 01:40 , Processed in 2.466899 second(s), 110 queries .

    回顶部