LINGO 教程
指派一些成员并且在 LINGO 求解模型之前为集的
某些属性指定值。为此,LINGO 为用户提供了两
个 可 选 部 分 : 输 入 集 成 员 和 数 据 的 数 据 部 分
(Data Section)和为决策变量设置初始值的初
始部分(Init Section)。
1 数据部分入门
数据部分提供了模型相对静止部分和数据分
离的可能性。显然,这对模型的维护和维数的缩
放非常便利。
数据部分以关键字“ data:”开始,以关键字
“enddata”结束。在这里,可以指定集成员、集
的属性。其语法如下:
object_list = value_list;
对象列(object_list)包含要指定值的属性
名、要设置集成员的集名,用逗号或空格隔开。
一个对象列中至多有一个集名,而属性名可以有
任意多。如果对象列中有多个属性名,那么它们
的类型必须一致。如果对象列中有一个集名,那
么对象列中所有的属性的类型就是这个集。
数值列(value_list)包含要分配给对象列中
的对象的值,用逗号或空格隔开。注意属性值的
个数必须等于集成员的个数。看下面的例子。例
sets:
set1/A,B,C/: X,Y;
endsets
data:
X=1,2,3;
Y=4,5,6;
enddata
在集 set1 中定义了两个属性 X 和 Y。X 的三
个值是 1、2 和 3,Y 的三个值是 4、5 和 6。也可
采 用 如 下 例 子 中 的 复 合 数 据 声 明 ( data
statement)实现同样的功能。例
sets:
set1/A,B,C/: X,Y;
endsets
data:
X,Y=1 4
2 5
3 6;
enddata
看到这个例子,可能会认为 X 被指定了 1、4
和 2 三个值,因为它们是数值列中前三个,而正
确的答案是 1、2 和 3。假设对象列有 n 个对象,
LINGO 在为对象指定值时,首先在 n 个对象的第
1 个索引处依次分配数值列中的前 n 个对象,然后
在 n 个对象的第 2 个索引处依次分配数值列中紧
接着的 n 个对象,……,以此类推。
模型的所有数据(属性值和集成员)被单独
放在数据部分,这可能是最规范的数据输入方式。
2 参数
在 数 据 部 分 也 可 以 指 定 一 些 标 量 变 量
(scalar variables)。当一个标量变量在数据部
分确定时,称之为参数。看一例,假设模型中用
利率 8.5%作为一个参数,就可以象下面一样输入
一个利率作为参数。例
data:
interest_rate = .085;
enddata
也可以同时指定多个参数。例
data:
interest_rate,inPation_rate = .085 .03;
enddata
3 实时数据处理
在某些情况,对于模型中的某些数据并不是
定值。譬如模型中有一个通货膨胀率的参数,我
们想在 2%至 6%范围内,对不同的值求解模型,
来观察模型的结果对通货膨胀的依赖有多么敏感。
我 们 把 这 种 情 况 称 为 实 时 数 据 处 理 ( what if
analysis)。 LINGO 有一个特征可方便地做到这
件事。
在本该放数的地方输入一个问号(?)。 例
data:
interest_rate,inPation_rate = .085 ?;
enddata
每 一 次 求 解 模 型 时 , LINGO 都 会 提 示 为 参 数
inPation_rate 输入一个值。在 WINDOWS 操作
系统下,将会接收到一个类似下面的对话框:
直接输入一个值再点击 OK 按钮,LINGO 就会把
输入的值指定给 inPation_rate,然后继续求解模
型。
除了参数之外,也可以实时输入集的属性值,
但不允许实时输入集成员名。
4 指定属性为一个值
可以在数据声明的右边输入一个值来把所有
的成员的该属性指定为一个值。看下面的例子。
例
sets:
days /MO,TU,WE,TH,FR,SA,SU/:needs;
endsets
data:
needs = 20;
enddata
LINGO 将 用 20 指 定 days 集 的 所 有 成 员 的
needs 属性。对于多个属性的情形,见下例。例
sets:
days /MO,TU,WE,TH,FR,SA,SU/:needs,cost;
endsets
data:
needs cost = 20 100;
共 11 页
评论0
最新资源