优化模型 教学目的: 初步认识优化模型的基本形式及掌握线性规划模型的建模及求解。 通过实例建模并求解,熟练掌握一些数学软件的使用。 教学内容: 简单介绍优化模型的基本概念和基本类型。 重点介绍优化模型中的线性规划模型。 线性规划模型建模实例及求解的实现。 布置本次课的练习与上机实验内容。
1. 引言 在工程技术、经济管理、科学研究和日常生活等诸多领域中,人们经常遇到的一类决策问题:在一系列客观或主观限制条件下,寻求所关注的某个或多个指标达到最大(或最小)的决策。例如,生产计划要按照产品工艺流程和顾客需求,制定原料、零件、部件等订购、投产的日程和数量,尽量降低成本使利润最高;运输方案要在满足物资需求和装载条件下安排从各供应点到各需求点的运量和路线,使运输总费用最低。 它们的特点就是:在若干可能的方案中寻求某种意义 下的最优方案。数学上称为最优化问题,而研究处理这种问题的方法叫最优化的方法。
优化模型是一类既重要又特殊的数学模型,而优化建模方法是也一种特殊的数学建模方法。优化模型一般有下面三个要素: (1) 决策变量,它通常是该问题要求解的那些未知量。 (2)目标函数,通常是该问题要优化(最大或最小)的那个目标的数学表达式,它是决策变量的函数。 (3)约束条件,由该问题对决策变量的限制条件给出。
优化模型从数学上可表示成如下一般形式: opt (opt表示最优化(optimize)的意思) s.t. (Ⅰ) (Ⅱ) 如果 均为线性函数,则上述模型称为线性规划 (Linear Programming,简记为LP),否则称为非线性规划(NLP)
2.优化模型的基本类型 问题求解的难度增加 上图是优化模型的简单分类和求解难度
3. 线性规划 (目标函数和约束条件都是线性函数) 3.1线性规划问题几个概念: 线性规划问题有解:指能找出一组满足约束条件的向量,并称这组为问题的可行解。 线性规划问题无解:指不存在可行解或最优趋向无限大。 可行域:指全部可行解组成的集合。 最优解:指可行域中使目标函数值达到最优的可行解。
3.2 线性规划模型的解的几种情况 线性规划问题 有可行解 无可行解 有最优解 无最优解
3.3 求解一般方法: (1)图解法:对于只含2个变量的线性规划问题,可通过在平面上作图的方法求解。步骤如下: ①在平面上建立直角坐标系; ②图示约束条件,找出可行域; ③图示目标函数,即为一直线; ④将目标函数直线沿着其法线方向向可行解域边界平移,直至与可行解域第一次相切为止,这个切点就为最优点 (2)用EXCEL—Solver,Matlab,LINDO/LINGO软件实现
3.4线性规划模型的实例 例1 家具生产的安排 家具公司生产桌子和椅子,用于生产的劳力共计450个工时,木材共有4立方米,每张桌子要使用15个工时,0.2立方木材售价80元。每张椅子使用10个工时,0.05立方木材售价45元。问为达到最大的收益,应如何安排生产? 分析: 1. 求什么? 生产多少桌子? x1 生产多少椅子? x2 2. 优化什么? 收益最大 Max f=80 x1+45 x2 3. 限制条件? 原料总量 0.2 x1 +0.05 x2 ≤4 劳力总数 15 x1 +10 x2 ≤450
模型:以产值为目标取得最大收益. 设:生产桌子 x1张, 椅子 x2张,(决策变量) 将目标优化为:max f=80x1+45x2 对决策变量的约束: 0.2x1+0.05x2≤4 (Ⅰ) 15x1+10x2 ≤ 450,(Ⅱ) x1 ≥ 0, x2 ≥ 0,
模型求解: (1)图解法(用于决策变量是2维) 15x1+10x2=450 x1 x2 0.2x1+0.05x2=4
线性规划问题的目标函数(关于不同的目标值是一族平行直线)目标值的大小描述了直线离原点的远近,并且最优解一定在可行解集的某个极点上达到 (穿过可行域的目标直线组中最远离(或接近)原点的直线所穿过的凸多边形的顶点).
(2)用EXCEL—Solver实现 ①模型中的数据直接输入EXCEL工作表中。其中决策变量初始的值可以任意给出,它们是可变的,软件最后将给出最优解的值。SUMPRODUCT是EXCEL的一个内置函数,表示两个向量或矩阵对应元素乘积的和。
②引用工具——规划求解(需要工具—加载宏安装)
(3)用Matlab实现------- lp 线性优化函数 线性优化问题即目标函数和约束条件均为线性函数的问题。 其标准形式为: Min Sub.to: Ax=b 其中 (通常 ), , 均为数值矩阵。
max f=80 X1+45 X2 sub.to 0.2 X1+0.05 X2≤4 15 X1+10 X2 ≤ 450 X1 ≥ 0, X2 ≥ 0 化为 min f=- 80 X1- 45 X2 sub.to 0.2 X1+0.05 X2≤4 15 X1+10 X2 ≤ 450 X1 ≥ 0, X2 ≥ 0
程序如下: c=[-80,-45];a=[0.2,0.05;15,10];b=[4,450]; vlb=[0,0];vub=[]; [x,lam]=lp(c,a,b,vlb,vub) (参数vlb,vub给出变量的上下边界的约束) x = 14.0000 24.0000 lam = 100.0000 4.0000 0 0 说明:x解为最优解,lam说明约束条件发挥了作用。
(4)用LINDO/LINGO实现 我们可以直接在下面的窗口输入LP模型(图(4)—1) 图(4)—1 输入简单的优化模型 输入后,用鼠标单击LINDO软件工具栏中的图标 ,或从菜单中选择Solve│Solve(Ctrsl+S)命令,则LINDO开始编译这个模型,编译没错误马上开始求解,求解时会显示如图(4)—2所示LINDO求解器运行状态窗口(里面的“Objective”就是最优解,即:2200)。
图(4)—2
这个例子中的LP模型太小了,我们可能还没来得及看清(4)—2的界面,最优解就出来了,并马上弹出如图 图(4)—3 这个例子中的LP模型太小了,我们可能还没来得及看清(4)—2的界面,最优解就出来了,并马上弹出如图 (4)—3的对话框,这个对话框询问你是否需要作灵敏性分析,可以先选择“否N”按钮,这个窗口就回关闭,然后在关闭图(4)—2。如果你在屏幕上没有看到求解的结果,那么可以用鼠标选择LINDO的主菜单“Window”,会发现有一个子菜单项“Reports Window”,这就是最终结果的报告窗口。用鼠标选择“Window│Reports Window”,就可以查看到窗口的内容(图(4)—4)
图(4)—4 “LP OPTIMUM FOUND AT STEP 2”表示单纯形法在两次迭代后得到最优解。 “OBJECTIVE FUNCTION VALUE 1) 2200.000”表示最优目标值为2200.000(在LINDO中目标函数所在的行总是被认为是第1行,这就是这里“1)”的含义)。
VALUE”给出最优解中各变量的值:X1=14. 000000,X2=24 VALUE”给出最优解中各变量的值:X1=14.000000,X2=24.000000 “SLACK OR SURPLUS(松弛或剩余)”给出约束对应的松弛变量的值:第2、3行松弛变量均为0,说明对于最优解来讲,两个约束均取等号,即都是紧约束。 “DUAL PRICES”给出对偶价格的值。 “NO. ITERATIONS=2”表示用单纯形法进行了两次迭代(旋转)。 例2 加工奶制品的生产计划( 例1) 例3 服务员聘用问题(整数线性规划模型) 某服务部门一周中每天需要不同数目的雇员:周一到周四每天至少需要50人,周五至少需要80人,周六和周日至少需要90人,现规定应聘者需要连续工作5天,试确定聘用方案,即周一到周日每天聘用多少人,使在满足需要的条件下聘用总人数最少。
(通过例3主要想说明用LINDO求解时与例1的不同:一般的整数变量可用命令GIN(general integer的缩写),对整数变量的说明只能放在模型的“END”语句之后,如图例3—1)
4. 学生练习与实验: 1、上机练习例1、2。 2、(广告方式的选择)中华家电公司推销一种新型洗衣机,有关数据见下表 4.学生练习与实验: 1、上机练习例1、2。 2、(广告方式的选择)中华家电公司推销一种新型洗衣机,有关数据见下表.销售部第一月的广告预算为20000元,要求至少有8电视商业节目,15家报纸广告/电视广告费不得超过12000元,电台广播至少隔日有一次.现问该公司销售部应当采用怎样的广告宣传计划,才能取得最好的效果? 广告方式 广告费用(元/次) 可用最高次数/月 期望的宣传 效果/单位 电视台a (白天,1 分钟) 500 16 50 电视台b (晚上,30秒) 1000 10 80 每日晨报/(半版) 100 24 30 星期日报/(半版) 300 4 40 广播电台/(1分钟) 25 15
[参考文献] [1] http://www.mathrs.net/data/upload/shuxuejianmo/kejian/14.ppt#3 [2] 边馥萍,侯文华,梁冯珍.数学模型方法与算法[M].北京:高等教育出版 社.2005,5. [3] 谢金星,薛毅.优化建模与LINDO/LINGO软件[M].北京:清华大学出版 社.2005,7. [4] 王沫然. MATLAB 5.X与科学计算[M].北京:清华大学出版社.2000,5. [5] 姜启源,谢金星,叶俊.数学模型(第三版)[M].北京:高等教育出版社.2005,12. [6] http://www.mathrs.net/data/upload/yunchouxuejiangzuo.ppt