Lingo及优化模型
数学建模——LINDO_LINGO的实用与优化模型

向各工地运送多少吨水泥,使总的吨公里数最小。
决策变量:ci j (料场j到工地i的
运量)~12维
26
mi n
cij [(x j ai )2 ( y j bi )2 ]1/ 2
j 1 i1
2
s.t.
cij di , i 1,..., 6
X1
20.000000
0.000000
X2
30.000000
0.000000
end
ROW SLACK OR SURPLUS DUAL PRICES
三
原料无剩余 2)
0.000000
48.000000
种
时间无剩余 3)
0.000000
2.000000
资 源
加工能力剩余40
4)
40.000000
0.000000
不变!
结果解释
影子价格有意义
RANGES IN WHICH THE BASIS IS UNCHANGED: 时约束右端的允
OBJ COEFFICIENT RANGES
许变化范围
VARIABLE CURRENT ALLOWABLE ALLOWABLE COEF INCREASE DECREASE
(目标函数不变)
例如: “sub x1 10”的作用等价于“x1<=10”
但用“SUB”和“SLB”表示的上下界约束不计入模 型的约束,也不能给出其松紧判断和敏感性分析。
14. “END”后对0-1变量说明:INT n 或 INT name
15. “END”后对整数变量说明:GIN n 或 GIN name
LINGO求解举例 — 例:选址问题
lingo优化模型例题

lingo优化模型例题
例题:假设我们有一个优化模型,我们要最小化一个目标函数
f(x) = 3x^2 - 5x + 2,其中 x 是决策变量。
我们的决策变量 x 的取值范围是 [-10, 10]。
我们要求 x 的取值使得目标函数 f(x) 最小化。
可以使用LINGO 语言来编写这个优化模型,以下是一个例子:```
SETS:
x /-10..10/;
MIN = f(x);
MODEL:
VARIABLE x;
OBJECTIVE = 3 * x^2 - 5 * x + 2;
x >= -10;
x <= 10;
END
```
在这个例子中,我们首先定义了一个集合 x,表示决策变量 x
的取值范围。
然后,我们定义了一个目标函数 MIN,表示要
最小化的目标函数。
在 MODEL 部分,我们定义了一个决策变量 x,并且在OBJECTIVE 部分定义了要最小化的目标函数。
最后,在 x 的
取值范围上添加了约束条件。
LINGO 编程语言可以通过求解器来求解这个优化模型,求解
器可以通过给定的约束条件和目标函数找到使目标函数最小化的决策变量取值。
以上是一个基本的LINGO 优化模型的例子,根据具体的问题,你可以根据需要修改约束条件和目标函数来适应不同的优化问题。
优化模型与LINGO优化软件

m ax z 2 x1 3 x 2 s .t . 2 x1 2 x 2 1 2 4x 16 1 5 x2 15 x1 , x 2 0
状态窗口说明(例1)
•Constraints(约束数量) •Nonzeros(非零系数数量) •内存使用量 •求解花费的时间
全局最优解 求解步骤数
3、报告 窗口说明 (例1)
最优解 变量的检验数 松弛或剩余变量的值 对偶价格的值
单纯形法计算步骤框图(目标函数求max)
至少存在一个元素ais>0
LINGO的窗口介绍
LINGO的主窗口 LINGO模型窗口 LINGO状态窗口 LINGO报告窗口
例1的运算 结果: 主 窗 口 模型窗口 报告窗口 状态窗口
1、主窗口与 模型窗口说明
定 位 某 行
模 型 求 解
模 型 图 示
查 找
匹 配 括 号
显 示 解 答
选 项 设 置
2、状态窗口说明(例1)
③ LINGO中的语句顺序是不重要的,因为LINGO总 是根据“Max=”或“Min=”语句寻找目标函数,其它 语句都是约束条件. ④ LINGO 程序中不区分大小写字母 .( 实际上任何 小写字符将被转换为大写字符) ⑤ LINGO中的变量必须以字母开头,且最多不能超 过32个字符. ⑥ 在LINGO中,以@开头的都是函数的调用. ⑦ LINGO已假定所有变量非负, 可用限定变量取值 范围的函数 @BIN 、 @GIN 、 @FREE 、 @BND 改 变变量的非负假定.
•求解器状态框 •模型的类型 •解的状态 •Objective(解的目标函数值) •Infeasibility(约束不满足总量) •到目前为止的迭代次数 •扩展的求解器状态框
(外校培训课件)优化模型与LINGO软件求解——LINGO学习集全资料文档

