The General Algebraic Modeling System (GAMS)是一款数学规划和优化的高级建模系统。
GAMS是最佳化的计算机数值分析商业软件相当普遍,如 LINDO、DOT 等,以矩阵运算见长的 MATLAB 计算机软件亦有发展"optimization tool box",可以解各种非线性最佳化问题的数值解。这里要介绍的最佳化的计算机数值分析商业软件 GAMS,则是以简单清楚的使用者接口和强健稳定的数值分析能力见长。
通用代数建模系统(GAMS)是特别为建模线性,非线性和混合整数最优化问题而设计的.本系统对于大型的,复杂的问题特别有帮助.GAMS可以运行在个人计算机、工作站、大型机和超级计算机上.
GAMS允许使用者通过制定简单的设置来把精力放在建模问题上.至于特定机器和系统软件执行的费时的细节将由GAMS系统来处理.
GAMS对于处理大型的,复杂的,需要多次修订才能最终确定精确模型的独一无二的问题特别有帮助.系统以高 度简洁和自然的方式来建模问题.使用者能够快速和方便的更改公式,能从一个求解器转到另一个,甚至稍加费心就能从线性转换到非线性.
GAMS让使用者把精力集中到建模上.通过排除考虑纯技术上的机器特定的问题的需要,比如地址计算,存储分配,子程序链接,和输入输出和流程控制,GAMS增加了用于概念化和运行模型,和分析结果的时间.GAMS本身构建了良好的建模习惯,通过请求简明而精确的实体和关系的规范.GAMS语言形式上和通常使用的编程语言相似.因此对于那些有编程检验的使用者将非常熟悉.
使用GAMS,数据仅仅需要一次就能在熟悉的列表和表格形式中输入.模型以简练的代数声明来描述,对于人和机器都很容易读懂.非常相关的约束的整个集合都被输入到一个声明中.GAMS自动生成每个约束等式,并让使用者处理例外情况,假使那里一般来说是不需要的.在模型中的声明能够被重用,而不需要更改代数式,当其它的实例是相同的或出现了相关问题.错误的位置和类型会在尝试解决方案前被查明.GAMS处理动态模型,包括时间序列,滞后,及暂时终点的提示和处理.
GAMS是灵活而强大的.模型可以非常方便的从一个计算机平台移到另外一个,只要GAMS已经在每个平台被安装好.GAMS很容易进行敏感度分析.使用者能够方便的规划模型来求解一个成分的不同值,然后生成一个输出报告,列出了每种情况的解决方案特征.模型能够同时被开发和文档化,因为GAMS允许使用者包含解释性的文本来作为任意符号和等式的定义和解释.
GAMS不断的在被增强和扩展.2.25版本包含了多个语言扩展,例如在一个循环中的SOLVE声明,INCLUDE声明,IF-ELSE声明,和使用PUT声明进行报告编写的功能.其它的加强包括增加的系统集成特征,性能改善,新的子系统,和另外的计算机平台支持.
当前版本2.50包括一个基于Intel Windows平台(95/98/ME和NT/2K/XP)的集成开发环境(IDE).GAMS 2.50的新的分发包含新的语言特征和新发表的全新/更新的求解器,一年至少4次.请检查版本声明.
示例:
从著名的1963书(由George Dantzig编写)中提取的一个运输问题,用来描述GAMS的有效性.这个模型只是模型库中的部分,模型库中还包含了大量的完整GAMS模型.
支持模型的类型:
GAMS模型类型包括LP,MIP和NLPs的不同形式.这里列出了GAMS支持的所有的模型类型.
GAMS 的发展背景
GAMS 是"General Algebraic Modeling System"(一般性代数仿真系统)的缩写,最早是由美国的世界银行(World Bank)的 Meeraus 和 Brooke [Brooke, Kendrickm and Meeraus, 1992]所发展。"GAMS"事实上并不代表任何最佳化数值算法,而只是一个高级语言的使用者接口,利用 GAMS 可以很容易建立、修改、除错你的最佳化模型输入文件,而输入档经过编译后,成为较低阶的最佳化数值算法程序所能接受的格式,再加以执行并写出输出档。
数值算法方面,对线性与非线性规划问题,GAMS 使用由新南韦尔斯大学的Murtagh、及史丹福大学的 Gill、Marray、Saunders、Wright 等所发展的 MINOS [Murtagh and Saunders, 1983] 算法。MINOS是 "Modular In-core Non-linear Optimization System"的缩写,这个算法综合了缩减梯度法和准牛顿法,是专门为大型、复杂的线性与非线性问题设计的算法。对混合整数规划问题,则采用亚历桑那大学的 Marsten 及巴尔第摩大学的 Singhal[1987]共同发展的 ZOOM(Zero/One Optimization Method)算法。
GAMS 使用范例说明
如前所述,GAMS 本身有非常完整的英文版使用者手册,GAMS 的计算机软件中也附带了许多学习范例的档案。这里所作的 GAMS 使用范例说明,目的绝非在取代原版的使用者手册,而是要配合本课程说明的形式,重新编写使用范例输入文件,使读者能很快的进入情况,了解其使用程序。
GAMS 的操作大抵可分为三个步骤:建立 GAMS 输入文件,执行 GAMS 程序,检视 GAMS 输出档内容。
- 1
- 2
- 3
- 4
前往页