[计算机软件及应用]Lingo实战教程.doc

上传人:音乐台 文档编号:1991588 上传时间:2019-01-28 格式:DOC 页数:40 大小:741.33KB
返回 下载 相关 举报
[计算机软件及应用]Lingo实战教程.doc_第1页
第1页 / 共40页
[计算机软件及应用]Lingo实战教程.doc_第2页
第2页 / 共40页
[计算机软件及应用]Lingo实战教程.doc_第3页
第3页 / 共40页
亲,该文档总共40页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《[计算机软件及应用]Lingo实战教程.doc》由会员分享,可在线阅读,更多相关《[计算机软件及应用]Lingo实战教程.doc(40页珍藏版)》请在三一文库上搜索。

1、实 训 一 Lindo求解线性规划问题一、实训目的1使学生熟悉并掌握Lindo软件的特点及其基本使用方法;2使学生掌握运用Lindo来解决线性规划问题。二、实训内容与步骤1Lindo软件的安装过程2编写Lindo程序并运行 下面通过一个简单的例子,说明编写、运行一个LINDO程序的完整过程。 在Windows操作系统下双击Lindo图标(或在Windows“开始”菜单的程序中选择运行Lindo软件),可以启动Lindo软件,屏幕上首先显示如图1-1的工作窗口。 图1-1Lindo初始界面这就是Lindo的初始化界面目前光标所在的子窗口成为模型窗口(model window),是用来提供用户输入

2、Lindo程序的,所谓的一个Lindo程序,就是用Lindo软件所要求的语法格式对一个优化模型的完整描述,因此一个Lindo程序也就是一个Lindo优化模型。这两者在Lindo中可以认为是一回事,所以下面将不再区分这两个概念。目前这个模型窗口标“”字样,表示用户还没有为这个程序命名,因此Lindo采用了一个自动生成的名字“untitled”,将来用户在保存程序时可以对它重新命名。【例1.1】 求解如下简单的线性规划(LP)问题:(注:本例为哈尔滨工业大学运筹学基础及应用第三版20页例5) 我们可以直接在这个新的、空白的模型窗口中输入这个LP模型(图1-2)max=2*x1+3*x2;2*x1+

3、2*x2=12;x1+2*x2=8;4*x1=16;4*x2=12;Status(当前状态)显示当前求解状态:“Optimal”表示已经达到了最优解;其他可能的显示还有三个:Feasible,Infeasible,UnboundedIterations(迭代次数)显示迭代次数:“3”表示经过了3次迭代Infeasibility(不可行性)约束不满足的量(即各约束条件不满足的“数量”和;特别注意不是“不满足的约束个数”):“0”表示这个解是可行的Objective(当前的目标值)显示目标函数当前的值:14Best IP(整数规划当前的最佳目标值)显示整数规划当前的最佳目标值:“N/A”(No A

4、nswer 或Not Applicable)表示无答案或无意义,因为这个模型中没有整数变量,不是整数规划。IP Bound(整数规划的界)显示整数规划的界(对最大化问题显示上界,对最小化问题显示下界):“N/A”含义同上。Branches(分支数)显示分支定界算法已经计算的分支数:“N/A”含义同上。Update Interval (刷新本界面的时间间隔)显示和控制刷新本界面的时间间隔:“1”表示1秒;用户可以直接在界面上修改这个时间间隔。Interrupt Solver(中断求解程序)当模型规模比较大时(尤其是对整数规划),可能求解时间会很长,如果不想再等待下去时,可以在程序运行过程中用鼠标

5、单击该按纽终止计算。求解结束后这个按纽变成了灰色,再单击就不再起作用了。Close(关闭)该按纽只是关闭状态窗口,并不终止计算。如果你关闭了状态窗口,将随时可以选择Window/Open Status Window 菜单命令来再次打开这个窗口。下一步在敏感性分析对话框(图1-4)中选择“是”,则出现敏感性分析报告,如下图:图1-4LINDO的结果报告窗口“REDUCED COST”给出各个变量的检验数。其中基变量的REDUCED COST一定为0;对于非基变量(注意:非基变量本身取值一定为0),相应的REDUCED COST表示当该非基变量增加一个单位(其他非基变量保持不变)时,目标函数值的减

