数学建模软件LinDoLinGo的简介(修改版)
合集下载
LINDO与LINGO软件介绍

15
查看模型的统计信息, 用Reports/statistics查看模型的统计信息, 查看模型的统计信息
第一行:模型有 行 约束4行),2个变量 个变量, 个整数变量 个整数变量( 个 变量 变量), 第一行:模型有5行(约束 行), 个变量,0个整数变量(0个0-1变量), 不是二次规划. 不是二次规划 第二行:非零系数10个 约束中非零系数6个 其中 个为1或 , 其中5个为 第二行:非零系数 个,约束中非零系数 个(其中 个为 或-1),模型密度 密度=非零系数 行数* 变量数+ 为0.667(密度 非零系数 行数*(变量数+1)]) . 密度 非零系数/[行数 变量数 第三行的意思:按绝对值看,系数最小、最大分别为1和 第三行的意思:按绝对值看,系数最小、最大分别为 和8. 第四行的意思:模型目标为极大化;小于等于、等于、 第四行的意思:模型目标为极大化;小于等于、等于、大于等于约束分别有 广义上界约束(GUBS)不超过 个;变量上界约束 不超过2个 变量上界约束(VUBS)不 2、0、2个;广义上界约束 不超过 不 少于0 所谓GUBS,是指一组不含有相同变量的约束;所谓 少于0个。所谓 ,是指一组不含有相同变量的约束;所谓VUBS,是 , 指一个蕴涵变量上界的约束,如从约束X1+X2-X3=0可以看出,若X3=0,则 可以看出, 指一个蕴涵变量上界的约束,如从约束 可以看出 , X1=0,X2=0(因为有非负限制),因此 ),因此 是一个VUBS约束。 约束。 , (因为有非负限制),因此X1+X2-X3=0是一个 是一个 约束 第五行的意思:只含1个变量的约束个数=0 冗余的列数=0 第五行的意思:只含1个变量的约束个数 0个;冗余的列数 0个
版本信息,可以通过 查询.我们还 版本信息,可以通过help/about查询 我们还 查询 可以查到允许的变量个数、约束个数、 可以查到允许的变量个数、约束个数、整数 变量个数、非零系数个数等. 变量个数、非零系数个数等
查看模型的统计信息, 用Reports/statistics查看模型的统计信息, 查看模型的统计信息
第一行:模型有 行 约束4行),2个变量 个变量, 个整数变量 个整数变量( 个 变量 变量), 第一行:模型有5行(约束 行), 个变量,0个整数变量(0个0-1变量), 不是二次规划. 不是二次规划 第二行:非零系数10个 约束中非零系数6个 其中 个为1或 , 其中5个为 第二行:非零系数 个,约束中非零系数 个(其中 个为 或-1),模型密度 密度=非零系数 行数* 变量数+ 为0.667(密度 非零系数 行数*(变量数+1)]) . 密度 非零系数/[行数 变量数 第三行的意思:按绝对值看,系数最小、最大分别为1和 第三行的意思:按绝对值看,系数最小、最大分别为 和8. 第四行的意思:模型目标为极大化;小于等于、等于、 第四行的意思:模型目标为极大化;小于等于、等于、大于等于约束分别有 广义上界约束(GUBS)不超过 个;变量上界约束 不超过2个 变量上界约束(VUBS)不 2、0、2个;广义上界约束 不超过 不 少于0 所谓GUBS,是指一组不含有相同变量的约束;所谓 少于0个。所谓 ,是指一组不含有相同变量的约束;所谓VUBS,是 , 指一个蕴涵变量上界的约束,如从约束X1+X2-X3=0可以看出,若X3=0,则 可以看出, 指一个蕴涵变量上界的约束,如从约束 可以看出 , X1=0,X2=0(因为有非负限制),因此 ),因此 是一个VUBS约束。 约束。 , (因为有非负限制),因此X1+X2-X3=0是一个 是一个 约束 第五行的意思:只含1个变量的约束个数=0 冗余的列数=0 第五行的意思:只含1个变量的约束个数 0个;冗余的列数 0个
版本信息,可以通过 查询.我们还 版本信息,可以通过help/about查询 我们还 查询 可以查到允许的变量个数、约束个数、 可以查到允许的变量个数、约束个数、整数 变量个数、非零系数个数等. 变量个数、非零系数个数等
Lingo简介

