我想知道怎么用GAMS?

我想知道怎么用GAMS?,第1张

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 输出档内容。

可以通过@if来实唤迹逗现分州并段函数,例和卖如

| 5x+2 0<=x<=3

y= {3x^2-83<x<=6

| 10 x>6

在lingo中可以表示如下(lingo默认变量非负x>=0):

y=@if(x#le#3:5*x+2,@if(x#le#6:3*x*x-8,10))

程序,即Excel中的VBA,有很多方法可以进入VBA设计界面 这里说锋蠢帆一下一种比较傻瓜式的办法,适用于当获得一段代码直接使用的情况 详细步骤如下: 1.开发工具,录制宏 2.注意宏名档行,这里是Macrol,并点击银雹确定 3.在任意单元格输入任意字符串,点击停...


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/8189887.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存