GAMS软件数据收集新方式-GAMS Connect

GAMS知乎 2.png


今天给大家介绍一个从一系列外部来源收集数据的新方法,对其进行转换并使其可用于 GAMS 模型。输入“GAMS Connect”,下面您可以看到这个新工具集的简短描述,以及为什么我们认为它对所有 GAMS 建模者都非常有用。

 

背景情况

在软件领域,GAMS 是生命周期较长的产品之一。Alex Meeraus最初开发的通用代数建模系统首次公开记录可追溯到 1976 年(International Symposium on Mathematical Programming, Budapest, p. 185)。GAMS 的第一个商业版本在1987 年面世,此后许多人为 GAMS 的版本更新做出了贡献。由于GAMS没有像更传统的编程语言那样的模块系统,因此很多更新只能在Unix系统作为小命令行工具提交,例如,读取或写入 Excel 文件、CSV 文件、访问 Microsoft Access 数据库、与 Matlab 交互等等。该系统多年来一直运行良好,但要保持所有工具的更新,并且让GAMS支持所有平台变得越来越困难。此外,使用不同工具的语法也不统一,可能会让用户感到困惑。因此,我们认为需要一种更现代、更统一的方式来读写不同格式的数据。为了朝这个方向迈出一大步,我们近期推出了“GAMS Connect”。GAMS Connect 建立在“提取、转换、加载”(ETL)概念的基础上,其目的是在读取代理、转换代理和写入代理的帮助下,将一系列不同来源的数据获取到统一的中央数据存储(“连接数据库”)中,并从那里转换为其他格式(图1)。

Introducing GAMS Connect1.png

图 1:多个代理共享同一个中央数据库 


这一概念使得通过YAML语法配置的可插拔数据导入/导出系统成为可能。目前 GAMS Connect 支持 CSV、GDX 和 Excel 作为外部文件格式进行读写。下面是一个简单的例子:


Introducing GAMS Connect2.png

 


这些行指示 GAMS Connect 读取两个 CSV 文件。从第一个(distance.csv)开始,我们使用第1列和第2列中的索引值,将第3列中的值读入名为“distance”的符号中。从第二个CSV文件(capacity.CSV)中,我们使用第1列中的索引值将第2列中的值读取到名为“capacity”的符号中。在此阶段,这些值仅停留在 GAMS Connect 数据库中,现在我们可以将其提供给 GAMS。这是在最后一个“GAMSWrite”数据块中完成的,该块根据先前收集的数据创建符号“d”和“a”。


这种指示 GAMS Connect 读写数据的方式非常灵活和强大,您可以在文档中找到更复杂的示例。

 

Connect YAML 语法可以在三个不同的地方使用:


通过 GAMS 命令行参数“ConnectIn”和“ConnectOut”

通过嵌入式代码Connect(可能是最常见的情况)

通过独立的命令行实用程序“gamsconnect”

 

一旦数据进入 Connect 数据库,在写入 GAMS 数据库之前,您可以使用“Projection”代理,使用max、min、mean、median等统计函数,将数据投影和聚合到GAMS符号的缩减索引空间。如果这还不够,您甚至可以在 YAML 指令中使用 Python 代码来实现非常复杂的数据操作过程。


设计规划

在 GAMS Connect 的构思过程中,我们做了几个非常深思熟虑的决定:


Connect代理设计“简单”,每个代理只支持一种功能。GAMS Connect的强大功能源于通过YAML将多个代理连接在一起的能力。

我们提供的Connect代理将独立于平台。

所有代理都将由一致的语法控制,使用户更轻松(它们也区分大小写,这与通常的GAMS 语法不同)。

代码可读性至关重要,因此我们将避免使用缩写,而是使用长、显式、camelCased参数名。

提前验证错误:在执行任何指令之前,首先验证 YAML 语法,以便及早发现错误。

 

如果您是GAMS 39及以上版本,就可以体验GAMS Connect功能。之后,我们将实现更多代理(例如SQL数据库、HTML、Txt等),将Connect与GAMS Studio集成,甚至允许在Python中创建自己的Connect代理!


北京天演融智软件有限公司(科学软件网)是GAMS软件在中国的授权经销商,为中国的软件用户提供优质的软件销售和培训服务。


联系我们

北京天演融智软件有限公司(科学软件网)

北京/广州/成都

电话:400 810 4001//18510103847

邮箱:info@sciencesoftware.com.cn

网址:http://www.sciencesoftware.com.cn