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

相关文章

小白也能轻松上手! 路由器设置优化指南

《小白也能轻松上手!路由器设置优化指南》在日常生活中,我们常常会遇到WiFi网速慢的问题,这主要受到三个方面的影响,首要原因是WiFi产品的配置优化不合理,其次是硬件性能的不足,以及宽带线路本身的质... 在数字化时代,网络已成为生活必需品,追剧、游戏、办公、学习都离不开稳定高速的网络。但很多人面对新路由器

Java中使用 @Builder 注解的简单示例

《Java中使用@Builder注解的简单示例》@Builder简化构建但存在复杂性,需配合其他注解,导致可变性、抽象类型处理难题,链式编程非最佳实践,适合长期对象,避免与@Data混用,改用@G... 目录一、案例二、不足之处大多数同学使用 @Builder 无非就是为了链式编程,然而 @Builder

MySQL深分页进行性能优化的常见方法

《MySQL深分页进行性能优化的常见方法》在Web应用中,分页查询是数据库操作中的常见需求,然而,在面对大型数据集时,深分页(deeppagination)却成为了性能优化的一个挑战,在本文中,我们将... 目录引言:深分页,真的只是“翻页慢”那么简单吗?一、背景介绍二、深分页的性能问题三、业务场景分析四、

Linux进程CPU绑定优化与实践过程

《Linux进程CPU绑定优化与实践过程》Linux支持进程绑定至特定CPU核心,通过sched_setaffinity系统调用和taskset工具实现,优化缓存效率与上下文切换,提升多核计算性能,适... 目录1. 多核处理器及并行计算概念1.1 多核处理器架构概述1.2 并行计算的含义及重要性1.3 并

MyBatisPlus如何优化千万级数据的CRUD

《MyBatisPlus如何优化千万级数据的CRUD》最近负责的一个项目,数据库表量级破千万,每次执行CRUD都像走钢丝,稍有不慎就引起数据库报警,本文就结合这个项目的实战经验,聊聊MyBatisPl... 目录背景一、MyBATis Plus 简介二、千万级数据的挑战三、优化 CRUD 的关键策略1. 查

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构

C/C++ chrono简单使用场景示例详解

《C/C++chrono简单使用场景示例详解》:本文主要介绍C/C++chrono简单使用场景示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录chrono使用场景举例1 输出格式化字符串chrono使用场景China编程举例1 输出格式化字符串示

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

SpringBoot整合Sa-Token实现RBAC权限模型的过程解析

《SpringBoot整合Sa-Token实现RBAC权限模型的过程解析》:本文主要介绍SpringBoot整合Sa-Token实现RBAC权限模型的过程解析,本文给大家介绍的非常详细,对大家的学... 目录前言一、基础概念1.1 RBAC模型核心概念1.2 Sa-Token核心功能1.3 环境准备二、表结

windows和Linux安装Jmeter与简单使用方式

《windows和Linux安装Jmeter与简单使用方式》:本文主要介绍windows和Linux安装Jmeter与简单使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows和linux安装Jmeter与简单使用一、下载安装包二、JDK安装1.windows设