2022年全国大学生数学建模竞赛E题目-小批量物料生产安排详解+思路+Python代码时序预测模型(四)

简介: 2022年全国大学生数学建模竞赛E题目-小批量物料生产安排详解+思路+Python代码时序预测模型(四)

前言


我们直接开始主题吧,这篇文章直接解决第二问和第三问,将所有思路和做法都提供给各位参考!!!


实在太累了这几天都是2点睡觉啊喂,思路都是开源没收一分钱!!只希望各位以后遇到建模比赛可以艾特认识一下我,我可以提供免费的思路和部分源码,最近CSDN上也有很多活动和比赛可以带着大家做一做,有兴趣的小伙伴加我微信就好了。好了时间紧迫我们立即开始!


一、问题一再梳理


根据我的前三篇思路和部门代码,都讲解的非常清楚了,给的思路也十分清晰。我们根据不同的指标确定了相应的权重,经过权重计算得到了相应的分值从而挑选出前六个物料编码。我们根据思维导图梳理一下:


7588406ac24942508963acd4b6ee7768.jpg


那么如果我们顺利的完成了问题一,手下就应该有如下资源:


  • 周时序预测模型以及公式
  • 1-177周六种物料需求数据集
  • 第二问给出的物料第 101~110 周的生产计划、实际需求、库存、缺货量及服务水平


二、问题二具体思路


1.题意理解


根据第二题题意分析,我们得到需要我们设计一种制定生产计划的方法,使得平均服务水平不低于 85%。从第 101 周开始,在每周初,制定本周的 物料生产计划,安排生产,直至第 177 周为止。


假设:本周计划生产的物料,只能在下周及以后使用。为便于统一计算结果, 进一步假设第 100 周末的库存量和缺货量均为零,第 100 周的生产计划数恰好等于第 101 周的 实际需求数。


2.具体分析


首先可以确定一点


需求


需求就是设计一个方案,说明清楚,以及两张表格。


时间范围


选定的 6 种物料的全部计算结果(第 101 ∼ 177 周)


条件


1.平均服务水平不低于 85%。

平均服务水平计算公式:


27f6643e29324cc9b491ccd27a109eaa.png

2.在制定本周的生产计划时,可以使用任何历史数据、需求特征以及预测数据,但不能 使用本周及本周以后的实际需求数据。也就是说假设我们在指定第101周的生产计划时,不能用101周以后的数据来使用,只能用101周之前的数据,也就是只能用历史数据来跑结果。


3.解题思路


问题二很明显就是明摆着让你使用第一问的预测模型,对其做出总结,引入限定条件检验真值效果而已。很多小伙伴说采取动态规划或者是使用机器学习仿真来研究写出,若是这些方法脱离了你第一问的建模成果,那么又得重新建模,这显然不是出题老师想要的结果。总得来说就是对你第一问的时序预测模型的一个总体估量。


这里不知道大家也没有了解过移动平均法,这里主要就是出仓与入仓的营销策略,在量化分析中此问题十分常见,给大家补充一个知识点:


时间序列法并不属于机器学习而是统计分析法,供预测用的历史数据资料有的变化表现出比较强的规律性,由于它过去的变动趋势将会连续到未来,这样就可以直接利用过去的变动趋势预测未来。但多数的历史数据由于受偶然性因素的影响,其变化不太规则。利用这些资料时,要消除偶然性因素的影响,把时间序列作为随机变量序列,采用算术平均、加权平均和指数平均等来减少偶然因素,提高预测的准确性。


时序特性


那么基于此类时序数据我们可以发现此类数据一般用于这下面四种特性:

1.长期趋势(Trend)


2.季节变化(Season)


3.循环波动(Cyclic)


4.不规则波动(Irregular)


四种影响因素通常有两种组合方式:


一种是加法模型:Y=T+S+C+I,认为数据的发展趋势是4种影响因素相互叠加的结果


一种是乘法模型:Y=T*S*C*I,认为数据的发展趋势是4种因素相互综合的结果


那么只要我们能够保持在并不需要此物料的周数能够一直生存囤积物料,到下一次需求量来临的时候保证服务水平>85%就好了。这才是关键所在。


固我们只需要使用历史数据进行时序预测滑动到想要的时间窗口就OK了,能够保证在没有需求的空缺周数积累的库存满足下一次需求即可。


十分注意!!!


