文档介绍:优化模型与LINDO/LINGO优化软件
1,从Lindo到Lingo
线性规划是优化方法中最基本,也是最重要的方法,最根本的原因是模型的规范性以及求解的高效率。其最基本的形式如下:
当问题比较简单是,利用Lindo可以方便的求解。比如下面的问题
max 2x1+3x2
. x1+x2 ≤ 2
x1-2x2≤1/2
x1,x2非负
按照Lindo的语法,写成
max 2x1+3x2
. x1+x2 ≤ 2
x1-2x2≤1/2
end
更多的例子可以参见程序部分
使用LINDO的一些注意事项
“>”(或“<”)号与“>=”(或“<=”)功能相同
变量与系数间可有空格(甚至回车), 但无运算符
变量名以字母开头,不能超过8个字符
变量名不区分大小写(包括LINDO中的关键字)
目标函数所在行是第一行,第二行起为约束条件
行号(行名)自动产生或人为定义。行名以“)”结束
行中注有“!”符号的后面部分为注释。如:
! It’ment.
在模型的任何地方都可以用“TITLE”对模型命名(最多72个字符),如:
TITLE This Model is only an Example
变量不能出现在一个约束条件的右端
表达式中不接受括号“( )”和逗号“,”等任何符号, 例: 400(X1+X2)需写为400X1+400X2
表达式应化简,如2X1+3X2- 4X1应写成-2X1+3X2
缺省假定所有变量非负;可在模型的“END”语句后用“FREE name”将变量name的非负假定取消
可在“END”后用“SUB”或“SLB”设定变量上下界
例如: “sub x1 10”的作用等价于“x1<=10”
但用“SUB”和“SLB”表示的上下界约束不计入模型的约束,也不能给出其松紧判断和敏感性分析。
14. “END”后对0-1变量说明:INT n 或 INT name
15. “END”后对整数变量说明:GIN n 或 GIN name
使用LINDO的一些注意事项
状态窗口(LINDO Solver Status)
当前状态:已达最优解
迭代次数:18次
约束不满足的“量”(不是“约束个数”):0
当前的目标值:94
最好的整数解:94
整数规划的界:
分枝数:1
所用时间:(太快了,)
刷新本界面的间隔:1(秒)
选项设置
Preprocess:预处理(生成割平面);
Preferred Branch:优先的分枝方式:
“Default”(缺省方式)、
“Up”(向上取整优先)、
“Down”(向下取整优先);
IP Optimality Tol:IP最优值允许的误差上限(一个百分数,如5%);
IP Objective Hurdle:IP目标函数的篱笆值,即只寻找比这个值更优最优解(如当知道当前模型的某个整数可行解时,就可以设置这个值);
IP Var Fixing Tol:固定一个整数变量取值所依据的一个上限(如果一个整数变量的判别数(REDUCED COST)的值很大,超过该上限,则以后求解中把该整数变量固定下来)。
Nonzero Limit:
非零系数的个数上限;
Iteration Limit:
最大迭代步数;
Initial Contraint Tol:
约束的初始误差上限;
Final Contraint Tol:
约束的最后误差上限;
Entering Var Tol:
进基变量的REDUCED COST的误差限;
Pivot Size Tol:
旋转元的误差限
Report/Statistics
第一行:模型有5行(约束4行),4个变量,两个整数变量(没有0-1变量),从第4行开始是二次规划的实际约束。
第二行:非零系数19个,约束中非零系数12个(其中6个为1或-1),(密度=非零系数/[行数*(变量数+1)]) 。
第三行的意思:按绝对值看,系数最小、。
第四行的意思:模型目标为极小化;小于等于、等于、大于等于约束分别有2、0、2个;广义上界约束(GUBS)不超过1个;变量上界约束(VUBS)不少于0个。所谓GUBS,是指一组不含有相同变量的约束;所谓VUBS,是指一个蕴涵变量上界的约束,如从约束X1+X2-X3=0可以看出,若X3=0,则X1=0,X2=0(因为有非负限制),因此X1+X2-X3=0是一个VUBS约束。
第五行的意思:只含1个变量的约束个数=0个;冗余的列数=0个
ROWS= 5 VARS= 4 INTEGER VARS= 2( 0 = 0/1) QCP= 4
NONZEROS= 19 CONSTRAINT NONZ= 12