数学规划求解软件Lingo使用简介
一、规划软件LINDO
美国Chicago大学:Linus Schrage教授于1980年前后开发,后来成立了LINDO系统公司。(LINDO Systems Inc.)
网址:www.lindo.com
二、数学规划模型
决策变量 x=(x1,x2,…,xn)
目标函数 min Z=f(x)
约束条件 s.t. x属于A

求解:单纯形法
三、Lingo菜单及对话框

Lingo的工具栏:

Lingo菜单栏:

Lingo的运行状态窗口:



Options7个选项卡:

四、Lingo基本语法
1、定义目标函数为MIN=,MAX=.
2、以一个分号“;”结尾。除SETS,ENDSETS,DATA,ENDDATA,END之外。
3、可以放在约束条件的右端,同时数字也可放在约束条件的左端。
4、假定各变量非负。
5、注释:“!”
6、<\>为≤、≥






建模时需要的几个基本问题:
1、尽量使用实数优化,减少整数约束和整数变量
2、尽量使用光滑优化,减少非光滑约束的个数
如:尽量少使用绝对值、符号函数、多个变量求最大/最小值、四舍五入、取整函数等
3、尽量使用线性模型,减少非线性约束和非线性变量的个数
如:x/y<5改为x<5y
4、合理设定变量上下界,尽可能给出变量初始值
5、模型中使用的参数数量级要适当。如小于十的三次方。
五、Lingo运算符和函数
1、运算符及其优先级


2、Lingo基本数学函数

3、Lingo变量定界函数

4、Lingo条件判断函数
@IF(logical_condition,true_result,false_result)
分段函数
5、Lingo集合循环函数
难点、重点

六、Lingo建模语言
构成:四个段
目标与约束段
集合段
数据段
初始段
(计算段)









集合SET:
格式:集合名 元素列表 属性列表
Setname[/member_list/][:attribute_list];
[……] 表示可选项
元素列表:
显式列举法:列出全部元素,用逗号或空格分开
隐式列举法:1..n
属性列表缺省:集合可在程序中作为一循环变量使用,构造更复杂的派生集合
元素列表缺省:必须在数据段给出元素列表赋值
派生集合:
基于其他集合而派生出来的二维或多维集合
格式:集合名 父集合列表 元素列表 属性列表
Setname(parent_set_list)[/member_list/][:attribute_list];
元素列表缺省:所有组合——稠密集合,或数据段列表赋值
元素列表——稀疏集合:元素列表法——枚举;元素过滤法——利用过滤条件
Setname(parent_set_list)[|filtrate_condition][:attribute_list];

七、Lingo集合循环函数
难点!重点!
循环操作函数——集合上的元素——下标:
集合名 集合索引列表 过滤条件 表达式
@function(setname{(set_index_list)[|condition]]:expression_list);
集合函数名:for max min sum prod