6、少量(对MAX型问题)。“SLACK OR SUPPLUS(松弛或剩余)”本例给出的4个都是约束变量对应的松弛变量(注意:目标函数为第1行,4个约束条件分别是第2行第5行)。 “DUAL PRICES”给出的是影子价格的值。“NO ITERATIONS=3”表示用单纯形法进行了3次跌代。敏感性分析的作用是给出“RANGES IN WHICH THE BASIS IS UNCHANGED”即最优基保持不变的系数范围。内容包括以下两部分:(1)目标函数中系数变化的范围(OBJ COEFFICIENT RANGES)如本例中,目标函数中X1当前的系数(CURRENT COEF)=2,可以增加(ALL

7、OWABLE INCREASE)=INFINITY(无穷)、可以减少(ALLOWABLE DECREASE)=0.5,说明它的变化范围为1.5,时,最优基保持不变;目标函数中X2当前的系数(CURRENT COEF)=3,可以增加(ALLOWABLE INCREASE)=1、可以减少(ALLOWABLE DECREASE)=3,说明它的变化范围为0,4时,最优基保持不变。(2)约束右端项变化的范围(RIGHTHAND SIDE RANGES)如本例中,第2行约束中当前右端项(CURRENT RHS)=12,可以增加(ALLOWABLE INCREASE)= INFINITY(无穷)、可以减少(

8、ALLOWABLE DECREASE)=0,说明它的变化范围为12,时,最优基保持不变。第3、4、5行可以类似解释。最后,可以选择菜单命令Reports中的Tableau来直接查看单纯形表,其中ART是人工变量(artificial variable)。具体见图1-5图1-5Lindo输出的单纯型表我们现在可以用鼠标单击工具栏里的保存图标把这个结果报告保存在一个文件中(默认的后缀名为ltx,即LINDO的文本文件),以便以后调出来查看。如果您不想继续使用LINDO,现在可以选择File中的Exit命令退出。现在,我们归纳一下上面介绍的输入、求解L问题的一般步骤如下:(1)在模型窗口中输入一个L

9、P模型,模型以“MAX”或“MIN”开始,按线性规划问题的自然形式输入(如前面例子所示),如要结束一个模型的输入,只需要输入“END”(也可以省略)。(2)求解模型。如果LINDO报告有编译错误,则回到上一步修改模型。(3)查看结果,存储结果和模型。 实 训 二 Lindo求解整数规划问题一、实训目的1使学生了解Lindo软件在使用过程中的一些注意事项;2使学生掌握运用Lindo来解决整数规划问题。二、实训内容与步骤1Lindo软件在使用过程中的注意事项 我们前面已经看到,Lindo软件对模型的输入格式的要求与线性规划问题的自然形式(数学形式)非常相似,几乎没有什么差别,因此几乎不需要专门学习

10、就可以掌握。不过,Lindo软件对模型的输入格式还是有一些特殊规定的,这些规则值得引起特别的注意。下面就简单解释一下使用Lindo软件建立线性规划模型的一些特殊注意事项: (1)Lindo中的变量名由字母和数字组成,但必须以字母开头,且长度不能超过8个字符(且只能是英文字符,不能含有中文字符)。Lindo中不区分大小写字母,包括Lindo中本身的关键字(如MAX、MIN等)也不区分大小写字母。(2)Lindo中对优化模型的目标和约束条用行号(行名)进行标识,这些标识会在将来的求解报告中用到。用户没有指定行号(行名)时,系统会自动产生行号,将目标函数所在的行作为第1行,从第2行起为约束条件。用户

11、也可以人为定义行号或行名,行号或行名总是以“)”结束,放在相应的约束之前;行号或行名可以和变量一样命名,也可以只用数字命名,但长度同样不能超过8个字符。为了方便将来阅读求解结果报告,建议学生自觉地对每个约束进行命名。行名中甚至可以含有 中文字符,但行名结束标志符号,即右括号“)”必须是英文字符,否则会出现错误。(3)在Lindo模型的任何地方都可以用“TITLE”语句对输入的模型进行命名,用法是在TITLE后面写出其名字(最多72个字符,可以有汉字),在程序中单独占一行,请看先面的两个例子:TITLE Example Model for Chapter 2TITLE 第2章的第一个例子此外,L