这里有很多同学遗漏了一点,时间序列并不是连续的,而是离散时序数据,而其他空缺时间的需求全为零!!需要一并考虑再进行时序预测。


第二点就是平滑预测窗口最好尽可能的小,每期数据所包含的信息量不一样,近期数据包含着更多关于未来情况的信心。因此,把各期数据等同看待是不尽合理的,应考虑各期数据的重要性,对近期数据给予较大的权重,这就是加权移动平均法的基本思想。


这里附上完成表格和预测图表:


ff947b79f02941879d9d02b8d32d61db.png



b8033891854e46b6a3702b78ba5c7f7a.png

37363c26f7744f868bf353dfd6b0b66d.png



5acaa99b536a49e4a19559e824c46a6a.png

071bd1a43ca843c5b581132755dca135.png

以此平滑得到服务水平高于85%即可完成第二问。


三、问题三具体思路


细心建模的小伙伴肯定会注意了,既然你第二问只限定了我服务水平高于85%。那么我就每周都生成很多物料,那岂不是平均服务水平全是100%了?


这点问题出题老师怎么可能没有想到,所以根据第二问的解答流程,顺势提出了第三问了:


1.题意理解


考虑到物料的价格,物料的库存需要占用资金。在库存量与服务水平之间达到某种平衡,调整现有的周生产计划。请根据新的周生产计划,对问题 1 选 定的 6 种物料重新计算,并将全部计算结果以表 1 的形式输出。


2.具体分析


想必大家看我文章一步一步应该不难发现,题目难度正在逐渐增大,现在我们就需要考虑这个成本问题了。题目之间都是相互关联的,没有说哪一问是单独拿出来就可以解答的,第三问解答的基础必须依赖第一问和第二问的基础,数学建模比赛问题向来如此!


这里需求和条件与第二问类似只不过条件不同而已


条件


1.平均服务水平不低于 85%。

平均服务水平计算公式:

27f6643e29324cc9b491ccd27a109eaa.png


2.在制定本周的生产计划时,可以使用任何历史数据、需求特征以及预测数据,但不能 使用本周及本周以后的实际需求数据。也就是说假设我们在指定第101周的生产计划时,不能用101周以后的数据来使用,只能用101周之前的数据,也就是只能用历史数据来跑结果。


3.库存量与服务水平比值阈值确定


首先我们知道物料去买是需要成本的,根据相应的销售单价和需求量,我们根据每周的生产计划都需要去购买相应的物料。也就是说我们第一问求出的销售单价融合指标,需求额度终于可以派上用场了。


3.解题思路


首先我们仍然还是使用的第二问的模型,其实第三问相当于对于第二问的模型进行一个优化,使其得到一个更符合实际效益的模型。首先一点我们根据第二问预测出来的数据是可用的,但是存在一个最优性的问题:


那就是我们可以根据服务水平的大小去动态的更改每周的生产量,这里需要确定一个较优的阈值进行判断。


也就是说服务水平保持在较高的水平,我们可以适当调低生产计划。

当服务水平保持在较低的水平,我们可以适当提高生产计划。

在这个条件下,我们还需要保持服务水平高于85%


那么我们可设服务水平为\alpha,生产计划为gif.gifgif.gif的范围始终保持在[85%,100%]中,而上一个服务水平序列我们可以设置为gif.gif我们可以去挖掘上一个gif.gif与下一个gif.gif\的关系,使其与保持一个gif.gif动态平衡。由此得到新的方案

这里展示一下修正效果图:

e6e4a22111024941bcc2df6f677f1f9a.png