6. “ltx”:Lindo格式的模型文件;
7. “mps”:MPS(数学规划系统) Lingo软件模型一般由5部分组成: 1. 集合段(SETS):“SETS:”开始,“ENDSETS”结束; 2. 目标与约束段; 3. 数据段(DATA):“DATA:”开始,“ENDDATA”结束; 4. 初始化段(INIT):“INIT:”开始,“ENDINIT”结束;
无限
800 3200
无限
4000 16000
无限
Lindo/Lingo 软件简介
Lindo是英文Linear INteractive and Discrete Optimizer 字母的缩写,可求解线性规划(LP)和二次规划(QP)。
Lingo是英文Linear INteractive and General Optimizer 字母的缩写,除了具有Lindo所有功能之外,还可以用于求 解非线性规划(NLP),也可用于一些线性和非线性方程 的求解等。
Lindo/Lingo 软件简介
Lindo/Lingo内部求解器: 1. 直接求解程序(Direct Solver)
2. 线性优化求解程序(Linear Solver)
3. 非线性优化求解程序(Nonlinear Solver) 4. 分支定界管理程序(Branch and Bound Manager)
Lindo/Lingo 软件简介
美国芝加哥大学 Linus Schrage 教授于1980年前后开发 的一套专门用于求解最优化问题的软件包。 软件包括:Lindo、Lingo、Lindo API以及What’sBest! 这四款软件分为演示版(试用版)和正式版,两者的区别 在于求解问题的规模不同。正式版又可以分为求解包 (Solver Suite)、高级版(Super)、超级版(Hyper)、 工业版(Industrial)、扩展版(Extended)。
优化建模入门与LINGOLINDO简介

优化建模
整数规划问题对应的松弛问题
取消整数规划中决策变量为整数的限制(松弛),对 应的连续优化问题称为原问题的松弛问题 整数规划问题 最优解
最优解 凸多边形的某个顶点
求解LP的基本思想
凸多面体的某个顶点
思路:从可行域的某一顶点开始,只需在有限多个 顶点中一个一个找下去,一定能得到最优解。
LP的通常解法是单纯形法(G. B. Dantzig, 1947)
优化建模
LP其他算法
内点算法(Interior point method)
• 20世纪80年代人们提出的一类新的算法——内点算法 • 也是迭代法,但不再从可行域的一个顶点转换到另一个 顶点,而是直接从可行域的内部逼近最优解。
f ( x)
优化建模
s.t.
hi ( x) 0, i 1,...,m g j ( x) 0, j 1,...,l
整数规划问题的分类
• 整数线性规划(ILP) 目标和约束均为线性函数 • 整数非线性规划(NLP) 目标或约束中存在非线性函数 • 纯(全)整数规划(PIP) 决策变量均为整数 • 混合整数规划(MIP) 决策变量有整数,也有实数 • 0-1规划 决策变量只取0或1
决策变量:周一至周日每天(新)聘用人数 x1, x2,x7 目标函数:7天(新)聘用人数之和 约束条件:周一至周日每天需要人数
设系统已进入稳态(不是开始的几周) 连续工作5天 周一工作的应是(上)周四至周一聘用的 x4 x5 x6 x7 x1 50
min s.t. z x1 x2 x3 x4 x5 x6 x7 x1 x4 x5 x6 x7 50
优化建模
优化问题的一般形式
优化问题三要素:决策变量;目标函数;约束条件 目标函数 约 束 条 件
运筹学软件(LINGO)简介