12、indo模型中以感叹号(“!”符号)开头的是注释行(注释语句,或称为说明语句),可以帮助他人或以后自己理解这个模型。实际上,每行中“!”符号后面的都是注释或说明。例如:!This is a comment !这是一个约束第1行完全是注释语句;第2行则后半句是注释语句,可以看出,注释语句中也可以有汉字,但是领头的感叹号“!”必须是英文字符,否则会出现错误。(4)Lindo中变量不能出现在一个约束的右端(约束条件的右端只能是常数);变量与其系数间可以有空格(甚至回车),但不能有任何运算符(包括乘号“*”等)。(5)Lindo中不能接受括号“()”和逗号“,”等任何符号(除非在注释语句中),例如40

13、0(X1+X2)需要写为400X1+400X2;“10,000”需写为10000。(6)Lindo中表达式应当已经经过化简,如不能出现2X1+3X2-4X1,而应写成-2X1+3X2等(7)Lindo中已假定所有变量非负。可在模型的END语句后面用命令“FREE”(假定自由变量)取消变量的非负假定。其用法是“FREE”后面跟变量名,如在END语句后输入下面命令,可将变量vname的非负假定取消:FREE vname (8)可以在模型的“END”语句后面用命令“SUB”(设置上界(set upper bound)的英文缩写)设置变量的上界,用命令“SLB”(设置下界(set lower boun

14、d)的英文缩写)设置变量的下界。其用法是:“SUB vname value” 将变量的上限射定为value;“SLB”的用法类似,例如:SUB X1 10 !作用等价于“X1=20”但是“SUB”和“SLB”表示的上下界约束不计入模型的约束,因此LINDO也不能给出其松紧判断和敏感性分析。(9)数值均衡化及其他考虑:如果约束系数矩阵中各非零元的绝对值的数量级差别很大(相差1000倍以上),则称其为数值不均衡的。为了避免数值不均衡引起的计算问题,使用者应尽可能自己对矩阵的行列进行均衡化。此时还有一个原则,即系数中非零元的绝对值不能大于100000或者小于0.0001。LINDO不能对LP中的系数

15、自动进行数值均衡化,但如果LINDO觉得矩阵元素之间很不均衡,将会给出警告。(10)简单错误的检查和避免 当将一个线性规划问题的数学表达式输入Lindo系统时,有可能式子中会带有某些输入错误。这类错误虽然可能只是抄写和输入错误造成的,但当问题规模较大时,要搜寻它们也是比较困难的。在Lindo中有一些可帮助寻找错误的功能,其中之一就是菜单命令“Report | Picture”,它的功能是可以将目标函数和约束表达式中的非零系数通过列表(或图形)显示出来。例如 例1.1的系数矩阵的图形显示为:图1-6系数矩阵的图形显示2整数规划问题求解Lindo可用于求解线性纯整数规划或混合整数规划(IP),模型

16、的输入与LP问题类似,但在END标志后需要定义整型变量。0/1型的变量可由INTEGER(可简写为INT)命令来标识 ,有以下两种可能的用法:INT vnameINT n前者只将决策变量vname标识为0/1型,后者将当前模型中前n个变量标识为0/1型(模型中变量顺序由模型中输入时出现的先后顺序决定,该顺序可由输出结果中的变量顺序查证是否一致)。一般的整数变量可用命令GIN(general integer的缩写),其使用方式及格式与INT命令相似,需要强调的是,对整数变量的说明只能放在模型的“END”语句之后。下面对1.2.4提出的员工聘用问题进行具体的演示:【例2.1】求解员工聘用问题,某公

17、司需要工作人员,需求情况如下表所示,为了保证工作人员充分休息,每名工作人员每周工作5天,休息2天,并要求休息的两天时连续的,问如何安排工作人员的作息,使之既满足工作的需要,又使聘任的工作人员数量最少?时间所需工作人数星期日50星期一50 星期二50星期三50星期四80星期五90星期六901:4 5 6 7 12:5 6 7 1 2 3:6 7 1 2 3 首先在Lindo模型窗口中输入模型,如图1-7,其中“GIN 7”表示7个变量都是一般整数变量(仍然默认为取值是非负的)。求解窗口见图1-8。Min=x1+x2+x3+x4+x5+x6+x7;x1 +X4+x5+x6+x7=50;x1+x2

18、+x5+x6+x7=50;x1+X2+x3 +x6+x7=50;x1+X2+x3+x4 +x7=50;x1+X2+x3+x4+x5 =80; X2+x3+x4+x5+x6 =90; x3+x4+x5+x6+x7 =90;gin(x1); gin(x2);gin(x3);gin(x4); gin(x5);gin(x6);gin(x7);图1-7 例1.2的输入模型 Global optimal solution found. Objective value: 94.00000 Extended solver steps: 0 Total solver iterations: 7 Variable

