LINGO软件的基本使用方法;内容提要;1. LINGO入门;安装文件20M多一点,需要接受安装协议、选择安装目录(缺省C:\LINGO9)。;LINGO软件的主要特色;从LINDO 到 LINGO;在LINGO中使用LINDO模型;LINGO的文件类型;在LINGO中使用LINDO模型;在LINGO中使用LINDO模型;④ 运行程序的LINGO报告窗口(如下图) ;运行状态窗口;运行状态窗口;运行状态窗口;注:凡是可以从一个约束直接解出变量取值时,这个变量就不认为是决策变量而是固定变量,不列入统计中;只含有固定变量的约束也不列入约束统计中。;LINGO早期版本对LINDO的兼容问题;从LINDO模型到LINGO模型的实质性转化工作主要在于以下几个方面(这也是LINGO模型的最基本特征): 将目标函数的表示方式从“MAX”变成了“MAX=”; “ST”(SubjectTo)在LINGO模型中不需要,被删除; 在系数与变量之间增加运算符“*”(即乘号不能省略); 每行(目标、约束和说明语句)后面增加一个分号“;”; 约束的名字被放到 “[ ]”中,不放在右半括号“)”前; LINGO中模型以“MODEL:”开始,以“END” 结束。对简单的模型,这两个语句也可以省略。;一个简单的LINGO程序;程序语句输入的备注:;输出结果:;输出结果备注:;一个简单的LINGO程序;2.在LINGO中使用集合 ;集合的基本用法和LINGO模型的基本要素 ;问题的模型(可以看出是LP模型 );注:LINDO中没有数组,只能对每个季度分别定义变量,如正常产量就要有RP1,RP2,RP3,RP4 4个变量等。写起来就比较麻烦,尤其是更多(如1000个季度)的时候。 记四个季度组成的集合QUARTERS={1,2,3,4},它们就是上面数组的下标集合,而数组DEM,RP,OP, INV对集合QUARTERS中的每个元素1,2,3,4分别对应于一个值。LINGO正是充分利用了这种数组及其下标的关系,引入了“集合”及其“属性”的概念,把QUARTERS={1,2,3,4}称为集合,把DEM,RP,OP, INV称为该集合的属性(即定义在该集合上的属性)。;QUARTERS集合的属性;集合元素及集合的属性确定的所有变量;LINGO中定义集合及其属性 ;目标函数的定义方式;约束的定义方式;本例中,对于产品数量的平衡方程,由于下标i=1时的约束关系式与i=2,3,4时有所区别,所以不能省略下标“i”。实际上,i=1时要用到变量INV(0),但定???的属性变量中INV不包含INV(0)(INV(0)=10是一个已知的)。 为了区别i=1和i=2,3,4,把i=1时的约束关系式单独写出,即“INV(1)=10+RP(1)+OP(1)-DEM(1);” ; 而对i=2,3,4对应的约束,对下标集合的元素(下标i)增加了一个逻辑关系式“i#GT#1”(这个限制条件与集合之间有一个竖线“|”分开,称为过滤条件)。 限制条件“i#GT#1”是一个逻辑表达式,意思就是i>1;“#GT#”是逻辑运算符号,意思是“大于(Greater Than的字首字母缩写)” 。;问题的求解:运行菜单命令“LINGO|Solve” ;注:由于输入中没有给出行名,所以行名是系统自动按照行号1-9生成的。 选择菜单命令“LINGO|Generate|Disply model(Ctrl+G)”,可以得到展开形式的模型(如图),可以看到完整的模型,也能确定行号(行号放在方括号“[ ]”中,且数字前面带有下划线“_”)。 最好在输入模型时用户主动设定约束的行名(即约束名),使程序清晰些。单一约束的行名设置方法就是将行名放在方括号“[ ]”中,置于约束之前。 后面将结合具体例子介绍在使用集合的情况下如何设置行名。 ;小结:LINGO模型最基本的组成要素 ;(2)目标与约束段:目标函数、约束条件等,没有段的开始和结束标记,因此实际上就是除其它四个段(都有明确的段标记)外的LINGO模型。 这里一般要用到LINGO的内部函数,尤其是与集合相关的求和函数@SUM和循环函数@FOR等。 上例中定义的目标函数与quarters的元素数目是 4或 1000并无具体的关系。约束的表示也类似。;(3)数据段(DATA):以 “DATA:” 开始, “ENDDATA”结束,对集合的属性(数组)输入必要的常数数据。 格式为:“attribute(属性) = value_list(常数列表);” 常数列表(value_list)中数据之间可以用逗号“,”分开,也可以用空格分开(回车等价于一个空格),如上面对DEM的赋值也可以写成“DEM=40 60 75 25;”。;(4)初始段(IN