NLP: 非线性规划
(2)最优状态 全局全优
(3)最优目标值: 10
约束条件情况最优解: (1)约束总个数X4=100,按方法4 (2)非线性个数X6=50, 按方法6
25
[例1] 下料(截割问题)及求解
❖ [模型-2]的求解结果:
最优目标函 数值:90
x1=40, 按方法1截割 x2=20, 按方法2截割 x6=30. 按方法6截割
26
[例1] 下料(截割问题)及求解
❖ 求解结果分析:
在追求“余料最少”目标时,“≥”约 束把条件放宽了。
修正方法:改为“=”约束
模型(1)的求解结果: 最优目标(余料)=10m
(x4,x6)=(100,50) 耗用原料 = 150根
是否符 合原问 题要求?
不符合。 (1)问题出在哪里? (2)如何修正?
2
一、竞赛题中的优化模型总结
❖ 2.优化类竞赛题小结 ❖ 在全国数模竞赛中,优化问题是出现频率最
高的一类竞赛题。 ❖ 从1992-20××年全国大学生数模竞赛试题
的解题方法统计结果来看,优化模型共出现 了17次以上,占到了50%。 ❖ 即每两道竞赛题中就有一道涉及到利用优化 理论来建模和求解。
3
一、竞赛题中的优化模型总结
题
13
(三) 典型数学规划问题及求解
❖ 例1 下料(截割)问题及求解 ❖ 例2 运输问题及求解 ❖ 例3 非线性规划问题及求解 ❖ 例4 分派(选址)问题及求解 ❖ 例5 动态规划问题及求解
14
[例1] 下料(截割)问题及求解
1. 问题提出 2. 建立数学模型 3. 编写LINGO求解程序 4. 执行程序 5. 获得计算结果并分析 6. 修正模型,重新求解 7.课后作业 8.编程小结
优化模型与Lingo软件

➢该软件包功能强大,版本也很多,而我们 使
用的只是演示版(试用版),演示版与正式版 功能基本上是 类似的,只是能够求解问题的规
s.t. 3x 5y 12 x, y 0
Lingo软件介绍
点击图标
运行,屏幕上显示运行状态窗口如下: 对于Lingo运行状态窗口,
我们给于以下解释:
变量数目:变量总数 (Total)、非线型变量 数(Nonlinear)、整数 变量数(Integer)
约束变量:约束总数 ( Total )、非线性约束 个数(Nonlinear)
量
命令SLB、SUB类似的函数@ SLB、 @ SUB.
定
@BIN(X):限制X为0或1。注意Lindo中的命令是INT,但Lingo中
界
这个函数却不是@INT.
函
@FREE(X) :取消对X的符号限制(即可取负数,0或正数).
数
@GIN(X):限制X为整数.
LINGO中的集
• 对实际问题建模的时候,总会遇到一群或 多群相联系的对象,比如工厂、消费者群 体、交通工具和雇工等等。LINGO允许把 这些相联系的对象聚合成集(sets)。一旦 把对象聚合成集,就可以利用集来最大限 度的发挥LINGO建模语言的优势。
Global Optimum、Local Optimum、Feasible、
State
当前解的状态IInnfteearrsuipbtlee(d(不中可断行))、、uUndnebtoeurmndineedd((无未界确)、
LINGO软件在优化模型中的应用

LINGO软件 ——在优化模型中的应用
腾讯微博:羊羽
LINGO软件在优化模型中的应用
LINGO软件在优化模型中的应用
解:设每天用x1 桶牛奶在甲车间生产,用x2 桶牛 奶在乙车间生产,可获利z 元。
则该问题的数学模型为: max z=72x1+64x2 s.t x1+x2≤50 12x1+8x2≤480 3x1≤100 x1,x2≥0
LINGO软件在优化模型中的应用
结果:
这个线性规划的最优解为x1=20,x2=30,最优值 为z=3360,即用20 桶牛奶在甲车间生产,30 桶 牛奶在乙车间生产,可获最大利润3360 元。
优点
3)强大的求解器 LINGO拥有一整套快速的,内建的求 解器用来求解线性、非线性、二次约束和 整数优化问题。
LINGO软件在优化模型中的应用
优点
4)交互式模型 在LINGO内可以直接创建和求解模型, 也可以从自己编写的应用程序中直接调用 LINGO。对于开发交互式模型,LINGO提 供了一整套建模环境,用来求解和分析构 建的模型。
从该问题的求解我们可以看到用LINGO 软件求 解线性规划是非常方便、快捷的,比单纯形法人 工计算效率高很多。
LINGO软ห้องสมุดไป่ตู้在优化模型中的应用
附加问题:
1) 若用35元可以买到1桶牛奶,应否作这项投资? 若投资,每天最多购买多少桶牛奶? 2) 若可以聘用临时工人以增加劳动时间,付给临 时工人的工资最多是每小时几元? 3) 由于市场需求变化,甲车间奶制品的获利增加 到30元,应否改变生产计划?
Lingo与运筹与优化模型