19、 Value Reduced Cost X1 0.000000 1.000000 X2 4.000000 1.000000 X3 40.00000 1.000000 X4 3.000000 1.000000 X5 40.00000 1.000000 X6 3.000000 1.000000 X7 4.000000 1.000000 Row Slack or Surplus Dual Price 1 94.00000 -1.000000 2 0.000000 0.000000 3 1.000000 0.000000 4 1.000000 0.000000 5 1.000000 0.000000

20、6 7.000000 0.000000 7 0.000000 0.0000008 0.000000 0.000000图1-8 例1.2的输出结果(注:Lindo求解整数规划用的方法式分枝定界法)下面求解教材上的一道例题(注:本例为哈尔滨工业大学运筹学基础及应用第三版87页例2)【例2.2】有一份说明书,要分别翻译为英语、日语、德语和俄语四种文字,交给甲、乙、丙、丁四个人去完成。因各人专长不同,他们完成翻译不同文字所需要的时间也不一样。应如何分配,使这4个人分别完成这4项任务的总时间为最小。表 1-1 工作效率矩阵表英语日语德语俄语甲215134乙1041415丙9141613丁78119下面对

21、该问题进行具体的演示:Min=2*x11+15*X12+13*x13+4*x14+10*x21+4*X22+14*x23+15*x24+9*x31+14*X32+16*x33+13*x34+7*x41+8*X42+11*x43+9*x44;x11+X12+x13+x14=1;x21+X22+x23+x24=1;x31+X32+x33+x34=1;x41+X42+x43+x44=1;bin(x11); bin(x12);bin(x13);bin(x14);bin(x21); bin(x22);bin(x23);bin(x24);bin(x31); bin(x32);bin(x33);bin(x3

22、4);bin(x41); bin(x42);bin(x43);bin(x44);图1-9 例1.3的输入模型Global optimal solution found. Objective value: 22.00000 Extended solver steps: 0 Total solver iterations: 0 Variable Value Reduced Cost X11 1.000000 2.000000 X12 0.000000 15.00000 X13 0.000000 13.00000 X14 0.000000 4.000000 X21 0.000000 10.00000

23、 X22 1.000000 4.000000 X23 0.000000 14.00000 X24 0.000000 15.00000 X31 1.000000 9.000000 X32 0.000000 14.00000 X33 0.000000 16.00000 X34 0.000000 13.00000 X41 1.000000 7.000000 X42 0.000000 8.000000 X43 0.000000 11.00000 X44 0.000000 9.000000 Row Slack or Surplus Dual Price 1 22.00000 -1.000000 2 0.

24、000000 0.000000 3 0.000000 0.000000 4 0.000000 0.000000 5 0.000000 0.000000图1-10 例1.3的输出结果实 训 三 Lingo求解线性规划问题一、实训目的1使学生了解Lingo软件特点及其使用方法;2使学生掌握集合的概念和Lingo程序中集合的表示。二、实训内容与步骤1熟悉Lingo软件Lingo是用来求解线性和非线性优化问题的简易工具。Lingo内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用Lingo高效的求解器可快速求解并分析结果。当你在windows下开始运行Lingo系统时,会得到类似下面的一个

25、窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。在主窗口内的标题为LINGO Model- LINGO1的窗口是LINGO的默认模型窗口,建立的模型都都要在该窗口内编码实现。下面举两个例子。【例3.1】如何在LINGO中求解如下的LP问题:在模型窗口中输入如下代码:min=2*x1+3*x2;x1+x2=350;x1=100;2*x1+x2=600;然后点击工具条上的按钮 即可。2Lingo中的集合对实际问题建模的时候,总会遇到一群或多群相联系的对象,比如工厂、消费者群体、交通工具和雇工等等。LINGO允许把这些相联系的对象聚合成集(sets)。一旦把对

26、象聚合成集,就可以利用集来最大限度的发挥LINGO建模语言的优势。(1)集的概念集是一群相联系的对象,这些对象也称为集的成员。一个集可能是一系列产品、卡车或雇员。每个集成员可能有一个或多个与之有关联的特征,我们把这些特征称为属性。属性值可以预先给定,也可以是未知的,有待于LINGO求解。例如,产品集中的每个产品可以有一个价格属性;卡车集中的每辆卡车可以有一个牵引力属性;雇员集中的每位雇员可以有一个薪水属性,也可以有一个生日属性等等。LINGO有两种类型的集:原始集(primitive set)和派生集(derived set)。一个原始集是由一些最基本的对象组成的。一个派生集是用一个或多个其它

