1、数学建模讲座(2008年7月,湖南) 优化建模与LINGO优化软件,谢金星 清华大学数学科学系 Tel: 010-62787812 Email: http:/ 优化模型简介2. LINGO软件简介3. 建模与求解实例,1. 优化模型简介,优化模型和优化软件的重要意义,解决优化/决策问题的手段,经验积累,主观判断,作试验,比优劣,建立数学模型(优化模型),求最优策略(决策),(最)优化:在一定条件下,寻求使目标最大(小)的决策,CUMCM赛题:50%与优化有关,规模大,需软件求解,OR/MS/DS的基础:OR(运筹学,Operations/-al Research) MS(管理科学,Manag
2、ement Science) DS(决策科学,Decision Science) 工程技术/经济管理/科学研究/社会生活中经常遇到,优化问题三要素:决策变量;目标函数;约束条件,优化问题的一般形式,可行解(满足约束)与可行域(可行解的集合)最优解(取到最小大值的可行解),无约束优化:最优解的分类和条件,给定一个函数 f(x),寻找 x* 使得 f(x*)最小,即,其中,局部最优解,全局最优解,必要条件,最优解在可行域边界上取得时不能用无约束优化方法求解,约束优化的 简单分类,线性规划(LP) 目标和约束均为线性函数非线性规划(NLP) 目标或约束中存在非线性函数二次规划(QP) 目标为二次函数
3、、约束为线性整数规划(IP) 决策变量(全部或部分)为整数整数线性规划(ILP),整数非线性规划(INLP)纯整数规划(PIP), 混合整数规划(MIP) 一般整数规划,0-1(整数)规划,连续优化,离散优化,数学规划,无约束优化,优化(Optimization), 规划(Programming),线性规划,非线性规划,网络优化,组合优化,整数规划,不确定规划,多目标规划,目标规划,动态规划,连续优化,离散优化,从其他角度分类,Optimization Tree http:/www-fp.mcs.anl.gov/otc/Guide/OptWeb/,优化建模如何创新?,方法1:大胆创新,别出心裁
4、- 采用有特色的目标函数、约束条件等- 你用非线性规划,我用线性规划- 你用整数/离散规划,我用连续规划/网络优化- 方法2:细致入微,滴水不漏- 对目标函数、约束条件处理特别细致- 有算法设计和分析,不仅仅是简单套用软件- 敏感性分析详细 / 全面- ,建模时需要注意的几个基本问题,1、尽量使用实数优化,减少整数约束和整数变量 2、尽量使用光滑优化,减少非光滑约束的个数 如:尽量少使用绝对值、符号函数、多个变量求最大/最小值、四舍五入、取整函数等 3、尽量使用线性模型,减少非线性约束和非线性变量的个数 (如x/y 5 改为x5y) 4、合理设定变量上下界,尽可能给出变量初始值 5、模型中使用
5、的参数数量级要适当 (如小于103),常用优化软件,1. LINGO软件2. MATLAB优化工具箱3. EXCEL软件的优化功能4. SAS(统计分析)软件的优化功能5. 其他,MATLAB优化工具箱能求解的优化模型,优化工具箱3.0 (MATLAB 7.0 R14),连续优化,离散优化,无约束优化,非线性 极小 fminunc,非光滑(不可 微)优化 fminsearch,非线性 方程(组)fzero fsolve,全局 优化暂缺,非线性 最小二乘lsqnonlin lsqcurvefit,线性规划 linprog,纯0-1规划 bintprog 一般IP(暂缺),非线性规划 fminco
6、n fminimax fgoalattain fseminf,上下界约束 fminbnd fmincon lsqnonlin lsqcurvefit,约束线性 最小二乘lsqnonneg lsqlin,约束优化,二次规划 quadprog,2. LINGO软件简介,LINDO 公司软件产品简要介绍,美国芝加哥(Chicago)大学的Linus Schrage教授于1980年前后开发, 后来成立 LINDO系统公司(LINDO Systems Inc.), 网址:http:/,LINGO: Linear INteractive General Optimizer (V11.0)LINDO API
7、: LINDO Application Programming Interface (V4.0)Whats Best!: (SpreadSheet e.g. EXCEL) (V8.0),演示(试用)版、学生版、高级版、超级版、工业版、扩展版 (求解问题规模和选件不同),LINDO和LINGO软件能求解的优化模型,LINGO,LINDO(将被淘汰),优化模型,线性规划 (LP),非线性规划 (NLP),二次规划 (QP),连续优化,整数规划(IP),LINGO软件简介,LINGO模型的优点,集成了线性(非线性) / 连续(整数) 优化功能 运行速度较快 具有多点搜索 / 全局优化功能提供了灵活的
8、编程语言(矩阵生成器),可方便地输入模型提供与其他数据文件的接口(如TEXT, EXCEL, ODBC数据库接口)提供与其他编程语言的接口LINDO API 可用于自主开发,LP QP NLP IP 全局优化(选) ILP IQP INLP,LINGO软件的求解过程,LINGO预处理程序,线性优化求解程序,非线性优化求解程序,分枝定界管理程序,1. 确定常数 2. 识别类型,1. 单纯形算法 2. 内点算法(选),1、顺序线性规划法(SLP) 2、广义既约梯度法(GRG) (选) 3、多点搜索(Multistart) (选),目标与约束段集合段(SETS ENDSETS)数据段(DATA EN
9、DDATA)初始段(INIT ENDINIT)计算段(CALC ENDCALC)- 9.0+子模型(SUBMODEL ENDSUBMODEL)- 10.0+,LINGO模型的构成:6个段,LP QP NLP IP 全局优化(选) ILP IQP INLP,LINGO软件的求解过程,LINGO预处理程序,线性优化求解程序,非线性优化求解程序,分枝定界管理程序,1. 确定常数 2. 识别类型,1. 单纯形算法 2. 内点算法(选),1、顺序线性规划法(SLP) 2、广义既约梯度法(GRG) (选) 3、多点搜索(Multistart) (选),LINGO模型 例:选址问题,某公司有6个建筑工地,位
10、置坐标为(ai, bi) (单位:公里),水泥日用量di (单位:吨),假设:料场和工地之间有直线道路,用例中数据计算,最优解为,总吨公里数为136.2,线性规划模型,决策变量:ci j (料场j到工地i的运量)12维,选址问题:NLP,2)改建两个新料场,需要确定新料场位置(xj,yj)和运量cij ,在其它条件不变下使总吨公里数最小。,决策变量: ci j,(xj,yj)16维,非线性规划模型,演示Location.lg4,LINGO模型的构成:4个段,集合段(SETS ENDSETS),数据段(DATA ENDDATA),初始段(INIT ENDINIT),目标与 约束段,局部最优:89
11、.8835(吨公里 ),LP:移到数据段,边界,集合的类型,集合派生集合 基本集合稀疏集合 稠密集合元素列表法 元素过滤法 直接列举法 隐式列举法,setname /member_list/ : attribute_list;,setname(parent_set_list) /member_list/ : attribute_list;,SETS:CITIES /A1,A2,A3,B1,B2/;ROADS(CITIES, CITIES)/ A1,B1 A1,B2 A2,B1 A3,B2/:D; ENDSETS,SETS:STUDENTS /S1S8/;PAIRS( STUDENTS, STU
12、DENTS) | ENDSETS,集合元素的隐式列举,运算符的优先级,三类运算符:算术运算符 逻辑运算符 关系运算符,集合循环函数,四个集合循环函数:FOR、SUM 、 MAX、MIN function( setname ( set_index_list) | condition : expression_list);,objective MAX = SUM( PAIRS( I, J): BENEFIT( I, J) * MATCH( I, J);FOR(STUDENTS( I): constraintsSUM( PAIRS( J, K) | J #EQ# I #OR# K #EQ# I: M
13、ATCH( J, K) =1);FOR(PAIRS( I, J): BIN( MATCH( I, J);MAXB=MAX(PAIRS( I, J): BENEFIT( I, J);MINB=MIN(PAIRS( I, J): BENEFIT( I, J);,Example:,状态窗口,Solver Type: B-and-B Global Multistart,Model Class:LP, QP,ILP, IQP,PILP, PIQP,NLP,INLP,PINLP,State: Global Optimum Local Optimum Feasible Infeasible Unbounde
14、d Interrupted Undetermined,7个选项卡(可设置80-90个控制参数),程序与数据分离,文 本 文 件,使用外部数据文件,Cut (or Copy) Paste 方法 FILE 输入数据、TEXT输出数据(文本文件) OLE函数与电子表格软件(如EXCEL)连接 ODBC函数与数据库连接 LINGO命令脚本文件,LG4 (LONGO模型文件) LNG (LONGO模型文件) LTF (LONGO脚本文件) LDT (LONGO数据文件) LRP (LONGO报告文件),常用文件后缀,3. 建模与求解实例(结合软件使用),建模实例与求解,最短路问题飞机定位生产计划DVD租
15、赁,例 最短路问题,求各点到T的最短路,0,y,x,VOR2 x=629, y=375,309.00 (1.30),864.3(2.0),飞机 x=?, y=?,VOR1 x=764, y=1393,161.20 (0.80),VOR3 x=1571, y=259,45.10 (0.60),北,DME x=155, y=987,飞机与监控台(图中坐标和测量距离的单位是“公里”),实例: 飞机精确定位问题,飞机精确定位模型,飞机的精确定位模型,第1类模型: 不考虑误差因素,超定方程组,非线性最小二乘!,量纲不符! ?,飞机精确定位模型,第2类模型: 考虑误差因素(作为硬约束),Min x; Mi
16、n y; Max x; Max y.,以距离为约束,优化角度误差之和(或平方和); 或以角度为约束,优化距离误差.,非线性规划,?,? 仅部分考虑误差! 角度与距离的“地位”不应不同!,有人也可能会采用其他目标,如:,误差非均匀分布!,飞机精确定位模型,误差一般服从什么分布?,正态分布!,不同的量纲如何处理?,无约束非线性最小二乘模型,归一化处理!,shili0702.m,飞机坐标(978.31,723.98), 误差平方和0.6685 ( 4),角度需要进行预处理,如利用 Matlab的atan2函数, 值域(-pi, pi),第3类模型: 考虑误差因素(作为软约束); 且归一化,飞机精确定
17、位模型,小技巧: LINGO中没有atan2函数, 怎么办?,可以直接利用tan函数!,exam0507c.lg4,同前面的模型/结果,飞机坐标(980.21,727.30 ), 误差平方和2.6 与前面的结果有所不同, 为什么? 哪个模型合理些?,最后: 思考以下模型:,exam0507d.lg4,例:生产批量计划,背景:MRP(MRP-II)系统中的生产计划,生产批量计划:数学模型,已知:N, T, s, h, d, r, a, C,Min s.t.,演示 exam0502.lg4,例:DVD分配问题,背景:DVD在线租赁,每人每次最多3张已知:网站手上100种DVD的现有张数和当前需要处
18、理的1000位会员的在线订单(具体数据见http:/ =1-aij/11(aij =0时sij =0),,,,,,,,,。,或 =,0-1变量个数:1000*100+1000=101000,演示 Dvd_1000_100.lg4,CUMCM其他优化赛题 (参见http:/),飞行管理问题空洞探测问题钻井布局问题抢渡长江问题等等,主要参考文献,谢金星, 薛毅: 优化建模与LINDO/LINGO软件,清华大学出版社, 2005年7月出版.http:/ 杨顶辉: 大学数学实验, 清华大学出版社, 2005年2月出版.http:/历届竞赛优秀论文集:全国大学生数学建模竞赛优秀论文汇编(1992-2000):物质出版社,2001.数学的实践与认识(2000年及以前)工程数学学报 (2001年及以后),Thats all. Any Questions?,Thank you for your attendance!最后,祝大家在数学建模活动中取得更大的成绩!,清华大学数学科学系 谢金星, 2008.,