优化模型与lingo lingdo

更新时间:2023-05-29 04:21:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

数学建模

数学建模讲座(2004年7月~8月 江西)

优化模型与LINDO/LINGO优化软件谢金星 清华大学数学科学系 Tel: 010-62787812 Email:jxie@ /~jxie

数学建模

简要提纲 优化模型简介 LINDO公司的主要软件产品及功能简介

LINDO软件的使用简介 LINGO软件的使用简介 建模与求解实例(结合软件使用)

数学建模

优化模型实际问题中 Min(或Max) z f ( x), x ( x1 , x n )T 的优化模型 s.t. g i ( x) 0, i 1,2, m x~决策变量 数学规划 线性规划(LP) 二次规划(QP) 非线性规划(NLP) 0-1整数规划 一般整数规划 纯整数规划(PIP) 混合整数规划(MIP) f(x)~目标函数 gi(x) 0~约束条件

连续规划

整数规划(IP)

数学建模

LINDO 公司软件产品简要介绍美国芝加哥(Chicago)大学的Linus Schrage教授于1980 年前后开发, 后来成立 LINDO系统公司(LINDO Systems Inc.), 网址:LINDO: Linear INteractive and Discrete Optimizer LINGO: Linear INteractive General Optimizer What‘s Best!: (SpreadSheet e.g. EXCEL) (V6.1) (V8.0) (V7.0)

LINDO API: LINDO Application Programming Interface (V2.0)

演示(试用)版、学生版、高级版、超级版、工业版、 扩展版… (求解问题规模和选件不同)

数学建模

LINDO和LINGO软件能求解的优化模型优化模型

连续优化

整数规划(IP)

线性规划 (LP)

二次规划 (QP)

非线性规划 (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、尽量使用实数优化,减少整数约束和整数变量

2、尽量使用光滑优化,减少非光滑约束的个数如:尽量少使用绝对值、符号函数、多个变量求 最大/最小值、四舍五入、取整函数等 3、尽量使用线性模型,减少非线性约束和非线性变 量的个数 (如x/y <5 改为x<5y)

4、合理设定变量上下界,尽可能给出变量初始值5、模型中使用的参数数量级要适当 (如小于103)

数学建模

需要掌握的几个重要方面1、LINDO:

正确阅读求解报告(尤其要掌握敏感性分析)2、LINGO: 掌握集合(SETS)的应用; 正确阅读求解报告; 正确理解求解状态窗口; 学会设置基本的求解选项(OPTIONS) ; 掌握与外部文件的基本接口方法

数学建模

例1 加工奶制品的生产计划1桶 牛奶 或 12小时 8小时 每天: 50桶牛奶 3公斤A1 获利24元/公斤

4公斤A2

获利16元/公斤

时间480小时 至多加工100公斤A1

制订生产计划,使每天获利最大 35元可买到1桶牛奶,买吗?若买,每天最多买多少?

可聘用临时工人,付出的工资最多是每小时几元? A1的获利增加到 30元/公斤,应否改变生产计划?

数学建模

1桶 牛奶 或

12小时

3公斤A1 4公斤A2

获利24元/公斤 获利16元/公斤

8小时 每天 50桶牛奶 时间480小时 至多加工100公斤A1 决策变量 x1桶牛奶生产A1 x2桶牛奶生产A2

目标函数

获利 24×3x1 获利 16×4 x2 每天获利 Max z 72x1 64x2 原料供应

x1 x2 5012x1 8x2 480

约束条件

劳动时间 加工能力 非负约束

3x1 100 x1 , x2 0

线性 规划 模型 (LP)

数学建模

模型求解OBJECTIVE FUNCTION VALUE

max 72x1+64x2

st2)x1+x2<50 3)12x1+8x2<480

1)VARIABLE X1

3360.000VALUE 20.000000 REDUCED COST 0.000000

4)3x1<100end DO RANGE (SENSITIVITY) ANALYSIS? No

X2

30.000000

0.000000

ROW SLACK OR SURPLUS DUAL PRICES 2) 0.000000 48.000000

3)4)

0.00000040.000000 2

2.0000000.000000

NO. ITERATIONS=

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

ROW SLACK OR SURPLUS DUAL PRICES 2) 3) 4) 0.000000 0.000000 40.000000 2 48.000000 2.000000 0.000000

reduced cost值表 示当该非基变量 增加一个单位时 (其他非基变量 保持不变)目标 函数减少的量(对 max型问题) 也可理解为: 为了使该非基变 量变成基变量, 目标函数中对应 系数应增加的量

NO. ITERATIONS=

数学建模

结果解释max 72x1+64x2st 2)x1+x2<50OBJECTIVE FUNCTION VALUE 1) VARIABLE X1 X2 3360.000 VALUE 20.000000 30.000000 REDUCED COST 0.000000 0.000000 DUAL PRICES

3)12x1+8x2<4804)3x1<100 end

ROW SLACK OR SURPLUS

原料无剩余 三 2) 0.000000 48.000000 种 时间无剩余 3) 0.000000 2.000000 资 加工能力剩余40 4) 40.000000 0.000000 源 ―资源” 剩余为零的约束为紧约束(有效约束)

数学建模

结果解释

OBJECTIVE FUNCTION VALUE1) 3360.000