目录
相关文章
|
22天前
|
存储 缓存 Java
Python高性能编程:五种核心优化技术的原理与Python代码
Python在高性能应用场景中常因执行速度不及C、C++等编译型语言而受质疑,但通过合理利用标准库的优化特性,如`__slots__`机制、列表推导式、`@lru_cache`装饰器和生成器等,可以显著提升代码效率。本文详细介绍了这些实用的性能优化技术,帮助开发者在不牺牲代码质量的前提下提高程序性能。实验数据表明,这些优化方法能在内存使用和计算效率方面带来显著改进,适用于大规模数据处理、递归计算等场景。
58 5
Python高性能编程:五种核心优化技术的原理与Python代码
|
2月前
|
Python
课程设计项目之基于Python实现围棋游戏代码
游戏进去默认为九路玩法,当然也可以选择十三路或是十九路玩法 使用pycharam打开项目,pip安装模块并引用,然后运行即可, 代码每行都有详细的注释,可以做课程设计或者毕业设计项目参考
78 33
|
9月前
|
算法 编译器 开发者
如何提高Python代码的性能:优化技巧与实践
本文探讨了如何提高Python代码的性能,重点介绍了一些优化技巧与实践方法。通过使用适当的数据结构、算法和编程范式,以及利用Python内置的性能优化工具,可以有效地提升Python程序的执行效率,从而提升整体应用性能。本文将针对不同场景和需求,分享一些实用的优化技巧,并通过示例代码和性能测试结果加以说明。
|
5月前
|
人工智能 数据挖掘 数据处理
揭秘Python编程之美:从基础到进阶的代码实践之旅
【9月更文挑战第14天】本文将带领读者深入探索Python编程语言的魅力所在。通过简明扼要的示例,我们将揭示Python如何简化复杂问题,提升编程效率。无论你是初学者还是有一定经验的开发者,这篇文章都将为你打开一扇通往高效编码世界的大门。让我们开始这段充满智慧和乐趣的Python编程之旅吧!
|
3月前
|
机器学习/深度学习 数据采集 人工智能
探索机器学习:从理论到Python代码实践
【10月更文挑战第36天】本文将深入浅出地介绍机器学习的基本概念、主要算法及其在Python中的实现。我们将通过实际案例,展示如何使用scikit-learn库进行数据预处理、模型选择和参数调优。无论你是初学者还是有一定基础的开发者,都能从中获得启发和实践指导。
88 2
|
4月前
|
大数据 Python
Python 高级编程:深入探索高级代码实践
本文深入探讨了Python的四大高级特性:装饰器、生成器、上下文管理器及并发与并行编程。通过装饰器,我们能够在不改动原函数的基础上增添功能;生成器允许按需生成值,优化处理大数据;上下文管理器确保资源被妥善管理和释放;多线程等技术则助力高效完成并发任务。本文通过具体代码实例详细解析这些特性的应用方法,帮助读者提升Python编程水平。
205 5
|
6月前
|
机器学习/深度学习 Python
时间序列特征提取:从理论到Python代码实践
时间序列是一种特殊的存在。这意味着你对表格数据或图像进行的许多转换/操作/处理技术对于时间序列来说可能根本不起作用。
105 1
时间序列特征提取:从理论到Python代码实践
|
4月前
|
数据采集 机器学习/深度学习 数据处理
Python编程之魔法:从基础到进阶的代码实践
在编程的世界里,Python以其简洁和易读性而闻名。本文将通过一系列精选的代码示例,引导你从Python的基础语法出发,逐步探索更深层次的应用,包括数据处理、网络爬虫、自动化脚本以及机器学习模型的构建。每个例子都将是一次新的发现,带你领略Python编程的魅力。无论你是初学者还是希望提升技能的开发者,这些示例都将是你的宝贵财富。让我们开始这段Python编程之旅,一起揭开它的魔法面纱。
|
6月前
|
数据采集 数据可视化 数据挖掘
使用Python进行数据分析的新手指南深入浅出操作系统:从理论到代码实践
【8月更文挑战第30天】在数据驱动的世界中,掌握数据分析技能变得越来越重要。本文将引导你通过Python这门强大的编程语言来探索数据分析的世界。我们将从安装必要的软件包开始,逐步学习如何导入和清洗数据,以及如何使用Pandas库进行数据操作。文章最后会介绍如何使用Matplotlib和Seaborn库来绘制数据图表,帮助你以视觉方式理解数据。无论你是编程新手还是有经验的开发者,这篇文章都将为你打开数据分析的大门。
|
5月前
|
机器学习/深度学习 人工智能 算法
探索人工智能:机器学习的基本原理与Python代码实践
【9月更文挑战第6天】本文深入探讨了人工智能领域中的机器学习技术,旨在通过简明的语言和实际的编码示例,为初学者提供一条清晰的学习路径。文章不仅阐述了机器学习的基本概念、主要算法及其应用场景,还通过Python语言展示了如何实现一个简单的线性回归模型。此外,本文还讨论了机器学习面临的挑战和未来发展趋势,以期激发读者对这一前沿技术的兴趣和思考。

热门文章

最新文章