420 likes | 510 Views
数学建模培训 —— 优化问题. 上海第二工业大学 范 静. 优化问题是人们在工程技术、经济管理和科学研究等领域中最常遇到的一类问题。. 商品经营者制定价格使得销售利润最高. 生产计划要在满足工艺流程需求的条件下 , 降低成本使总利润最高. 运输方案的安排问题中要使运输成本最小且收益最大. 结构设计要在满足强度要求等条件下 , 使所用材料的总重量最轻. 一 简单的优化模型 二 数学规划模型 三 求解优化问题的数学软件 四 离散优化模型简介. 一 简单的优化模型. 本节考虑较简单的优化模型,将其归结为函数极值问题,可以直接用微分法求解。 存贮模型(不允许缺货).
E N D
数学建模培训——优化问题 上海第二工业大学 范 静
优化问题是人们在工程技术、经济管理和科学研究等领域中最常遇到的一类问题。优化问题是人们在工程技术、经济管理和科学研究等领域中最常遇到的一类问题。 • 商品经营者制定价格使得销售利润最高 • 生产计划要在满足工艺流程需求的条件下,降低成本使总利润最高 • 运输方案的安排问题中要使运输成本最小且收益最大 • 结构设计要在满足强度要求等条件下,使所用材料的总重量最轻
一 简单的优化模型 二 数学规划模型 三 求解优化问题的数学软件 四 离散优化模型简介
一 简单的优化模型 • 本节考虑较简单的优化模型,将其归结为函数极值问题,可以直接用微分法求解。 • 存贮模型(不允许缺货)
存贮模型(不允许缺货) • 工厂定期订购原料,存入仓库供生产之用; • 车间一次加工出一批零件,供装配线每天生产之用; • 商店成批购进各种商品,放在货柜里以备零售;
思考 • 存贮量多少合适? • 存贮量过大,存贮费用太高; • 存贮量太小,会导致一次性订购费用增加,或不能及时满足需求。
配件厂为装配线生产若干种产品,轮换产品时因更换设备要付生产准备费(与生产数量无关),同一产品的产量大于需求时要付贮存费。该厂生产能力非常大,即所需数量可在很短时间内产出。配件厂为装配线生产若干种产品,轮换产品时因更换设备要付生产准备费(与生产数量无关),同一产品的产量大于需求时要付贮存费。该厂生产能力非常大,即所需数量可在很短时间内产出。 • 已知某产品日需求量100件,生产准备费5000元,贮存费每日每件1元。试安排该产品的生产计划,即多少天生产一次(生产周期),每次产量多少,使总费用最小。 要求 建立生产周期、产量、需求量、准备费、贮存费之间的关系。
问题分析 日需求量100件,生产准备费5000元,贮存费每日每件1元。 • 每天生产一次,每次100件: 准备费5000元,无贮存费。每天费用5000元。 • 10天生产一次,每次1000件: 准备费5000元,贮存费900+800+…+100=4500,总计 9500元。每天费用950元。 • 50天生产一次,每次5000件: 准备费5000元,贮存费4900+4800+…+100=122500元, 总计127500元。每天费用2550元。 10天生产一次平均每天费用最小吗?
问题分析 • 周期短,产量小 贮存费少,准备费多 • 周期长,产量大 准备费少,贮存费多 • 这是一个优化问题,关键是建立目标函数。 • 不能用一个周期的总费用作为目标函数。 • 目标函数——每天总费用的平均值
模型假设 • 产品每天的需求量为常数 r ; • 每次生产准备费为c1,每天每件产品贮存费为c2 ; • T天生产一次(周期),每次生产Q件,当贮存量为零时,Q件产品立即到来(生产时间不计); • 时间和产量都作为连续量处理
建模目的 • 设r, c1, c2已知,求T, Q使每天总费用的平均值最小。
模型建立 • 总费用与变量的关系 • 总费用=生产准备费+存贮费 +缺货损失费 • 存贮费=存贮单价×存贮量 • 存贮量=?
存贮量的计算 • 设t 时刻的存贮量为q(t),t=0时生产Q件, 存贮量q(0)=Q, q(t) 以需求速率r 线性递减,直至q(T)=0: q • q(t) = Q – r t Q r • Q = rT A=QT/2 • 一个周期内存贮量 T 0 t (A的面积)
费用 • 一个周期的总费用 • 每天的费用(目标函数)
模型求解 • 求T使得 最小 • 用微分法: • 解得: • 每天的最小费用: • 经济订货批量公式(EOQ公式)。
结果解释 • 准备费c1增加,生产周期和产量变大; • 存贮费c2增加,生产周期和产量变小; • 当日需求费r 增加,生产周期变小而产量变大。 • 这些定性结果符合常识,而定量关系(平方根,系数2等)凭常识是无法得出的,只能由数学建模得到。
在本例中 • c1=5000, c2=1, r=100, • 由 得: T=10, C=1000. • 这里得到的费用C与前面计算得950元有微小差别,你能解释吗?
数学规划 二 数学规划模型 • 线性规划 • 非线性规划 • 整数规划 • 0-1规划 • 混合整数规划 • 奶制品的生产与销售
数学规划的一般模型 • min f (x) s.t. hi(x)=0, i=1, …, m gp(x)>=0, p=1, …, t • f(x), hi(x)( i=1, …, m), gp(x)( p=1, …, t)均是定义在En上的实函数。 • x=(x1, …, xn)T: 决策变量 • f (x): 目标函数 • hi(x), gp(x): 约束函数
(MP) • min f (x) s.t. hi(x)=0, i=1, …, m gp(x)>=0, p=1, …, t • 若f(x), hi(x)( i=1, …, m), gp(x)( p=1, …, t)均为线性函数,则问题(MP)就被称为线性规划问题。 • 线性规划问题:求多变量线性函数在线性约束条件下的最优值。
min f (x) s.t. hi(x)=0, i=1, …, m gp(x)>=0, p=1, …, t (MP) • 若f(x), hi(x)( i=1, …, m), gp(x)( p=1, …, t)中至少有一个是非线性函数,问题(MP)就被称为非线性规划问题。
若要求变量 x取整数值时,则称之为整数规划; • 若变量只取0或1时,则称之为0-1规划; • 若只要求部分变量取整数值,则称之为混合整数规划。
奶制品的生产和销售 甲:12小时 3公斤A1 获利24元/公斤 1桶牛奶 • 每天有50桶牛奶供应 获利16元/公斤 4公斤A2 乙:8小时 • 每天正式工人总的劳动时间为480小时 • 设备甲每天至多能加工100公斤A1 • 设备乙的加工能力没有限制 试制订生产计划,使每天获利最大
甲:12小时 3公斤A1 获利24元/公斤 1桶牛奶 获利16元/公斤 4公斤A2 乙:8小时 • 决策变量: x1桶牛奶生产A1, x2桶牛奶生产A2 获利24×3x1 获利16×4 x2 • 目标函数: Max z=72x1+64x2 线性规划模型(LP) x1+x2<=50 • 约束条件: 12x1+8x2<=480 3x1<=100 x1,x2>=0
线性规划问题求解 • 满足约束条件的解称为可行解 • 所有可行解构成的集合称为可行域 • 满足目标式的可行解称为最优解 • 可行域的几何特征: 线性规划问题的可行域是一个凸多边形; 线性规划问题如果存在最优解,则最优解必在可行域的顶点处达到。 • 可行域的顶点称为基本可行解。
模型求解 • 单纯形算法 • 椭球算法、Karmarkar算法 • 利用计算机软件 LINDO, LINGO, MATLAB
三 软件简介 • LINDO, LINGO是美国LINDO系统公司开发的一套专门用于求解最优化问题的软件包。 • MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境 • 其它计算机程序语言
LINDO和LINGO软件能求解的优化模型 优化模型 整数规划(IP) 连续优化 LINGO LINDO 线性规划 (LP) 二次规划 (QP) 非线性规划 (NLP)
Max z=72x1+64x2 max 72x1+64x2 st x1+x2<50 12x1+8x2<480 3x1<100 end x1+x2<=50 12x1+8x2<=480 LINDO 3x1<=100 x1,x2>=0 max=72*x1+64*x2; x1+x2<50; 12*x1+8*x2<480; 3*x1<100; LINGO 然后点击工具条上的按钮 即可。
注意:若没有不等式: 存在,则令A=[ ],b=[ ]. MATLAB求解线性规划问题 • 对于线性规划问题 • 可用函数x = linprog( c, A, b, Aeq,beq,xLB, xUB, x0, nEq),其中x0为算法的初始点,可任取一个点。 若没有等式约束: , 则令Aeq=[ ], beq=[ ].
Max z=72x1+64x2 改写为: min z=(-72 -64)X 编写M文件liti.m如下: f = [-72 -64]; A = [1 1; 12 8; 3 0]; b = [50; 480; 100]; Aeq=[]; beq=[]; vlb = zeros(2,1); vub=[]; [x,fval] = linprog(f,A,b,Aeq,beq,vlb,vub) x1+x2<=50 12x1+8x2<=480 3x1<=100 x1,x2>=0 >> liti Optimization terminated. x = 20.0000 30.0000 fval = -3.3600e+003
离散优化模型 常用技巧 • 计算复杂性分析 • 算法设计 精确算法 近似算法 • 算法计算量估计、算法优劣比较
(算法1) 取出a1, a2,…, an中的最小者,令其为b1。从a1, a2,…, an中去除b1,在余下的n—1个数中选出最小者,令其为b2,…,直至得到b1, b2,…, bn。 容易看出,为了排出b1, b2,…, bn,算法工作了 次比较。 比较算法的好坏,从不同的角度出发,有各种不同的标准。在这里,我们仅就算法的计算速度作一个十分粗略的比较。 例1(整理问题)给定n个实数a1, a2,…, an,要求将它整理成由小到大排列(或由大到小排列)的顺序:b1, b2,…, bn,b1≤ b2≤…≤ bn。 (算法2) 步0 b1←a1 步1 设已有b1,…,bk (1≤k<n),将按两分法比较的方式把ak+1排入其中:若b1≤…≤bi≤ak+1≤bi+1≤…≤bk,令(b1, b2,…,bk , bk+1)←(b1,…, bi, ak+1, bi+1, …, bk)。若k+1<n,令k ← k+1,返回步1。
排出b1不必作比较,排出b2只需作一次比较,…,一般,在排ak+1时,设2r-1≤k<2r,则只需作r次比较即可将ak+1安排在它应排的位置上。例如在排a8时,k=7,先和b4比,若a8>b4,可再和b6比(若a8<b4则和b2比),易见,只要比3次即可排入a8,由于r≤log2k+1,算法的总经较次数不超过排出b1不必作比较,排出b2只需作一次比较,…,一般,在排ak+1时,设2r-1≤k<2r,则只需作r次比较即可将ak+1安排在它应排的位置上。例如在排a8时,k=7,先和b4比,若a8>b4,可再和b6比(若a8<b4则和b2比),易见,只要比3次即可排入a8,由于r≤log2k+1,算法的总经较次数不超过 令 , ,设计算机每秒可作C次比较,则算法1与算法2整理a1, a2,…, an所用的时间分别为 若n=100万,C=100万次/秒,则t1≈5.8天,而t2≈20秒。可见在较大规模的整理问题时,算法2明显优于算法1。 我们来分析一下算法2的计算量:
使零件尽早完工? • 使零件尽量在交货日期内完工? • 使零件的完工时间和尽可能小?
1 个 设n个工件需要在同类型设备A或B上加工,问应如何安排个工件的加工顺序,使得所有工件的完工时间尽可能早?(所有工件的完工时间之和尽量小?)
方法一——采取近似算法: 优点:节省时间 缺点:不是最优解 方法二——采取精确算法: 动态规划 优点:是最优解 缺点:时间消耗很多
谢 谢 2013.04