27、集来定义的,也就是说,它的成员来自于其它已存在的集。(2) 定义原始集为了定义一个原始集,必须详细声明:集的名字可选,集的成员可选,集成员的属性定义一个原始集,用下面的语法:setname/member_list/:attribute_list;注意:用“”表示该部分内容可选。下同,不再赘述。Setname是你选择的来标记集的名字,最好具有较强的可读性。集名字必须严格符合标准命名规则:以拉丁字母或下划线(_)为首字符,其后由拉丁字母(AZ)、下划线、阿拉伯数字(0,1,9)组成的总长度不超过32个字符的字符串,且不区分大小写。注意:该命名规则同样适用于集成员名和属性名等的命名。Member_l

28、ist是集成员列表。如果集成员放在集定义中,那么对它们可采取显式罗列和隐式罗列两种方式。如果集成员不放在集定义中,那么可以在随后的数据部分定义它们。当显式罗列成员时,必须为每个成员输入一个不同的名字,中间用空格或逗号搁开,允许混合使用。【例3.2】定义一个名为students的原始集,有成员John、Jill、Rose和Mike,属性有sex和age:sets: students/John Jill, Rose Mike/: sex, age;endsets 当隐式罗列成员时,不必罗列出每个集成员。可采用如下语法:setname/member1.memberN/: attribute_list

29、;这里的member1是集的第一个成员名,memberN是集的最末一个成员名。LINGO将自动产生中间的所有成员名。LINGO也接受一些特定的首成员名和末成员名,用于创建一些特殊的集。列表如下:隐式成员列表格式示例所产生集成员1.n1.51,2,3,4,5StringM.StringNCar2.car14Car2,Car3,Car4,Car14DayM.DayNMon.FriMon,Tue,Wed,Thu,FriMonthM.MonthNOct.JanOct,Nov,Dec,JanMonthYearM.MonthYearNOct2001.Jan2002Oct2001,Nov2001,Dec20

30、01,Jan2002 集成员不放在集定义中,而在随后的数据部分来定义。【例3.3】!集部分;sets: students:sex,age;endsets!数据部分;data: students,sex,age = John 1 16 Jill 0 14 Rose 0 17 Mike 1 13;enddata注意:开头用感叹号(!),末尾用分号(;)表示注释,可跨多行。在集部分只定义了一个集students,并未指定成员。在数据部分罗列了集成员John、Jill、Rose和Mike,并对属性sex和age分别给出了值。集成员无论用何种字符标记,它的索引都是从1开始连续计数。在attribute_

31、 list可以指定一个或多个集成员的属性,属性之间必须用逗号隔开。可以把集、集成员和集属性同C语言中的结构体作个类比。如下图:集 结构体集成员 结构体的域集属性 结构体实例LINGO内置的建模语言是一种描述性语言,用它可以描述现实世界中的一些问题,然后再借助于LINGO求解器求解。因此,集属性的值一旦在模型中被确定,就不可能再更改。在LINGO中,只有在初始部分中给出的集属性值在以后的求解中可更改。这与前面并不矛盾,初始部分是LINGO求解器的需要,并不是描述问题所必须的。(3)定义派生集为了定义一个派生集,必须详细声明:集的名字父集的名字可选,集成员可选,集成员的属性可用下面的语法定义一个派

32、生集:setname(parent_set_list)/member_list/:attribute_list;setname是集的名字。parent_set_list是已定义的集的列表,多个时必须用逗号隔开。如果没有指定成员列表,那么LINGO会自动创建父集成员的所有组合作为派生集的成员。派生集的父集既可以是原始集,也可以是其它的派生集。【例3.4】sets: product/A B/; machine/M N/; week/1.2/; allowed(product,machine,week):x;endsetsLINGO生成了三个父集的所有组合共八组作为allowed集的成员。列表如下:

