lingo讲座
s.t
3x1 2x2
x1
,
x2
,
x3
,
6x3 10x4 x4 0或1
10
4、非线性规划
min z |x1 | 2 | x2 | 3 | x3 | 4 | x4 |
x1
x2
x3
x4
0
s.t.x1 x2 x3 3x4 1
x1
x2
2x3
3x4
1 2
5、背包问题
一个旅行者的背包最多只能装 6kg 物品,现有4 件物品的重量和价值分别为 2 kg,3kg,3 kg, 4 kg;1 万元,1.2 万元,0.9 万元,1.1 万元。 问应怎样携带那些物品使得携带物品的价值最大?
LINGO的基本用法的几点注意事项
•语句是组成LINGO模型的基本单位,每个语句都 以分号“;”结尾,编写程序时应注意模型的可读 性。例如:一行只写一个语句,按照语句之间的嵌套
关系对语句安排适当的缩进,增强层次感。
•以感叹号“!”开始的是说明语句(说明语句也 需要以分号结束)。
Lingo简单引例
1、简单线性规划求解
一个简单的LINGO程序
LINGO的基本用法的几点注意事项
•LINGO中不区分大小写字母;变量和行名可以 超过8个字符,但不能超过32个字符,且必须以 字母开头。
•用LINGO解优化模型时已假定所有变量非负(除 非用限定变量取值范围的函数@free或@sub或 @slb另行说明)。
一个简单的LINGO程序
数学规划
g j (x) 0, j 1,...,l x D n
连 • 线性规划(LP) 目标和约束均为线性函数
续 优
• 非线性规划(NLP) 目标或约束中存在非线性函数
化 ✓ 二次规划(QP) 目标为二次函数、约束为线性
• 整数规划(IP) 决策变量(全部或部分)为整数
离 散
✓ 整数线性规划(ILP),整数非线性规划(INLP)
LINGO的界面
• LINGO软件的主窗口(用 户界面),所有其他窗口 都在这个窗口之内。
• 状态行(最左边显 示“Ready”,表示
“准备就绪”)
• 当前光标 的位置
• 模型窗口(Model Window),用于输入 LINGO优化模型(即 LINGO程序)。
• 当前时间
LINGO的文件类型
•.LG4:LINGO格式的模型文件,保存了模型窗口中所 能够看到的所有文本和其他对象及其格式信息;
max z 4x1 3x2
2x1 x2 10
S.T
x1 x2
x2 7
8
x1, x2 0
决策变量 x1, x2
2、整数规划
m ax z 40x1 90x2
9x1 7x2 56
S.T.7x1 20x2 70
x1
,
x2
0并且为整数
3、0/1规划求解
m ax f x12 0.4x2 0.8x3 1.5x4
目前为止的 迭代次数
当前约束不满足的总量(不是不 满足的约束的个数):实数(即使 该值=0,当前解也可能不可行, 因为这个量中没有考虑用上下界 命令形式给出的约束)
• 运行状态窗口
使用的特殊求解程序 : B-and-B (分枝定界算法) Global (全局最优求解程序) Multistart(用多个初始点求解的程序)
第一次运行时提示输入授权密码,如图:
LINGO软件的主要特色
两种命令模式 Windows模式: 通过下拉式菜单命令驱动LINGO运 行(多数菜单命令有快捷键,常用的菜单命令有快捷 按钮),图形界面,使用方便; (这里主要介绍这种模式)
命令行 模式:仅在命令窗口(Command Window)下操 作,通过输入行命令驱动LINGO运行 。
局部最优解与整体最优解
f(x)
* x1
ox2 x
• 局部最优解 (Local Optimal Solution, 如 x1 ) • 整体最优解 (Global Optimal Solution, 如 x2 )
优化模型的
min f (x)
简单分类
s.t. hi (x) 0, i 1,...,m
(6)能方便地与Excel、数据库等其他软件 交换数据。
优化模型和算法的重要意义
最优化: 在一定条件下,寻求使目标最大(小)的决策 最优化是工程技术、经济管理、科学研究、社 会生活中经常遇到的问题, 如:
结构设计 资源分配 生产计划 运输方案
解决优化问题的手段 • 经验积累,主观判断 • 作试验,比优劣 • 建立数学模型,求解最优策略
物品(j)
1
重量(kg)
2
价值(万元)
1
2
3
4
3
3
4
1.2
0.9
1.1
5、背包问题
x 建模:记 j 为旅行者携带第j 件物品的件数, 取
值只能为 0 或 1。 求目标函数的最大值:
f x1 1.2x2 0.9x3 1.1x4
约束条件:
2x1 3x2 3x3 4x4 6
用Lingo 软件求解0-1 规划
优 ✓ 纯整数规划(PIP), 混合整数规划(MIP)
化 ✓ 一般整数规划,0-1(整数)规划
优化模型的简单分类和求解难度
优化
连续优化
整数规划
线性规划
二次规划
非线性规划
问题求解的难度增加
Lingo软件基本认识
LINGO软件的安装
安装过程: 与LINDO for Windows类似.
安装文件20M多一点,需要接受安装协议、选择安装 目录(缺省C:\LINGO9)。 安装完成前,在出现的对话框(如图)中选择缺省的建 模(即编程)语言,系统推荐的是采用LINGO。安装后 可通过“LINGO|Options|File Format”命令修改缺省 的建模(即编程)语言。
•.MPS:示MPS(数学规划系统)格式的模型文件。
在LINGO中使用LINDO模型
在LINGO中可以直接使用LINDO语法编写的优化模型(即优化程序)。
① 选择菜单命令 “File|Open(F3)”, 可以看到 “打开文 件”对话框。 (如 图)
• 运行状态窗口
Variables(变量数量): 变量总数(Total)、 非线性变量数(Nonlinear)、 整数变量数(Integer)。
优化建模与Lingo 快速入门
培训内容
1、Lingo 概况及优化模型认识 2、 Lingo软件基本认识 3、 Lingo简单引例 4、Lingo集合、运算符和函数 5、 Lingo建模简例
1、Lingo概况
Lingo 使 美 国 Lindo 系 统 公 司 ( Lindo System Inc)开发的求解数学规划系列 软件中的一个(其他软件为Lindo,GINO, What is Best等),它的主要功能是求解 大型线性、非线性和整数规划问题,目 前的版本常用是9.0版、11.0版、12.0版。
•限定变量取整数值的语句为“@GIN(X1)”和 “@GIN(X2)”。不可以写成“@GIN(2)”,否则LINGO 将把这个模型看成没有整数变量。
程序语句输入的备注:
•LINGO中函数一律需要以“@”开头
①整型变量函数@GIN ②上下界限定函数(@FREE、@SUB、@SLB) ③0-1变量函数是@BIN
扩展 的求 解器 (求解 程序) 状态 框
目前为止找到的可行 解的最佳目标函数值
有效步数
目标函数值的界
特殊求解程序当前运行步数: 分枝数(对B-and-B程序); 子问题数(对Global程序); 初始点数(对Multistart程序)
• 运行状态窗口
注:凡是可以从一个约束直接解出变量取值时,这个 变量就不认为是决策变量而是固定变量,不列入统计 中;只含有固定变量的约束也不列入约束统计中。
•.LNG:文本格式的模型文件,不保存模型中的格式信 息(如字体、颜色、嵌入对象等);
•.LDT:LINGO数据文件; •.LTF:LINGO命令脚本文件; •.LGR:LINGO报告文件; •.LTX: LINDO格式的模型文件;
除“LG4”文件外, 另外几种格式的文件 都是普通的文本文件, 可以用任何文本编辑 器打开和编辑。
Constraints(约束数量): 约束总数(Total)、 非线性约束个数(Nonlinear)。
Nonzeros(非零系数数量): 总数(Total)、 非线性项系数个数(Nonlinear)。
Generator Memory Used (K) (内存使用 量)
• Elapsed Runtime (hh:mm:ss) (求解花费的时间)
一个简单的LINGO程序
例 直接用LINGO来解如下二次规划问题:
Max 98x1 277x2 x12 0.3x1x2 2x22 1
s.t. x1 x2 100
2
x1 2x2
3
x1, x2 0 为整数
4
输入窗口如下:
程序语句输入的备注:
•LINGO总是根据“MAX=”或“MIN=”寻找目标函数, 而除注释语句和TITLE(标题)语句外的其他语句都是 约束条件,因此语句的顺序并不重要 。
•Lingo 中“<”代表“<=”,“>”代表“>=”
输出结果: 运行菜单命令“LINGO|Solve”
最大利润=11077.5
最优整数解 X=(35,65)
输出结果备注:
LINGO是将它作为PINLP(纯整数非线性规划)来求解, 因此找到的是局部最优解。
通过菜单 “WINDOW| Status Window”看到状态窗 口,可看到最佳目标值 “Best Obj”与问题的上界 “Obj Bound”已经是一样的, 当前解的最大利润与这两个 值非常接近,是计算误差引 起的。如果采用全局最优求 解程序(后面介绍),可以验 证它就是全局最优解。