通用数学建模系统GAMS基本知识Word文档下载推荐.docx

上传人:b****1 文档编号:13237579 上传时间:2022-10-08 格式:DOCX 页数:41 大小:80.01KB
下载 相关 举报
通用数学建模系统GAMS基本知识Word文档下载推荐.docx_第1页
第1页 / 共41页
通用数学建模系统GAMS基本知识Word文档下载推荐.docx_第2页
第2页 / 共41页
通用数学建模系统GAMS基本知识Word文档下载推荐.docx_第3页
第3页 / 共41页
通用数学建模系统GAMS基本知识Word文档下载推荐.docx_第4页
第4页 / 共41页
通用数学建模系统GAMS基本知识Word文档下载推荐.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

通用数学建模系统GAMS基本知识Word文档下载推荐.docx

《通用数学建模系统GAMS基本知识Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《通用数学建模系统GAMS基本知识Word文档下载推荐.docx(41页珍藏版)》请在冰豆网上搜索。

通用数学建模系统GAMS基本知识Word文档下载推荐.docx

(3)由于GAMS中优化问题的表达可以独立于使用的数据,这种逻辑和数据的分离允许用户在不增加表达形式复杂性的情况下改变模型的规模。

(4)变量的解释文本是符号定义中的一部分,而且无论何时,相关的变量和数值出现时解释文本都会再现。

(5)模型具有可移植性。

GAMS程序可以在不同类型的计算机上求解而不用改变模型。

模型在微型机上能够使用,在大型机上也能求解。

前人开发的模型可以被后人使用,只要移动模型的GAMS语句,这些程序语句包含了所有的数据、算法和求解模型所需的逻辑说明。

(6)灵活的输入输出方式。

基本的GAMS系统没有专门的输入编辑器和图形输出程序,只是提供了一个用户界面。

这种开放的体系结构,使用户可以利用任何他们熟悉的文字处理器编辑GAMS程序,并将运行结果输出到一些通用的图表处理系统。

当然要充分理解这些设计特点需要做大量的练习,但是最终目标是使模型更可用、可读、更容易理解、更可以实证,因此更可信。

下面我们结合一个简单的实例有次序地介绍GAMS语言的成分。

介绍语法规则时采用以下的约定。

[]表示括起来的部分是可选的。

{}表示括起来的部分有可能被重复多次。

|表示“或”操作,符号|两边的操作均有效。

2.1.2一个简单的应用实例

本节以一个线性规划的运输问题为例,介绍如何用GAMS系统对一个简单的优化问题建立模型、求解模型和进行结果分析的详细过程。

这个实例虽然简单,但几乎完全概括了GAMS的特性。

如果考虑一个更大的运输问题,读者会发现在这个GAMS程序里列出的模型框架及内容陈述基本不用改变。

1.问题的提出

在熟悉的运输模型中,我们指定某一商品由若干工厂供应,并在若干市场有需求,我们假定商品从每个工厂到每个市场运输的单位成本已知。

要解决的问题是:

每个工厂应该供应多少该商品到各个市场,才能让运输成本达到最小?

这个问题的代数表达式描述如下:

索引:

i工厂;

j市场;

已知数据:

ai工厂i的商品供应(箱);

bj市场j的商品需求(箱);

cij在工厂i和市场j之间运输的单位成本($/箱)。

决策变量:

xij从工厂i运往市场j该商品的总数量(箱);

对所有的i,j来说,xij≥0;

约束条件:

工厂i所能供应的该商品的量为ai,则对于所有的I来说,有关系式:

即所有市场的需求量不能超过工厂能供应的量。

所有的市场j对该商品的需求要满足关系式:

即所有工厂所能供应的量应该大于市场的需求。

目标函数:

这个简单的实例揭示了建立优化模型的某些重要步骤,而这些步骤与GAMS的设计保持一致。

只是在GAMS中,集合的索引用sets定义,已知数据用parameters描述,决策变量用variables表示,约束条件和目标函数用方程来声明和定义。

运输问题的GAMS表达式与上面列出的代数表达式很类似,其区别在于GAMS的表达方式可以被计算机编译并且执行。

在这个运输问题的实例中,假设有两个罐头加工厂和三个销售市场,已知的数据如下(这个实例选自Dantzig,1963)。

工厂

产地到市场的距离(1000英里)

供货量(箱)

纽约

芝加哥

托皮卡

西雅图

2.5

1.7

1.8

350

圣地亚哥

1.4

600

需求量(箱)

325

300

275

2.GAMS程序

假设运送距离以千英里为单位,运送成本是每箱每千英里90美元,这个问题的GAMS程序如下。