成员 (A,M,1) (A,M,2) (A,N,1) (A,N,2) (B,M,1) (B,M,2) (B,N,1) (B,N,2)
成员列表被忽略时,派生集成员由父集 成员所有的组合构成,这样的派生集成为稠 密集。如果限制派生集的成员,使它成为父 集成员所有组合构成的集合的一个子集,这 样的派生集成为稀疏集。同原始集一样,派 生集成员的声明也可以放在数据部分。一个 派生集的成员列表有两种方式生成:①显式 罗列;②设臵成员资格过滤器。当采用方式 ①时,必须显式罗列出所有要包含在派生集
个生日属性等等。 Lingo有两种集:原始集和派生集。 原始集由一些最基本的对象组成。 派生集是从其它集派生得来的,它可以 是另一个集的子集,也可以由其它几个集中 的元素组成。也就是说,它的成员来自于其 它已存在的集。
2、模型的集部分 一个典型的 Lingo 程序由 model :开头, 以end结尾,程序由集、目标函数与约束、数 据和初始化四部分组成。其中只有目标函数 与约束部分是必须的,其余三个部分均为可 选部分。 在Lingo模型中使用集之前,必须在集部 分事先定义。集部分以关键字sets:开始,以 endsets 结束。一个模型可以没有集部分、有
地表达规模较大的模型。集是Lingo建模语言 的基础,是程序设计最强有力的基本构件。 下面我们逐步介绍集的相关知识。只有 掌握这些内容后,才能真正掌握利用Lingo描 述数学模型的基本方法。
1、集的基本概念 集其实就是一群相关对象组成的集合, 这些对象也称为集的成员。一个集可能是一 系列产品或雇员等。每个集成员可能有一个 或多个与之有关联的特征,称之为属性。属 性值可以预先给定,也可以是未知的,有待 于Lingo求解。例如,产品集中的每个产品可 以有一个价格属性;雇员集中的每位雇员可 以有一个性别属性、薪水属性,也可以有一
Lingo-中各项的含义

