1.学习目标
了解lingo软件的基本功能和简单线性规划模型的求解;会对简单线性规划模型参数作灵敏度分析。
2.lingo基础介绍
LINGO是Linear Interactive and General Optimizer的缩写,即“交互式的线性和通用优化求解器”,由美国LINDO系统公司(Lindo System Inc.)推出的,可以用于求解非线性规划,也可以用于一些线性和非线性方程组的求解等,功能十分强大,是求解优化模型的最佳选择。其特色在于内置建模语言,提供十几个内部函数,可以允许决策变量是整数(即整数规划,包括 0-1 整数规划),方便灵活,而且执行速度非常快。能方便与EXCEL,数据库等其他软件交换数据。目前LINGO18.0为最新版本。(源自百度)
简单来说,它是一套设计用来快速,方便和有效的构建和求解线性,非线性,和整数最优化模型的功能全面的工具。
3.基本学习任务
(1)熟悉Lingo软件操作界面以及相关功能,学习案例编程;
(2)求解合理利用线材问题,记录模型的程序代码,并将求解结果作相关记录,重点记录最优解和最优值;
(3)自选一个简单的线性规划模型,对已知参数作灵敏度分析,要求记录作灵敏度分析的步骤,并给出某一个参数的灵敏度区间。
4.基础知识
LINGO 的数学规划模型包含目标函数、决策变量、约束条件三个要素。
在LINGO 程序中,每一个语句都必须要用一个英文状态下的分号结束,一个语句可以分几行输入。
LINGO 的注释以英文状态的!开始,必须以英文状态下的分号结束。
LINGO 的变量不区分字母的大小写,必须以字母开头,可以包含数字和下划线,不超过32 个字符。
LINGO 程序中,只要定义好集合后,其他语句的顺序是任意的。
LINGO 中的函数以“@”开头。
LINGO 程序默认所有的变量都是非负的。
LINGO 程序中"<"或">"号与 "<="或 ">=" 号功能相同。
5.初步使用
(1)算术运算符是针对数值进行操作的。LINGO提供了5种二元运算符:
^ 乘方
﹡ 乘
/ 除
﹢ 加
﹣ 减
LINGO唯一的一元算术运算符是取反函数“﹣”。
这些运算符的优先级由高到底为:
高 ﹣(取反)
^
﹡/
低 ﹢﹣
运算符的运算次序为从左到右按优先级高低来执行。运算的次序可以用圆括号“()”来改变。
例1,算术运算符示例。
2﹣5/3,(2﹢4)/5等等。
(2) 变量界定函数
变量界定函数实现对变量取值范围的附加限制,共4种:
@bin(x) 限制x为0或1
@bnd(L,x,U) 限制L≤x≤U
@free(x) 取消对变量x的默认下界为0的限制,即x可以取任意实数
@gin(x) 限制x为整数
在默认情况下,LINGO规定变量是非负的,也就是说下界为0,上界为+∞。@free取消了默认的下界为0的限制,使变量也可以取负值。@bnd用于设定一个变量的上下界,它也可以取消默认下界为0的约束。
(3)目标函数或约束条件的每个表达式都可以跨多行,但结束要用”;”来表示,而且要用英文输入模式下的半角模式”;”,而非中文模式下的全解模式。
(4)解的报告窗口中,reduced cost列出最优单纯形表中各变量的检验数的绝对值,表示当变量有微小变动时,目标函数的变化率;slack or surplus 给出松弛变量或剩余变量的值,第一行松弛变量表示目标函数,第二行对应第一个约束.dual price 表示对偶价格,当对应的约束有微小变动时,目标函数的变化率。
(5)在Lingo运行时,作灵敏度分析,须先打开分析按钮,具体步骤如下:单击Solver|Options菜单,选择General Solver 选项卡,在Dual Computations 列表框中,选择Price and Ranges 选项,点击应用即可,然后再对线性规划问题求解,注意不要关闭解的报告窗口,并把光标放在模型窗口,再单击Solver|Range即可弹出分析报告窗口。