目标与约束段
对于产品数量的平衡方程而言, 由于下标I=1时的约束关系 与I=2,3,4时有所区别(因为定义的变量INV是不包含INV(0)), 因 此把I=1的约束关系单独写出“INV(1)=10+RP(1)+OP(1)-DEM(1);”, 而对I=2,3,4对应的约束, 增加了一个逻辑表达式来刻划: @FOR(QUARTERS(I)|I#GT#1: INV(I)=INV(I-1)+RP(I)+OP(I)-DEM(I););
② 变量定界函数 @GIN(X): @BIN(X): @FREE(X): 限制X为整数. 限制X为0或1. 取消对X的符号限制.
@BND(L,X,U): 限制 L ≤ X ≤ U .
注: 有关其它函数的介绍, 请参考LINGO的帮助文件.
4、运算符说明 ① 运算符 算数运算符: +(加法), -(减法或负号), *(乘法), /(除法), ^(求幂). 关系运算符: <(即<=,小于等于), >(即>=,大于等于). 注:优化模型中的约束一般没有严格小于、严格大于关系. =(等于),
逻辑运算符: #AND#(与), #EQ#(等于), #OR#(或), #NE#(不等于), #NOT#(非); #GT#(大于).
#GE#(大于等于), #LT#(小于),#LE#(小于等于).
注: 逻辑运算的结果为“真”(TRUE)和“假”(FALSE), LINGO 中用数字1代表TRUE, 其它值都是FALSE.
2、状态窗口说明(例1)
Variables(变量数量) Total(变量总数) Nonlinear(非线性变量) Integer(整数数量)
注:由于LINGO对中文操作系 统的兼容性不好, 所以有些 显示字符和单词被截掉了.
lindo与lingo软件简介

Reduced Cost 0.8823973E-07 0.000000
Slack or Surplus Dual Price -7.161290 -1.000000 0.9677434E-01 0.000000 0.000000 -1.032258
2007-4-16 21
例 8
max f 98 x1 277 x2 x 0.3 x1 x2 2 x
2 1 2 2 2 3
model: min=-3*x1^2-x2^2-2*x3^2; x1^2+x2^2+x3^2-3=0; -x1+x2>=0; end
lifengbing 2007-4-16 18
运行结果如下:
Local optimal solution found at iteration: 37 Objective value: -6.000000
演示
Variable Value X1 0.9999995 X2 0.9999992
Reduced Cost 0.000000 0.000000
Row Slack or Surplus Dual Price 1 -1.000000 -1.000000
lifengbing
2007-4-16
15
例 5
2 1
2 2
x1 x2 100 x1 2 x2 x , x Z 1 2
model: max=98*x1+277*x2-x1^2-0.3*x1*x2-2*x2^2; x1+x2<100; x1<2*x2; @gin(x1); @gin(x2); end
lifengbing 2007-4-16 22
数学建模Lingo软件简介

版本类型 总变量数 整数变量数 非线性变量数 约束数
演示版 求解包 高级版 超级版 工业版 扩展版
300 500 2000 8000 32000 无限
30 50 200 800 3200 无限
30 50 200 800 3200 无限
150 250 1000 4000 16000 无限
Lingo(Linear Interactive and General Optimizer),即交互 式的线性和通用优化求解器,可求解线性规划,也可以求解非 线性规划,还可以用于一些线性和非线性方程组的求解等。 Lingo软件的最大特),而且执行速度很快。Lingo实际上还是最 优化问题的一种建模语言,包括许多常用的数学函数共建立优 化模型时调用,并可以接受其它数据文件。
2. 建立LINDO/LINGO优化模型需要注意的几个基本问题
1. 尽量使用实数优化模型,尽量减少证书约束和整数变 量的个数;
2. 尽量使用光滑优化模型,尽量避免使用非光滑函数; 3. 尽量使用线性优化模型,尽量减少非线性约束和非线 性变量的个数; 4. 合理设定变量的上下界,尽可能给出变量的初始值; 5. 模型中使用的单位的数量级要适当。
演示版和正式版的基本功能是类似的,只是试用版能够
求解问题的规模受到严格限制,对于规模稍微大些的问题就不 能求解。即使对于正式版,通常也被分成求解包(solver suite)、 高级版(super)、超级版(hyper)、工业版(industrial)、扩展版 (extended)等不同档次的版本,不同档次的版本的区别也在于 能够求解的问题的规模大小不同,下表给出了不同版本 LINGO程序对求解规模的限制:
LINDO,LINGO,LINDO API 和 What’s Best! 在最优化软件的市场上占有很大的份额,尤其在供微机上使用 的最优化软件的市场上,上述软件产品具有绝对的优势。根据 LINDO公司主页()上提供的信息,位列 全球《财富》杂志500强的企业中一半以上使用上述产品,其 中位列全球《财富》杂志25强企业中有23家使用上述产品。读 者可以从上述主页下载上面4种软件的演示版和大量应用例子。
4-1 LINGO软件简介