$TitleATransportationProblem

$Ontext

Thisproblemfindsaleastcostshippingschedulethatmeets

requirementsatmarketsandsuppliesatfactories.

References:

Dantzig,GB,LinearProgrammingandExtensions

PrincetonUniversityPress,Princeton,NewJersey,1963,Chapter3-3.

$Offtext

Sets

icanningplants/seattle,san-diego/

jmarkets/new-york,chicago,topeka/;

Parameters

a(i)capacityofplantiincases

/seattle350

san-diego600/

b(j)demandatmarketjincases

/new-york325

chicago300

topeka275/;

Tabled(i,j)distanceinthousandsofmiles

new-yorkchicagotopeka

seattle2.51.71.8

san-diego2.51.81.4;

Scalarffreightindollarspercaseperthousandmiles/90/;

Parameterc(i,j)transportcostinthousandsofdollarspercase;

c(i,j)=f*d(i,j)/1000;

Variables

x(i,j)shipmentquantitiesincases

ztotaltransportationcostsinthousandsofdollars;

PositiveVariablex;

Equations

costdefineobjectivefunction

supply(i)observesupplylimitatplanti

demand(j)satisfydemandatmarketj;

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);

Modeltransport/all/;

Solvetransportusinglpminimizingz;

Displayx.l,x.m;

2.1.3GAMS运行结果与模型概述

1.运行结果

运输模型用上面的GAMS语句明确的表达并在GAMS环境下求解。

虽然在不同的计算机上调用GAMS可能会在一些细节上稍有不同,但是统一的格式是在文件名的后面加上后缀GMS。

模型在运行过程中会输出一系列的运行信息,包括模型名称,错误报告等。

当运行结束时,如果一切正常,GAMS会将最优的方案以下面的格式显示。

new-yorkchicagotopeka

seattle50.000300.000

san-diego275.000275.000

同时还会得到一个边际成本的列表输出。

chicagotopeka

seattle0.036

san-diego0.009

GAMS的运行结果说明最佳的选择是从西雅图到托皮卡不运送任何货物,如果坚持要运送的话,那么每送一箱货物就会在最优费用的基础上增加36美元。

同样的道理,如果从圣地亚哥向芝加哥送货的话,每送一箱货物就会在最优费用的基础上增加9美元。

2.GAMS模型概述

表2.1是参考上面的实例写出的GAMS模型的基本组成。

表2.1GAMS模型组成

输入

输出

索引

声明

索引元素赋值

程序列表

数据(常数、参数、表格)

数据值

运行参考图

变量

类型定义

边界和初值设定(可选择)

方程列表

方程

定义

状态报告

模型和求解语句

结果输出

显示语句(可选择)

我们先对GAMS语句构造的模型给出一些概括的评述。

(1)GAMS模型是用GAMS语言进行描述的集合。

语句执行的次序按照顺序的规则。

(2)GAMS语句在编辑时可以是用户要求的任何形式,每条语句可以多行,并且每行都可以有多条语句。

(3)对于GAMS的初学者来说,应该用分号结束每一条语句,就像实例中那样。

GAMS编译时不分辨大小写,大小写字母可以随意使用。

(4)文档对于数学模型的有用性至关重要。

模型的解释文档被嵌入到模型中,而不是单独写入,这种表达方式更更有效和精确。

至少有两种办法可以使文档嵌入到模型中。

第一种,第一列以星号开始的任意一行都被GAMS编译器作为说明而不予执行;

第二种可能更有效,文档被嵌入到特殊的GAMS语句中。

在运输模型中的所有说明文档都采用了第二种方式。

(5)从上面的输入成分的列表中可以看到,GAMS模型各部分的建立需要两个步骤:

声明和赋值(或定义)。

“声明”意味着声明一些事物的存在并给它们命名;

“赋值”或“定义”给予特别的值或表达式。

在方程模块中,必须分别声明和定义每一个GAMS方程,而对于GAMS模型所有其它的部分,可以选择用统一的语句声明和定义,或者分别用不同的语句来声明和定义。

(6)为模型中的元素命名必须用字母开头,后面最多连接9个字母或数字。

2.2GAMS基本语句

2.2.1GAMS的赋值语句

1.集合与索引

集合与索引的定义是GAMS模型的一个基本模块,它与编程语言中集合与索引的表达方式非常类似。

上面提到的运输实例包含了一个设置集合与索引的语句:

set。

Sets

icanningplants/seattle,san-diego/

jmarkets/new-york,chicago,topeka/;

这个语句的结果是给程序中将要使用的集合的索引命名并赋值。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 院校资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1