最优解下“资源”增 VARIABLE VALUE 加1单位时“效益”的 X1 20.000000 增量 X2 30.000000 影子价格原料增1单位, 利润增48 时间加1单位, 利润增2 能力增减不影响利润2)3) 4)

REDUCED COST

0.0000000.000000

ROW SLACK OR SURPLUS DUAL PRICES

0.0000000.000000 40.000000

48.0000002.000000 0.000000

35元可买到1桶牛奶,要买吗? 35 <48, 应该买! 聘用临时工人付出的工资最多每小时几元? 2元!

数学建模

结果解释

DO RANGE(SENSITIVITY) ANALYSIS? Yes RANGES IN WHICH THE BASIS IS UNCHANGED: OBJ COEFFICIENT RANGES VARIABLE CURRENT ALLOWABLE ALLOWABLE COEF INCREASE DECREASEX1 X2 72.000000 24.000000 8.000000

最优解不变时目标 系数允许变化范围 (约束条件不变)

x1系数由24 3= 72 增加为30 3= 2 50.000000 10.000000 6.666667 90,在允许范 3 480.000000 53.333332 80.000000 围内 4 100.000000 INFINITY 40.000000 不变! A1获利增加到 30元/千克,应否改变生产计划ROW

64.000000 8.000000 16.000000 RIGHTHAND

SIDE RANGES CURRENT ALLOWABLE ALLOWABLE RHS INCREASE DECREASE

x1系数范围(64,96) x2系数范围(48,72)

数学建模

结果解释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

影子价格有意义 时约束右端的允 许变化范围(目标函数不变) 注意: 充分但 可能不必要

64.000000 8.000000 16.000000 RIGHTHAND SIDE RANGES CURRENT ALLOWABLE ALLOWABLE RHS INCREASE DECREASE

23 4

50.000000480.000000 100.000000

10.00000053.333332 INFINITY

6.66666780.000000 40.000000

原料最多增加10时间最多增加53

35元可买到1桶牛奶,每天最多买多少? 最多买10桶?

数学建模

使用LINDO的一些注意事项―>‖(或“<‖)号与“>=‖(或“<=‖)功能相同 变量与系数间可有空格(甚至回车), 但无运算符 变量名以字母开头,不能超过8个字符 变量名不区分大小写(包括LINDO中的关键字) 目标函数所在行是第一行,第二行起为约束条件 行号(行名)自动产生或人为定义。行名以“)”结 束 7. 行中注有“!‖符号的后面部分为注释。如: ! It‘s Comment. 8. 在模型的任何地方都可以用“TITLE‖ 对模型命名 (最多72个字符),如: TITLE This Model is only an Example 1. 2. 3. 4. 5. 6.

数学建模

使用LINDO的一些注意事项9. 变量不能出现在一个约束条件的右端 10. 表达式中不接受括号“( )‖和逗号“,‖等任何符号, 例: 400(X1+X2)需写为400X1+400X2 11. 表达式应化简,如2X1+3X2- 4X1应写成 -2X1+3X2 12. 缺省假定所有变量非负;可在模型的“END‖语句 后用“FREE name‖将变量name的非负假定取消 13. 可在 “END‖后用“SUB‖ 或“SLB‖ 设定变量上 下界 例如: “sub x1 10‖的作用等价于“x1<=10‖ 但用“SUB‖和“SLB‖表示的上下界约束不计入模 型的约束,也不能给出其松紧判断和敏感性分析。 14. ―END‖后对0-1变量说明:INT n 或 INT name 15. ―END‖后对整数变量说明:GIN n 或 GIN name

数学建模

二次规划(QP)问题 LINDO可求解二次规划(QP)问题,但输入方式较 复杂,因为在LINDO中不许出现非线性表达式 需要为每一个实际约束增加一个对偶变量 (LAGRANGE乘子),在实际约束前增加有关 变量的一阶最优条件,转化为互补问题 “END‖后面使用QCP命令指明实际约束开始的 行号,然后才能求解 建议总是用LINGO解QP [注意]对QP和IP: 敏感性分析意义不大

数学建模

状态窗口(LINDO Solver Status) 当前状态:已达最优解 迭代次数:18次 约束不满足的“量”(不 是“约束个数”):0 当前的目标值:94 最好的整数解:94 整数规划的界:93.5 分枝数:1 所用时间:0.00秒(太快 了,还不到0.005秒) 刷新本界面的间隔:1(秒)

数学建模

选项设置Nonzero Limit: 非零系数

的个数上限; Iteration Limit: 最大迭代步数; Initial Contraint Tol: 约束的初始误差上限; Final Contraint Tol: 约束的最后误差上限; Entering Var Tol: 进基变量的REDUCED COST的误差限; Pivot Size Tol: 旋转元的误差限

Preprocess:预处理(生成割平面); Preferred Branch:优先的分枝方式:“Default‖(缺省方式)、 “Up‖(向上取整优先)、 “Down‖(向下取整优先);

IP Optimality Tol:IP最优值允许的误 差上限(一个百分数,如5%即0.05); IP Objective Hurdle:IP目标函数的篱 笆值,即只寻找比这个值更优最优解 (如当知道当前模型的某个整数可行解 时,就可以设置这个值); IP Var Fixing Tol:固定一个整数变量 取值所依据的一个上限(如果一个整数 变量的判别数(REDUCED COST)的 值很大,超过该上限,则以后求解中把 该整数变量固定下来)。

本文来源:https://www.bwwdw.com/article/pnp4.html

Top