gams

GAMS - 通用建模软件

相关文章

 
 
 
 

通用建模软件,由语言编译器和高性能解算器组成          

· 运筹优化软件GAMS 48.0版本更新要点

· 在GEMPACK和GAMS之间转换数据

· GAMS经济建模和政策分析-模拟欧盟交通部门碳强度目标

· 使用GAMS引擎和GitHub Actions进行自动GAMS模型测试

· GAMS MIRO 2.0 - 迁移到云端

· 查看更多

 

 

 

通用代数建模系统(GAMS)是一种用于数学规划的建模系统。它由一个语言编译器和一系列相关的高性能解算器组成。

GAMS用于建模线性,非线性和混合整数问题。对于大型的,复杂的问题很有帮助。GAMS透过简单的操作模式,排除了一些技术问题,让用户能够能专心于模块的建立。当前GAMS新版本为47.4。

 

GAMS建模语言使建模人员可以将现实中的问题转换为计算机代码。然后,GAMS语言编辑器将此代码转换为求解器可以理解和求解的格式。这种架构允许在不改变模型公式的情况下更改所使用的求解器。

 

 

GAMS 语言概览


GAMS 语言提供了一种自然的方式来描述您的模型。这一点可以通过 Dantzig(1963)提出的一个常用的简单例子来突出展示:

 

目标:最小化将货物从两个工厂运送到三个市场的运输成本,同时满足供应和需求的约束条件。

 

索引

  • i = 工厂
  • j = 市场

 

给定数据

  • a<sub>i</sub> = 工厂 i 的供应量(箱)
  • b<sub>j</sub> = 市场 j 的需求量(箱)
  • d<sub>ij</sub> = 工厂 i 和市场 j 之间的距离(千英里)
  • c<sub>ij</sub> = F × d<sub>ij</sub> = 工厂 i 和市场 j 之间的单位运输成本(美元/箱/千英里)

 

工厂与市场数据
工厂 ↓    纽约    芝加哥    托皮卡    ← 市场
西雅图    2.5    1.7    1.8    350
圣地亚哥    2.5    1.8    1.4    600
需求 →    325    300    275    ↑ 供应

 

  • F = 每千英里的运费(美元)

 

决策变量
x<sub>ij</sub> = 从工厂 i 运送到市场 j 的货物量(箱),其中 x<sub>ij</sub> ≥ 0,对于所有 i, j

 

约束条件

  • 遵守工厂 i 的供应限制:∑<sub>j</sub> x<sub>ij</sub> ≤ a<sub>i</sub>,对于所有 i(箱)
  • 满足市场 j 的需求:∑<sub>i</sub> x<sub>ij</sub> ≥ b<sub>j</sub>,对于所有 j(箱)

 

目标函数
最小化总运输成本:∑<sub>i</sub> ∑<sub>j</sub> c<sub>ij</sub> x<sub>ij</sub>(千美元)

 

GAMS 模型
上述问题可以很容易地使用 GAMS 语言进行建模。通过简洁的代数描述,模型结构紧凑且逻辑清晰。内部文档(如参数解释和测量单位)使模型易于阅读。

 

 

Sets
       i   工厂   / 西雅图, 圣地亚哥 /
       j   市场   / 纽约, 芝加哥, 托皮卡 / ;

Parameters
       a(i)  工厂 i 的产能(箱)
         /    西雅图     350
              圣地亚哥   600  /
       b(j)  市场 j 的需求量(箱)
         /    纽约       325
              芝加哥     300
              托皮卡     275  / ;

Table  d(i,j)  距离(千英里)
                  纽约        芝加哥       托皮卡
    西雅图          2.5         1.7          1.8
    圣地亚哥        2.5         1.8          1.4  ;

Scalar f  运费(美元/箱/千英里)  /90/ ;

Parameter
       c(i,j)  运输成本(千美元/箱) ;
c(i,j) = f * d(i,j) / 1000 ;

Variables
     x(i,j)  运输量(箱)
     z       总运输成本(千美元) ;

Positive variables x ;

Equations
     cost        定义目标函数
     supply(i)   遵守工厂 i 的供应限制
     demand(j)   满足市场 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 ;

 

 

为什么选择GAMS

 

通用代数建模系统(GAMS)根植于相关设计原则中,它是一个经过发展和成熟的系统。

 

GAMS是一种健壮的,可扩展的新代数建模技术,用于开发复杂的大规模应用程序。

 

GAMS是用于构建健壮且具有故障保护功能的系统的成熟工具,可以提高模型开发人员的生产率,并很大的简化应用程序的开发和维护。开发环境使您能够快捷构建模型,而部署工具(MIRO)使您能够立即将解决方案作为Web应用程序提供。

 

APIs

GAMS可以到您的业务应用程序中。有适用于Python,C++、.NET等的API。

 

求解器

GAMS为主要的商业和学术解决方案提供了界面。它可以在主要平台上运行。

 

MIRO

借助MIRO,您可以通过零编程将现有GAMS模型转换为交互式Web应用程序。

 

GAMS在很多的政府和研究机构中得到广泛使用,有助于做出更明智的决策。GAMS还用于大学的研究和教育中。

 

切削刃建模

