【从零开始数学建模(2)】简单优化-存贮模型

2023-10-29 17:10

本文主要是介绍【从零开始数学建模(2)】简单优化-存贮模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

简单的优化模型,归结为微积分中的函数极值问题,可以直接用微分法求解。

用数学建模方法处理一个优化问题

  • 确定优化目标是什么,寻求决策是什么,决策受到哪些条件限制
  • 对实际问题作若干合理的简化假设、用数学工具(变量、常数、函数等)表示他们
  • 在用微分法求出最优决策后,要对结果作出一些定性、定量分析必要检验

不允许缺货 存储模型

问题情境:配件厂为装配线生产若干种部件,轮换生产不同的部件时因更换设备要付生产准备费(与生产数量无关),同一部件的产量大于需求时因积压资金、占用仓库要付贮存费用,现在已知某一部件的日需求量100键,生产准备费5000元,贮存费每日每件1元,如果生产能力远大于需求,并且不允许出现缺货,试安排该产品的生产计划,即多少天生产一次(称为生产周期),每次产量多少,可以使总费用最小


问题分析
  • 若每天生产1次,每次100件,无贮存费,生产准备费5000元,每天费用5000元;
  • 若10天生产1次,每次1000件,贮存费 900+800+...+100=4500 元,生产准备费5000元,总计9500元,平均每天费用950元;
  • 若50天生产1次,每次5000件,贮存费 4900+4800+...+100=122500 元,生产准备费5000元,总计127500元,平均每天费用2550元;

        从上面的计算来看,生产周期端、产量少,会使贮存费小,准备费大;而周期长、产量多,会使贮存费大,准备费小。所以必然存在一个最佳的周期,使总费用最小。

        一般地,考察这样的不允许缺货的存贮模型:产品的需求稳定不变,生产准备费和产品贮存费为常数、生产能力无限、不允许缺货,确定生产周期和产量,使得总费用最小。


模型假设

        时间和产量为离散量,为了处理方便我们考虑连续模型,即设生产周期T与产量Q均为连续量。根据问题性质作出以下假设:

  1. 产品每天的需求量为常数 r.
  2. 每次生产准备费 c_{1} ,每天每件产品的贮存费 c_{2} .
  3. 生产能力为无限大(相对于需求量),当贮存量降为零时,Q 件产品立即生产出来供给需求,即不允许出现断货。

模型建立

将贮存量表示为时间t的函数 q(t) ,t=0 生产 Q 件,贮存量 q(0)=Qq(t) 以需求速率 r 递减,直到 q(T)=Q ,如图1,显然有

Q=rT

(1)

图1 不允许缺货模型的贮存量 q(t)

一个周期内的贮存费是 c_{2}\int_{0}^{T}q(t)dt ,其中的积分恰等于图1中三角形A的面积 QT/2 ,因为一个周期的准备费是 c_{1} ,再注意到(1)式,等到一个周期的总费用为

\bar{C}=c_{1}+c_{2}QT/2=c_{1}+c_{2}rT^{2}/2 

                                 (2)

于是每天的费用为:

C(T)=\bar{C}/T=c_{1}/T+c_{2}rT/2

                    (3)

(3)式为这个优化模型的目标函数。


模型求解

求 T 使得(3)式的 C 最小,容易得到

T=\sqrt{\frac{2c_{1}}{c_{2}r}}

                                          (4)

代入(1)式可得

Q=\sqrt{\frac{2c_{1}r}{c_{2}}}

              (5)

由(3)式算出最小的总费用为

C=\sqrt{​{2c_{1}}{c_{2}r}}

                                                          (6)

(4)、(5)式是经济学中著名的经济订货批量公式(EOQ公式)


结果解释

        由(4)、(5)式可以看到,当准备费 c_{1} 增加时,生产周期和产量都变得大;当贮存费 c_{2} 增加时,生产周期和产量都变得小;当需求量 r 增加时,生产周期变小而产量变大。这些定性结果都是符合常识的。

        用得到的模型计算开始的问题:以 c_{1}=5000,c_{2}=1,r=100 代入(4)(6)式可得到T=10 天,C=1000 元,这里得到的 C 与之前计算的 C=950 有微小的误差的原因来自于将离散模型简化成连续模型,当各变量取较大数值时,误差会越来越小。