33、编号12345678成员(A,M,1)(A,M,2)(A,N,1)(A,N,2)(B,M,1)(B,M,2)(B,N,1)(B,N,2) 成员列表被忽略时,派生集成员由父集成员所有的组合构成,这样的派生集成为稠密集。如果限制派生集的成员,使它成为父集成员所有组合构成的集合的一个子集,这样的派生集成为稀疏集。同原始集一样,派生集成员的声明也可以放在数据部分。一个派生集的成员列表有两种方式生成:显式罗列;设置成员资格过滤器。当采用方式时,必须显式罗列出所有要包含在派生集中的成员,并且罗列的每个成员必须属于稠密集。使用前面的例子,显式罗列派生集的成员:allowed(product,machine,

34、week)/A M 1,A N 2,B N 1/; 如果需要生成一个大的、稀疏的集,那么显式罗列就不行了。幸运地是许多稀疏集的成员都满足一些条件以和非成员相区分。我们可以把这些逻辑条件看作过滤器,在LINGO生成派生集的成员时把使逻辑条件为假的成员从稠密集中过滤掉。【例3.5】sets: !学生集:性别属性sex,1表示男性,0表示女性;年龄属性age. ; students/John,Jill,Rose,Mike/:sex,age; !男学生和女学生的联系集:友好程度属性friend,0,1之间的数。 ; linkmf(students,students)|sex(&1) #eq# 1 #a

35、nd# sex(&2) #eq# 0: friend; !男学生和女学生的友好程度大于0.5的集; linkmf2(linkmf) | friend(&1,&2) #ge# 0.5 : x;endsetsdata: sex,age = 1 16 0 14 0 17 0 13; friend = 0.3 0.5 0.6;enddata用竖线(|)来标记一个成员资格过滤器的开始。#eq#是逻辑运算符,用来判断是否“相等”,可参考4. &1可看作派生集的第1个原始父集的索引,它取遍该原始父集的所有成员;&2可看作派生集的第2 个原始父集的索引,它取遍该原始父集的所有成员;&3,&4,以此类推。注意如

36、果派生集B的父集是另外的派生集A,那么上面所说的原始父集是集A向前回溯到最终的原始集,其顺序保持不变,并且派生集A的过滤器对派生集B仍然有效。因此,派生集的索引个数是最终原始父集的个数,索引的取值是从原始父集到当前派生集所作限制的总和。(3)数据输入部分数据部分以关键字“data:”开始,以关键字“enddata”结束。在这里,可以指定集成员、集的属性。其语法如下:object_list = value_list;对象列(object_list)包含要指定值的属性名、要设置集成员的集名,用逗号或空格隔开。一个对象列中至多有一个集名,而属性名可以有任意多。如果对象列中有多个属性名,那么它们的类型

37、必须一致。如果对象列中有一个集名,那么对象列中所有的属性的类型就是这个集。数值列(value_list)包含要分配给对象列中的对象的值,用逗号或空格隔开。注意属性值的个数必须等于集成员的个数。看下面的例子。【例3.6】 sets: set1/A,B,C/: X,Y;endsetsdata: X=1,2,3; Y=4,5,6;enddata在集set1中定义了两个属性X和Y。X的三个值是1、2和3,Y的三个值是4、5和6。也可采用如下例子中的复合数据声明(data statement)实现同样的功能。【例3.7】 sets: set1/A,B,C/: X,Y;endsetsdata: X,Y=1

38、 4 2 5 3 6;enddata看到这个例子,可能会认为X被指定了1、4和2三个值,因为它们是数值列中前三个,而正确的答案是1、2和3。假设对象列有n个对象,LINGO在为对象指定值时,首先在n个对象的第1个索引处依次分配数值列中的前n个对象,然后在n个对象的第2个索引处依次分配数值列中紧接着的n个对象,以此类推。参数在数据部分也可以指定一些标量变量(scalar variables)。当一个标量变量在数据部分确定时,称之为参数。看一例,假设模型中用利率8.5%作为一个参数,就可以象下面一样输入一个利率作为参数。【例3.8】 data: interest_rate =0 .085;enddata也可以同时指定多个参数。【例3.9】 data: interest_rate,inflation_rate = 0.085 0.03;enddata实时数据处理在某些情况,对于模型中的某些数据并不是定值。譬如模型中有一个通货膨胀率的参数,我们想在2%至6%范围内,对不同的值求解模型,来观察模型的结果对通货膨胀的依赖有多么敏感。我们把这种情况称为实时数据处理(what if analysis)。LINGO有一个特征可方便地做到这件事。 在本该放数的地方输入一个问号(?)。【例3.10】 data: interest_rate,inflation_rate = .085 ?;enddata

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1