【从零开始数学建模(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

相关文章

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

SpringBoot首笔交易慢问题排查与优化方案

《SpringBoot首笔交易慢问题排查与优化方案》在我们的微服务项目中,遇到这样的问题:应用启动后,第一笔交易响应耗时高达4、5秒,而后续请求均能在毫秒级完成,这不仅触发监控告警,也极大影响了用户体... 目录问题背景排查步骤1. 日志分析2. 性能工具定位优化方案:提前预热各种资源1. Flowable

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要

Python如何使用__slots__实现节省内存和性能优化

《Python如何使用__slots__实现节省内存和性能优化》你有想过,一个小小的__slots__能让你的Python类内存消耗直接减半吗,没错,今天咱们要聊的就是这个让人眼前一亮的技巧,感兴趣的... 目录背景:内存吃得满满的类__slots__:你的内存管理小助手举个大概的例子:看看效果如何?1.

一文详解SpringBoot响应压缩功能的配置与优化

《一文详解SpringBoot响应压缩功能的配置与优化》SpringBoot的响应压缩功能基于智能协商机制,需同时满足很多条件,本文主要为大家详细介绍了SpringBoot响应压缩功能的配置与优化,需... 目录一、核心工作机制1.1 自动协商触发条件1.2 压缩处理流程二、配置方案详解2.1 基础YAML