通过这种方式,GAMS让用户专注于建模。GAMS通过要求简洁的实体和关系规范来鼓励良好的建模习惯。GAMS语言与通用编程语言正式相似。因此,具有编程经验的人都熟悉他。但由于该模型的制定方式与其数学描述类似,因此可以由程序员理解和维护,还可以由实际的领域来理解和维护。GAMS专注于建模师,并允许他自己做相关的事情。声明性和程序性元素的平衡组合允许构建复杂的算法,在GAMS中实现分解方法,对于解决通常伴随性能问题的异常问题的模型有帮助。

 

有所作为的设计原则

GAMS专注于其核心竞争力:使用户能够构建可读,可维护的模型,并通过随时随地提供的较好的解算器解决这些问题。我们的开放式架构和众多数据接口可与外部系统通信。模型,求解器,数据,平台和用户界面分离在独立的层中。可以切换求解器,使用多个数据集,在多个平台上运行,以及将GAMS合成到现有的应用程序,结构和工作流中。

 

模型与求解器的独立性

我们提供超25个解决方案的广泛和多样化的产品组合,包括所预期的商业求解器。

  • LP / MIP /QCP / MIQCP :CPLEX , GUROBI , MOSEK , XPRESS

  • NLP : CONOPT , IPOPTH , KNITRO ,MINOS , SNOPT

  • MINLP : ALPHAECP , ANTIGONE , BARON , DICOPT , OQNLP ,SBB

  • 混合互补问题(MCP),具有平衡约束的数学程序(MPEC)和约束非线性系统(CNS)的求解器

  • GAMS系统捆绑的替代品,例如BONMIN(MINLP), CBC(LP , MIP), COUENNE(MINLP), IPOPT(NLP);学术许可也包括SCIP和 SOPLEX

     

 

模型和数据的独立性

您可以独立于数据编写模型,并包括来自多种不同自己来源的数据,从存ASCII到Excel或Access以及其他来源,例如使用GDX(GAMS Datae Xchange)文件格式。GDX文件是存储GAMS符号(例如集合,参数变量和方程式)的值的文件GDX文件可用于为GAMS模型准备数据,GDX文件可在不同平台之间移植的二进制文件。

 

模型和平台的独立性

模型在平台之间可移植-一次编写,随处运行

GAMS可在Windows , Linux , Mac OS X , SOLARIS , Sparc Solaris和IBM Power AIX上运行

 

模型和用户界面的独立性

GAMS面向对象的API允许通过为与GAMS的交互提供的类,将GAMS到应用程序中。面向对象的GAMS API的三个版本:.NET , Java和python与.NET框架 4 (Visual Studio 2010),Java SE 5及版本以及python 3.4 , 2.7和2.6相关。

 

GAMS允许使用者通过制定的设置来把精力放在建模问题上。至于机器和系统软件执行的费时的细节将由GAMS系统来处理。

 

GAMS对于处理大型的,复杂的,需要多次修订才能确定模型的问题很有帮助,系统以高度简洁和自然的方式来建模问题。使用者能够快的和方便的更改公式,能从一个求解器转到另一个,甚至稍加费心就能从线性转换到非线性。

 

GAMS让使用者把精力集中到建模上,通过排除技术上的机器的问题的需要,比如地址计算,存储分配,子程序链接和输入输出和流程控制,GAMS增加了用于概念化和运行模型,和分析结果的时间。GAMS本身构建了良好的建模习惯,通过请求简明的实体和关系的规范。GAMS语言形式上和通常使用的编程语言相似。因此对于那些有编程检验的使用者将很熟悉。

 

使用GAMS,数据需要一次就能在熟悉的列表和表格形式中输入。模型以简练的代数声明来描述,对于人和机器都能读懂,相关的约束的整个集合都被输入到声明中。GAMS自动生成约束等式,并让使用者处理例外情况,假使那里来说是要不需要的。在模型中的声明能够被重用,而不需要更改代数式,当其他的实例是相同的或出现了相关问题。错误的位置和类型会在尝试解决方案前被查明。GAMS处理动态模型,包括时间序列,滞后,及暂时终点的提示和处理。

 

GAMS模型可以方便的从计算机平台移到另一个。只要GAMS已经在平台被安装好。GAMS能进行敏感度分析。使用者能够方便的规划模型来求解成分的不同值,然后生成输出报告。列出了每种情况的解决方案。模型能够同时被开发文档化,因为GAMS允许使用者包含解释性的文本作为任意符号和等式的定义和解释。

        

GAMS的平台

GAMS将支持的平台集划分为所谓的核心平台和外围平台,以识别并更好地描述这俩组平台的演变过程。核心平台的用户社区规模庞大,活跃且识别良好,但对于外围平台则不然。对于核心平台,GAMS将继续直接下载GAMS的新版本,而外围平台将根据请求提供。然后,核心平台可用性的变化将在时间发生之前公布,而外围平台的变化可能很少或根本没有通知。

 

核心平台如下:

 

注意:与大多数GAMS系统相比,GAMS Studio具有一些额外的系统要求。

GAMS 38.1版本放弃了对Mac OS X 10.14(Mojave)的支持。

添加了对Mac OS X12(Monterey)的支持

 

外围平台如下:

 

虽然GAMS执行系统本身可在支持的平台上使用,但用于某些求解器,工具和API,可以应用不同的可用性。

 

睿驰科技提供手册和中文版书籍

软件分类

新闻资讯

技术文档

首页    数学软件    GAMS - 通用建模软件

相关产品