LINGO软件简介
常用优化软件1. LINDO/LINGO软件 2. MATLAB优化工具箱 / Mathematic的优化功能
3. SAS(统计分析)软件的优化功能4. EXCEL软件的优化功能
MATLAB优化工具箱能求解的优化模型优化工具箱3.0 (MATLAB 7.0 R14) 连续优化 无约束优化 非线性 极小 fminunc 非光滑(不可 微)优化 fminsearch 全局 优化 离散优化 纯0-1规划 bintprog 一般IP(暂缺)
约束优化线性规划 linprog 二次规划 quadprog
非线性 非线性 方程 ( 组 ) 最小二乘 fzero fsolve lsqnonlin lsqcurvefit
暂缺
非线性规划 fmincon fminimax fgoalattain fseminf
约束线性 最小二乘 lsqnonneg lsqlin
上下界约束 fminbnd fmincon lsqnonlin lsqcurvefit
LINDO 公司软件产品简要介绍美国芝加哥(Chicago)大学的Linus Schrage教授于1980 年前后开发, 后来成立 LINDO系统公司(LINDO Systems Inc.), 网址:LINDO: Linear INteractive and Discrete Optimizer (V6.1)
LINDO API: LINDO Application Programming Interface (V4.1)LINGO: Linear INteractive General Optimizer What’s Best!: (SpreadSheet e.g. EXCEL) (V10.0) (V8.0)
演示(试用)版、高级版、超级版、工业版、扩展版… (求解问题规模和选件不同)
LINDO/LINGO软件能求解的模型优化
连续优化
整数规划
线性规划
二次规划LINDO
非线性规划
LINGO
LINGO软件的功能与特点LINGO模型的优点 集成了线性(非线性) / 连续(整数) 优化功能 具有多点搜索 / 全局优化功能 提供了灵活的编程语言(矩阵生成器),可方便地输 入模型 提供与其他数据文件的接口 提供与其他编程语言的接口 LINDO API 可用于自主开发 运行速度较快
LINGO软件的求解过程1. 确定常数2. 识别类型
LINGO预处理程序LP QP NLP IP 全局优化(选) 分枝定界管理程序
ILP线性优化求解程序 1. 单纯形算法 2. 内点算法(选)
IQP
INLP
非线性优化求解程序 1、顺序线性规划法(SLP) 2、广义既约梯度法(GRG) (选) 3、多点搜索(Multistart) (选)
建模时需要注意的几个基本问题1、尽量使用实数优化,减少整数约束和整数变量
2、尽量使用光滑优化,减少非光滑约束的个数如:尽量少使用绝对值、符号函数、多个变量求 最大/最小值、四舍五入、取整函数等 3、尽量使用线性模型,减少非线性约束和非线性变 量的个数 (如x/y <5 改为x<5y)
4、合理设定变量上下界,尽可能给出变量初始值5、模型中使用的参数数量级要适当 (如小于103)
LINGO软件的基本使用方法
1. LINGO入门
LINGO软件的安装安装过程: 与一般Windows程序类似. 安装文件20M多一点,需要接受安装协议、选择安装 目录(缺省C:\LINGO8)。
第一次运行时提示输入授权密码,如图:
LINGO软件的主要特色两种命令模式 Windows模式: 通过下拉式
菜单命令驱动LINGO运
行(多数菜单命令有快捷键,常用的菜单命令有快捷按钮),图形界面,使用方便;(这里主要介绍这种模式)
命令行 模式:仅在命令窗口(Command Window)下操 作,通过输入行命令驱动LINGO运行 。
LINGO界面简介LINGO的界面 LINGO软件的主窗口(用 户界面),所有其他窗口 都在这个窗口之内。
当前光标 的位置 模型窗口(Model Window),用于输入 LINGO优化模型(即 LINGO程序)。
状态行(最左边显 示“Ready”,表示 “准备就绪”)
当前时间
LINGO的文件类型 .LG4:LINGO格式的模型文件,保存了模型窗口中所 能够看到的所有文本和其他对象及其格式信息;
.LNG:文本格式的模型文件,不保存模型中的格式信 息(如字体、颜色、嵌入对象等); .LDT:LINGO数据文件; .LTF:LINGO命令脚本文件; .LGR:LINGO报告文件; .LTX: LINDO格式的模型文件;除“LG4”文件外, 另外几种格式的文件 都是普通的文本文件, 可以用任何文本编辑 器打开和编辑。
.MPS:示MPS(数学规划系统)格式的模型文件。
运行状态窗口Variables(变量数量): 变量总数(Total)、 非线性变量数(Nonlinear)、 整数变量数(Integer)。 Constraints(约束数量): 约束总数(Total)、 非线性约束个数(Nonlinear)。 Nonzeros(非零系数数量): 总数(Total)、 非线性项系数个数(Nonlinear)。 Generator Memory Used (K) (内存使用 量) Elapsed Runtime (hh:mm:ss) (求解花费的时间)
运行状态窗口
当前模型的类型 :LP,QP,ILP,IQP,PILP, PIQP,NLP,INLP,PINLP (以I开头表示 IP,以PI开头表示PIP) 当前解的状态 : "Global Optimum", "Local Optimum", "Feasible", "Infeasible“(不可行), "Unbounded“(无界), "Interrupted“(中断), "Undetermined“(未确定) 当前约束不满足的总量 目前为止的 迭代次数
求解 器 (求 解程 序 )状 态框
解的目标函数值
运行状态窗口
使用的特殊求解程序 : B-and-B (分枝定界算法) Global (全局最优求解程序) Multistart(用多个初始点求解的程序)
目前为止找到的可行 解的最佳目标函数值 扩展 的求 解器 (求解 程序) 状态 框 目标函数值的界 特殊求解程序当前运行步数: 分枝数(对B-and-B程序); 子问题数(对Global程序); 初始点数(对Multistart程序)
有效步数
一个简单的LINGO程序例1 直接用LINGO来解如下二次规划问题:2 Max 98x1 277x2 x12 0.3x1 x2 2 x2 s.t. x1 x2 100 x1 2 x2 x1 , x2 0 为整数
1 2 3 4
输入窗口如下:
程序语句输入的备注:
LINGO总是根据“MAX=”或“MIN=”寻找目标函数, 而除注释语句和TITLE语句外的其他语句都是约束条 件
,因此语句的顺序并不重要 。 限定变量取整数值的语句为“@GIN(X1)”和 “@GIN(X2)” 。
LINGO中函数一律需要以“@”开头,其中整型变量 函数是@BIN、@GIN和上下界限定函数是@FREE、 @SUB、@SLB。
输出结果: 运行菜单命令“LINGO|Solve”最大利润=11077.5
最优整数解 X=(35,65)