选项卡—— 通用求解器
对偶计算内容: 对偶价格及敏 感性分析
选项卡—— 线性求解器
求解时的算法: 自动选择算法 原始单纯形法 对偶单纯形法 内点法
1.3 建立线性优化模型
优化问题题
max Z = 140X 1 + 100X 2 0.9 X 1 + 0.5 X 2 632.5 X 1 + X 2 1000 X1 , X 2 0
Reduced Cost
基变量的reduce cost 值应为0,对于非基 变量Xj相应的reduce cost值表示Xj增加一 个单位(此时假定其他非基变量保持不变) 时目标函数减小的量(max 型问题)。 Rreduce Cost 值为0时,表示微小扰动不
影响目标函数。
Dual Price
8.0试用版,最多可求解包括300个变量 和150个约束的线性规划问题。 目前LINGO的较新版本为9.0(2005)
LINGO 的求解机制与结果类型
求解机制: LINGO 的求解线性规划问题采用单纯形法 或内点法 结果类型 不可行(No feasible solution) 可行(Feasible) 有最优解(Optimal Solution) 解无界(Unbounded Solution)
灵敏度分析的内容: 目标函数系数在什么范围变化时(此时假 定其它系数保持不变),最优解不变化 约束右端项在什么范围变化时(此时假定 其它系数保持不变),对应项约束的对偶 价格(边际值)不变。 对偶问题
Min W 632.5Y 1 1000Y 2 0.9Y 1 1.0Y 2 140 0.5Y 1 1.0Y 2 100 Y1 , Y 2 0
对本例而言: (约束1)在500~900范围内变化时,对 偶价格(边际值)不变=100 (约束2)在702.8 ~1265范围内变化时, (边际值)不变=50
LINGO软件介绍