Lingo solution report中各项的含义(一)优化模型的组成优化模型包括以下3部分:l Objective Function:目标函数是一个能准确表达所要优化问题的公式。
l Variables:Decision variables(决策变量),在模型中所使用的变量。
l Constraints:约束条件。
(二)Lingo软件使用的须知(1)LINGO中不区分大小写字母,变量(和行名)可以使用不超过32个字符表示,且必须以字母开头。
(2)在命令方式下(Command Window中),必须先输入MODEL:表示开始输入模型。
LINGO中模型以“MODEL:”开始,以“END”完毕。
对简单的模型,这两个语句也可以省略。
(3)LINGO中的语句的顺序是不重要的,因为LINGO总是根据“MAX=”或“MIN=”语句寻找目标函数,而其它语句都是约束条件(当然注释语句和TITLE 除外)。
(4)LINGO模型是由一系列语句组成,每个语句以分号“;”完毕。
(5)LINGO中以感叹号“!”开始的是说明语句(说明语句也需要以分号“;”完毕)。
(6)LINGO中解优化模型时假定所有变量非负(除非用限定变量函数free 或sub或slb另行说明)。
(三)Solution Report各项的含义例1 将以下模型粘贴到Lingo中求解,其中第一行MODEL和最后一行END在Lingo Model 窗口下可以不要。
MODEL:min = 2*x1 + 3*x2;x1 + x2 >= 350;x1 >= 100;2*x1 + x2 <= 600;END得到如下的结果报告Global optimal solution found.Objective value: 800.0000Infeasibilities: 0.000000 !指矛盾约束的数目;Total solver iterations: 2Model Class: LPTotal variables: 2Nonlinear variables: 0Integer variables: 0Total constraints: 4Nonlinear constraints: 0Total nonzeros: 7Nonlinear nonzeros: 0Variable Value Reduced CostX1 250.0000 0.000000X2 100.0000 0.000000Row Slack or Surplus Dual Price1 800.0000 -1.0000002 0.000000 -4.000000 ! 模型第一行表示目标函数,第二行对应第一个约束;3 150.0000 0.0000004 0.000000 1.000000下面对Solution Report(LINGO的结果报告窗口)的各个部分进行说明:Global optimal solution found 表示全局最优解找到.Objective value: 800.0000 表示最优目标值为800.0000.Total solver iterations: 2 表示用单纯行法进行了两次迭代.Variable 表示变量, 此问题中有两个变量X1, X2.Value 给出最优解中各变量(Variable)的值: X1=250.0000, X2=100.0000.Reduced Cost 实际上是与最优单纯形表中的检验数相差一个负号的一个数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
0.8千克B1
获利44元/千克
至多100公斤A1
制订生产计划,使每天净利润最大
• 30元可增加1桶牛奶,3元可增加1小时时间,应否投 资?现投资150元,可赚回多少? • B1,B2的获利经常有10%的波动,对计划有无影响?
1桶 牛奶 或
12小时
3千克 A1 1千克
获利24元/千克
0.8千克 B1
获利44元/千克
2小时,3元 获利16元/kg 8小时 4千克 A2
1千克
决策 变量 目标 函数 约束 条件
2小时,3元 出售x1 千克 A1, x2 千克 A2, X3千克 B1, x4千克 B2 x5千克 A1加工B1, x6千克 A2加工B2 利润
0.75千克 B2
获利32元/千克
Max z 24 x1 16 x2 44 x3 32 x4 3x5 3x6
10.000000
53.333332 INFINITY
6.666667
80.000000 40.000000
x1系数由24 3=72 增加为303=90, 在允许范围内
• A1获利增加到 30元/千克,应否改变生产计划
不变!
结果解释 影子价格有意义时约束右端的允许变化范围
RANGES IN WHICH THE BASIS IS UNCHANGED: OBJ COEFFICIENT RANGES VARIABLE CURRENT ALLOWABLE ALLOWABLE COEF INCREASE DECREASE X1 X2 ROW 72.000000 24.000000 8.000000
0.000000
DO RANGE (SENSITIVITY) ANALYSIS? No
20桶牛奶生产A1, 30桶生产A2,利润3360元。
模型求解
OBJECTIVE FUNCTION VALUE 1) VARIABLE X1 X2 3360.000 VALUE 20.000000 30.000000 REDUCED COST 0.000000 0.000000
LINDO API: LINDO Application Programming Interface (V2.0)
演示(试用)版、学生版、高级版、超级版、工业版、 扩展版… (求解问题规模和选件不同)
LINDO和LINGO软件能求解的优化模型
优化模型
连续优化
整数规划(IP)
线性规划 (LP)
二次规划 (QP)
ROW SLACK OR SURPLUS DUAL PRICES 2 3 4 0.000000 0.000000 40.000000 48.000000 2.000000 0.000000
reduced cost值表 示当该非基变量 增加一个单位时 (其他非基变量 保持不变)目标 函数减少的量(对 max型问题) 也可理解为: 为了使该非基变 量变成基变量, 目标函数中对应 系数应增加的量
(约束条件不变) x1系数范围(64,96)
64.000000 8.000000 16.000000 x2系数范围(48,72) RIGHTHAND SIDE RANGES CURRENT ALLOWABLE ALLOWABLE RHS INCREASE DECREASE
2
3 4
50.000000
480.000000 100.000000
非线性规划 (NLP) LINGO
LINDO
LINDO/LINGO软件的求解过程
1. 确定常数
2. 识别类型
LINDO/LINGO预处理程序
LP QP NLP IP 全局优化(选) 分枝定界管理程序
ILP
线性优化求解程序 1. 单纯形算法 2. 内点算法(选)
IQP
INLP
非线性优化求解程序 1、顺序线性规划法(SLP) 2、广义既约梯度法(GRG) (选) 3、多点搜索(Multistart) (选)
1) 3360.000
最优解下“资源”增 VARIABLE VALUE 加1单位时“效益”的 X1 20.000000 增量 X2 30.000000 影子价格
原料增1单位, 利润增48 时间加1单位, 利润增2 能力增减不影响利润
2)
3) 4)
REDUCED COST
0.000000
0.000000
53.333332 INFINITY
6.666667
80.000000 40.000000
原料最多增加10
时间最多增加53
• 35元可买到1桶牛奶,每天最多买多少? 最多买10桶!
例2 奶制品的生产销售计划 在例1基础上深加工
1桶 牛奶 或 3千克A1 12小时 1千克 获利24元/公斤
2小时,3元 获利16元/公斤 8小时 4公斤A2 1千克 获利32元/千克 0.75千克B2 50桶牛奶, 480小时 2小时,3元
优化模型与LINDO/LINGO优化软件
简要提纲
• LINDO公司的主要软件产品及功能简介
• LINDO软件的使用简介 • LINGO软件的使用简介 • 建模与求解实例(结合软件使用)
LINDO 公司软件产品简要介绍
美国芝加哥(Chicago)大学的Linus Schrage教授于1980 年前后开发, 后来成立 LINDO系统公司(LINDO Systems Inc.), 网址:
1桶 牛奶 或
12小时
3公斤A1 4公斤A2
获利24元/公斤 获利16元/公斤
8小时 每天 50桶牛奶 时间480小时 至多加工100公斤A1 决策变量 x1桶牛奶生产A1 x2桶牛奶生产A2
目标函数
获利 24×3x1 获利 16×4 x2 每天获利 Max z 72 x1 64 x2 原料供应
3*x1<=100;
ROW SLACK OR SURPLUS
原料无剩余 三 2 0.000000 48.000000 种 时间无剩余 3 0.000000 2.000000 资 加工能力剩余40 4 40.000000 0.000000 源 ―资源” 剩余为零的约束为紧约束(有效约束)
结果解释
OBJECTIVE FUNCTION VALUE
(目标函数不变)
64.000000 8.000000 16.000000 RIGHTHAND SIDE RANGES CURRENT ALLOWABLE ALLOWABLE RHS INCREASE DECREASE
2
3 4
50.000000
480.000000 100.000000
10.000000
1桶 牛奶 或 12小时 8小时 每天: 50桶牛奶 3公斤A1 获利24元/公斤
4公斤A2
获利16元/公斤
时间480小时 至多加工100公斤A1
制订生产计划,使每天获利最大 • 35元可买到1桶牛奶,买吗?若买,每天最多买多少? • 可聘用临时工人,付出的工资最多是每小时几元? • A1的获利增加到 30元/公斤,应否改变生产计划?
5、模型中使用的参数数量级要适当 (如小于103)
需要掌握的几个重要方面
1、LINDO:
正确阅读求解报告(尤其要掌握敏感性分析)
2、LINGO: 掌握集合(SETS)的应用; 正确阅读求解报告; 正确理解求解状态窗口; 学会设置基本的求解选项(OPTIONS) ; 掌握与外部文件的基本接口方法
例1 加工奶制品的生产计划
ROW SLACK OR SURPLUS DUAL PRICES
0.000000
0.000000 40.000000
48.000000
2.000000 0.000000
• 35元可买到1桶牛奶,要买吗? 35 <48, 应该买! • 聘用临时工人付出的工资最多每小时几元? 2元!
最优解不变时目标函 RANGES IN WHICH THE BASIS IS UNCHANGED: 数系数允许变化范围 Yes
1)
VARIABLE X1
3360.000
VALUE 20.000000 REDห้องสมุดไป่ตู้CED COST 0.000000
X2
30.000000
0.000000
ROW SLACK OR SURPLUS DUAL PRICES 2 0.000000 48.000000
3
4
0.000000
40.000000
2.000000
x1 x2 50
12 x1 8 x2 480
约束条件
劳动时间 加工能力 非负约束
3x1 100 x1 , x2 0
线性 规划 模型 (LP)
模型求解
OBJECTIVE FUNCTION VALUE
Max=72*x1+64*x2;
x1+x2<=50;
12*x1+8*x2<=480; 3*x1<=100;
结果解释
Max=72*x1+64*x2;
x1+x2<=50; 12*x1+8*x2<=480;
OBJECTIVE FUNCTION VALUE 1) VARIABLE X1 X2 3360.000 VALUE 20.000000 30.000000 REDUCED COST 0.000000 0.000000 DUAL PRICES
建模时需要注意的几个基本问题
1、尽量使用实数优化,减少整数约束和整数变量
2、尽量使用光滑优化,减少非光滑约束的个数
如:尽量少使用绝对值、符号函数、多个变量求 最大/最小值、四舍五入、取整函数等 3、尽量使用线性模型,减少非线性约束和非线性变 量的个数 (如x/y <5 改为x<5y)