敏感性分析

讨论参数 c_{1},c_{2},r 有微小变化时对生产周期 T 的影响。

用相对该变量衡量结果对参数的敏感程度,T 对 c_{1} 的敏感度记作 S(T,c_{1}),定义为

S(T,c_{1})=\frac{\Delta T/T}{\Delta c_{1}/c_{1}}\approx \frac{dT}{dc_{1}}\frac{c_{1}}{T}

(7)

由(4)式容易得到 S(T,c_{1})=1/2 . 类似的可得到 S(T,c_{2})=-1/2S(T,r)=-1/2.

即 c_{1} 增加1%,T 增加0.5%,而 c_{2} 或 r 增加1%,T 减少0.5%。 参数 c_{1},c_{2},r 有微小变化时对生产周期 T 的影响是很小的。


允许缺货 存储模型

        在某些情况下用户允许短时间的缺货,虽然这会造成一定的损失,但是如果损失费不超过不允许缺货导致的准备费和贮存费的话,允许缺货模型就应该是可以采取的策略。


模型假设

下面讨论一种简单的允许缺货模型:不允许缺货模型的假设1,2不变,假设3改为:

  1. 产品每天的需求量为常数 r.
  2. 每次生产准备费 c_{1} ,每天每件产品的贮存费 c_{2} .
  3. 生产能力为无限大(相对于需求量),允许缺货,每天每件产品缺货损失费为c_{3},但缺货数量在需在下次生产(或订货)时补足。

模型建立

因贮存量不足时造成缺货时,可认为贮存量函数 q(t) 为负值,如图2.周期仍记作 T , Q 是每周期初的贮存量,当 t=T_{1} 时 q(t)=0 ,于是有

Q=rT_{1}

(8)

图2 允许缺货模型的贮存量q(t)

T_{1} 到 T 这段缺货时段内需求率 r 不变,q(t) 按原斜率继续下降。由于规定缺货量需补足,所以在 t=T 时数量为 R 的产品立即到达,使下周初的贮存量恢复到 Q

与建立不允许缺货模型时类似,一个周期内的贮存费是 c_{2} 乘以图二三角形A的面积,缺货损失费则是 c_{3} 乘以图2中三角形B的面积。计算这两块面积,并加上准备费 c_{1} ,得到一个周期内的总费用为

\bar{C}=c_{1}+c_{2}QT_{1}/2+c_{3}r(T-T_{1})^2/2

(9)

利用(8)式将模型的目标函数——每天的平均费用——记作 T 和 Q 的二元函数 

C(T,Q)=\frac{c_{1}}{T}+\frac{c_{2}Q^2}{2rT}+\frac{c_{3}r(T-T_{1})^2}{2rT}

(10)


模型求解

利用微分法求 T 和 Q 使 C(T,Q) 最小,令  \frac{\partial C}{\partial T}=0,\frac{\partial C}{\partial Q}=0 可得(区分不允许缺货,最优解记作 {T}'{Q}'

{T}'=\sqrt{\frac{2c_{1}}{c_{2}r}\frac{c_{2}+c_{3}}{c_{3}}}{Q}'=\sqrt{\frac{2c_{1}r}{c_{2}}\frac{c_{3}}{c_{2}+c_{3}}}

(11)

注意到每个周期的供货量 R=r{T}',有

 R=\sqrt{\frac{2c_{1}r}{c_{2}}\frac{c_{2}+c_{3}}{c_{3}}}

(12)

\lambda =\sqrt{\frac{c_{2}+c_{3}}{c_{3}}}

(13)

与不允许缺货模型(3)(4)比较不难得到

{T}'=\lambda T , {Q}'=Q/\lambda , R=\lambda Q

(14)


结果解释

由(13)式,\lambda>1,故(14)式给出 {T}'> T , {Q}'<Q , R> Q ,即允许缺货时周期及供货量的增加,周期初的贮存量减少,缺货损失费 c_{3} 越大(相对于贮存费 c_{2}),\lambda 越小,{T}'越接近 T{Q}'R 越接近 Q 。

特别的当 c_{3}\rightarrow \infty 时 \lambda\rightarrow 1,于是 {T}'\rightarrow T{Q}'\rightarrow QR\rightarrow Q缺货损失费 c_{3} 为无限大即是缺货的代价无限大,即可认为是第一种情况——不允许缺货存储模型。

由此可知不允许缺货模型可视作允许缺货模型的特例。


模型拓展

1)若在存贮模型中增加购买货物本身的费用,重新确定的最优订货周期和订货批量与原来保持一致,不论可否允许缺货,在(3)(10)两式只多了成本这个常数,不影响最值。
2)模型可拓展为生产销售模型,即开始的一段时间一边生产一边销售,后一段时间只销售不生产,(设第两阶段从T0开始,销售速率为r,生产速率为k)