例:邮局一周中每天需要不同数目的雇员,设周一 至少20人,周二至少16人,13,16,19,14,12人,又 规定应聘者需连续工作5天,问邮局每天聘多少雇 员才能既满足需求,又使聘用总人数最少。 min =s1+s2+s3+s4+s5+s6+s7; s1+s4+s5+s6+s7>=20; !周1雇员数; s1+s2+s5+s6+s7>=16; !周2雇员数; s1+s2+s3+s6+s7>=13; !周3雇员数; s1+s2+s3+s4+s7>=16; !周4雇员数; s1+s2+s3+s4+s5>=19; !周5雇员数; s2+s3+s4+s5+s6>=14; !周6雇员数; s3+s4+s5+s6+s7>=12; !周7雇员数;
五个基本的组成部分: 1.变量定义; 2.数据输入; 3.目标函数; 4.约束; 5.变量取值范围。
结束。 (1) 每条语句后必须使用分号“;”结束。问题 ) 每条语句后必须使用分号“ 模型必须由MODEL命令开始,END结束。 命令开始, 结束。 模型必须由 命令开始 结束 命令来作为输入问题模型的开始, (2) 用MODEL命令来作为输入问题模型的开始, ) 命令来作为输入问题模型的开始 格式为MODEL:statement (语句)。 语句)。 格式为 : (3) 目标函数必须由“min =”或“max =”开头。 开头。 ) 目标函数必须由“ 或 开头 (4) 数字与变量之间 变量与变量之间要使用运 ) 数字与变量之间,变量与变量之间要使用运 算符。 如 号等 号等) 算符。(如*号等
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
优化模型的基本类型
若x的一个或多个分量只取离散数值,则优 化模型称为离散优化,或称为组合优化。 如果x的一个或多个分量只取整数数值,称 为整数规划,并可以进一步明确地分为纯 整数规划(x的所有分量只取整数数值)和 混合整数规划(x的部分分量只取整数数 值)。特别地,若x的分量中取整数数值的 范围还限定为只取0或1,则称0-1规划。 此外,整数规划也可以分成整数线性规划 和整数非线性规划。
LINDO/LINGO软件 使用简介
LinDo/LinGo简介
LINDO(Linear Interactive and Discrete Optimizer),即“交互式的线性和离散优化求解 器”,可以用来求解线性规划(LP)和二次规划 (QP);
LINGO(Linear Interactive and General Optimizer),即“交互式的线性和通用优化求解 器”,除了用来求解线性规划(LP)、二次规划 (QP)和非线性规划,还可用于线性和非线性方程 组的求解。
最大的特色:允许决策变量是整数(即整数规划,包 括0-1规划)。
优化建模的一般形式
优化模型是一种特殊的数学模型,优化建 模方法是一种特殊的数学建模方法。
优化模型一般有以下三个要素: 1)决策变量 2)目标函数 3)约束条件
优化建模的一般形式
优化模型从数学上可表述成如下一般形式:
opt z f (x)
连续优化
优化
整数规划
线性规划
二次规划
非线性规划
问题求解的难度增加
优化模型的简单分类和求解难度
简单例子
max
z 2x 3y;
s.t.
4x 3y 10; 3x 5y 12; x, y 0.
返回
LINDO程序
Lindo输入格式注意事项
1、Lindo中的变量名由字母和数字组成, 但必须以字母开头,且长度不能超过8个字 符。Lindo中不区分大小写字母,包括 lindo中本身的关键字(如MAX、MIN等) 也不区分大小写。
1
s.t. hi (x) 0 (i 1,2,, me )
2
g j (x) 0 ( j me 1, me 2,, me m) 3
注意:opt是最优化(optimize)的意思,可以是
min(求极小)或max(求极大)两者之一;s.t.
是“受约束于”(subject to)的意思。
优化模型的基本类型
简单例子程序运行状态窗口
求解器运行状态窗口显示的相应信息及其含义
名称
含义
Status(当前状态)
显示当前求解状态:“optimal”表示以及达到最优解:其他可能的 显示还有三个:feasible,Infeasible,Unbounded.
Iterations(迭代次数)
Objective(当前的目标值)
Lindo输入格式注意事项
3、在Lindo模型的任何地方都可以用 “title”语句对输入的模型命名,用法是在 title后面写出其名字(最多72个字符,可 以有汉字),在程序中单独占一行。请看 下面两个例子:
title Example Model for chapter 2 title 第二章的第一个例子
“END”语句后面用命令“free”(设定自由变量) 取消变量的非负假定。其用法是“free”后面跟变量 名。
Lindo输入格式注意事项
8、可以在模型的“END”语句后面用命令“SUB” (即设置上界(set upper bound)的英文缩写) 设定变量的上界,用命令“SLB”(即设置下届 (set lower bound)的英文缩写)设定变量的 下界。如: sub x1 10 !作用等价于“x1<=10” slb x2 20 !作用等价于“x2>=20” 但用”SUB“和”SLB“表示的上下界约束不计入 模型的约束,因此Lindo也不能给出其松紧判断 和敏感Lindo中变量不能出现在一个约束条件的右端 (即约束条件右端只能是常数);变量与其系数间 可以有空格(甚至回车),但不能有任何运算符号 (包括乘号“*”等);
5、Lindo中不能接受括号“()”和逗号“、”等任 何符号(除非在注释语句中);
6、Lindo中表达式应当已经经过化简; 7、Lindo中已假设所有变量非负。可在模型的
当模型中决策变量x的所有分量取值均为连 续数值(即实数)时,优化模型称为连续 优化,即数学规划。此时,若f、hi、gj都 是线性函数,称为线性规划;若f、hi、gj 至少有一个是非线性函数,则称为非线性 规划。特别地,若f是一个二次函数,而hi、 gj都是线性函数,则称为二次规划,它是一 种相对比较简单的非线性规划。
Lindo输入格式注意事项
2、Lindo中对优化模型的目标和约束用行号 (行名)进行标识,这些表示会在将来的求 解报告中用到。用户没有指定行号(行名) 时,系统将自动产生行号,行号或行名总是 以“)”结束,放在相应的约束之前;行号或 行名可以和变量名一样命名,也可以只用数 字命名,但长度同样不能超过8个字符。为了 方便将来阅读求解结果报告,建议用户总是 自觉地对每个约束进行命名。行名中甚至可 以含有中文字符,但行名结束标志字符,即 右括号“)”必须是英文字符,否则会出现错 误。
Lindo输入格式注意事项
9、数值均衡化及其他考虑:如果约束系数 矩阵中各非零元的绝对值的数量级差别很 大(相差1000倍以上),则称其为数值不 均衡的。为了避免数值不均衡引起的计算 问题,使用者应尽可能自己对矩阵的行列 进行均衡化。
10、简单错误的检查和避免
“END”后的一些表述
FREE X——表示变量X可取任意实数值。 GIN X——表示变量X只取非负整数值。 INT X——表示变量X只能取0或1。 SLB X value——表示变量X以value为下界。 SUB X value——表示变量X以value为上界。 FREE m——表示问题的前m个变量为自由变量 GIN m——表示问题前m个变量为非负整数值 INT m——表示问题前m个变量为0-1变量。