秒答网

 找回密码
 注册秒答

QQ登录

只需一步,快速开始

搜索
热搜: 价格查询
查看: 469|回复: 0
收起左侧

GAMS软件与EXCEL软件的联合应用

[复制链接]

8万

智力

3986

体力

9万

品德

管理员

博士

Rank: 9Rank: 9Rank: 9

QQ
合作共赢 发表于 2018-9-26 10:39:48 | 显示全部楼层 |阅读模式
1.如何将数据从GAMS汇出至Excel:
将数据汇出至Excel的GAMS程式语法如下:
Execute_Unload 'filename.gdx', data_name;
Execute 'Gdxxrw.exe filename.gdx O = filename.xls data_type = data_name  Rng = Excel spreadsheet!';
其中第一行的程式语法是表示创造一个新的档案,副档名为gdx,后面紧接着所要汇出数据的名称。第二行的程式语法则表示将gdx档转换成Excel档,副档名为xls,此Excel档储存的路径会紧跟着输出档(副档名为lst)储存的路径,其路径可在输出档结构中最后的部份---File Summary里找到。
第二行程式语法中的O是表示output file,即一个输出的Excel档。
要将一个或多个数据汇出至Excel spreadsheet,首先数据类型(data types)必須很明确的告知GAMS系統,数据类型通常包括set、par、var、及equ。
Rng表示要输入汇出数据至Excel的格式范围,注意若沒有输入此范围则以Excel第一页表格的A1开始读写数据。

范例:The transportation problem of linear programming

$Title The Transportation Problem of Linear Programming
Sets
  i canning plants / Seattle, San-Diego /
  j markets / New-York, Chicago, Detroit /;
Parameters
  a(i) capacity of plant i in cases
     / Seattle 350
      San-Diego 600 /
  b(j) demand at market j in cases
     / New-York 325
      Chicago 300
      Detroit 275 /;
Table d(i,j) distance in thousands of miles
                     New-York  Chicago  Detroit
     Seattle             2.5       1.7      1.8
     San-Diego          2.5       1.8      1.4;

Scalar f freight in dollars per case per thousand miles /90/;

Parameter c(i,j) transport cost in 1000s of dollars per case;
c(i,j) = f*d(i,j)/1000;

Variables
     x(i,j) shipment quantities in cases
     z total transportation costs in 1000s of dollars;

Positive variable x;
Equations
     cost define objective function
     supply(i) observe supply limit at plant i
     demand(j) satisfy demand at market j;
cost.. z =e= sum((i,j), c(i,j)*x(i,j));
supply(i) .. sum(j, x(i,j)) =l= a(i);
demand(j) .. sum(i, x(i,j)) =g= b(j);

Model transport /all/;

Solve transport using lp minimizing z;
Display x.l, x.m ;

Execute_Unload 'transport.gdx', c, x, z;

Execute 'Gdxxrw  transport.gdx O = transport.xls par = c Rng =
Sheet1!a1:d3';

Execute 'Gdxxrw  transport.gdx O = transport.xls var = x Rng =
Sheet1!a5:d7';

Execute 'Gdxxrw  transport.gdx O = transport.xls var = z Rng = Sheet1!e8';

其中c, x, z表示所汇出数据的名称,transport表示档案名称,Sheet1!a1:d3表示参数c的数据会被GAMS系统读写至Excel第一页表格中的a1到d3,Sheet1!a5:d7'表示变量x的数据会被GAMS系统读写至Excel第一页表格中的a5到d7,Sheet1!e8'表示变量z的数据会被GAMS系统读写至Excel第一页表格中的e8。
回复 来自安卓客户端来自安卓客户端

使用道具 举报

您需要登录后才可以回帖 登录 | 注册秒答

本版积分规则

QQ|价格查询|地图|秒答网 ( 粤ICP备15056337号-1 )

GMT+8, 2019-7-18 00:58

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表