参考文献:姜启源 《数学模型》(第四版)

这篇关于【从零开始数学建模(2)】简单优化-存贮模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/302101

相关文章

从原理到实战解析Java Stream 的并行流性能优化

《从原理到实战解析JavaStream的并行流性能优化》本文给大家介绍JavaStream的并行流性能优化:从原理到实战的全攻略,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的... 目录一、并行流的核心原理与适用场景二、性能优化的核心策略1. 合理设置并行度:打破默认阈值2. 避免装箱

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

Java实现复杂查询优化的7个技巧小结

《Java实现复杂查询优化的7个技巧小结》在Java项目中,复杂查询是开发者面临的“硬骨头”,本文将通过7个实战技巧,结合代码示例和性能对比,手把手教你如何让复杂查询变得优雅,大家可以根据需求进行选择... 目录一、复杂查询的痛点:为何你的代码“又臭又长”1.1冗余变量与中间状态1.2重复查询与性能陷阱1.

Python内存优化的实战技巧分享

《Python内存优化的实战技巧分享》Python作为一门解释型语言,虽然在开发效率上有着显著优势,但在执行效率方面往往被诟病,然而,通过合理的内存优化策略,我们可以让Python程序的运行速度提升3... 目录前言python内存管理机制引用计数机制垃圾回收机制内存泄漏的常见原因1. 循环引用2. 全局变

Python多线程应用中的卡死问题优化方案指南

《Python多线程应用中的卡死问题优化方案指南》在利用Python语言开发某查询软件时,遇到了点击搜索按钮后软件卡死的问题,本文将简单分析一下出现的原因以及对应的优化方案,希望对大家有所帮助... 目录问题描述优化方案1. 网络请求优化2. 多线程架构优化3. 全局异常处理4. 配置管理优化优化效果1.

MySQL中优化CPU使用的详细指南

《MySQL中优化CPU使用的详细指南》优化MySQL的CPU使用可以显著提高数据库的性能和响应时间,本文为大家整理了一些优化CPU使用的方法,大家可以根据需要进行选择... 目录一、优化查询和索引1.1 优化查询语句1.2 创建和优化索引1.3 避免全表扫描二、调整mysql配置参数2.1 调整线程数2.

python连接sqlite3简单用法完整例子

《python连接sqlite3简单用法完整例子》SQLite3是一个内置的Python模块,可以通过Python的标准库轻松地使用,无需进行额外安装和配置,:本文主要介绍python连接sqli... 目录1. 连接到数据库2. 创建游标对象3. 创建表4. 插入数据5. 查询数据6. 更新数据7. 删除

Jenkins的安装与简单配置过程

《Jenkins的安装与简单配置过程》本文简述Jenkins在CentOS7.3上安装流程,包括Java环境配置、RPM包安装、修改JENKINS_HOME路径及权限、启动服务、插件安装与系统管理设置... 目录www.chinasem.cnJenkins安装访问并配置JenkinsJenkins配置邮件通知

深入解析Java NIO在高并发场景下的性能优化实践指南

《深入解析JavaNIO在高并发场景下的性能优化实践指南》随着互联网业务不断演进,对高并发、低延时网络服务的需求日益增长,本文将深入解析JavaNIO在高并发场景下的性能优化方法,希望对大家有所帮助... 目录简介一、技术背景与应用场景二、核心原理深入分析2.1 Selector多路复用2.2 Buffer