2023年MathorCup高校数学建模挑战赛—大数据竞赛B题电商零售商家需求预测及库存优化问题求解全过程文档及程序

2023年MathorCup高校数学建模挑战赛—大数据竞赛

B题 电商零售商家需求预测及库存优化问题

原题再现:

  电商平台存在着上千个商家,他们会将商品货物放在电商配套的仓库,电商平台会对这些货物进行统一管理。通过科学的管理手段和智能决策,大数据智能驱动的供应链可以显著降低库存成本,同时保证商品的按时履约。一般来说,以上供应链优化问题会包含以下方面:
              需求预测
  预测往往是智能供应链的决策基础,它可以让管理者提前预知各地的需求,从而将库存提前放在靠近需求的仓库中,此时的预测任务为:根据历史一段时间的需求量,预测各仓库中各商品未来需求,“预测维度”即为不同商家在各仓库中存放的各种商品每天的数量。一般来说,企业会首先根据数据的历史情况,分析出需求量序列的数理特征,对相似的需求量序列进行归类,并根据分类结果做到更加精准的预测。预测准确率有很多评价指标,较常用的指标为1-wmape,定义如下:
在这里插入图片描述
  其中yi为第i个序列(商家在各仓库中存放的各种商品每天的数量)的
真实需求量,yi^为第i个序列的预测需求量。然而,在实际的电商供应链预测任务中,常常会出现多种不同的问题。例如,部分商品的销售时间过短、仓库存在新增或切换等情况,导致该预测维度下历史数据过少;另外,部分大型促销期间货量的陡增并由此带来的不规律性,也给需求量的精准预测带来了不小的难度。此时便需要通过算法得到历史一般规律,找出相似的历史情况(如相似的仓或商品),从而实现精准预测。库存优化
  为了有效管理库存水平,企业通常会制定各种库存策略来控制商品的
补货频次和补货量。定期盘点库存策略(s,S)是一种常见的库存策略,其中s 表示该种策略下的库存下限,S为库存上限。在这种策略中,企业会每隔一段固定时间查看库存水平,盘点之间的间隔设为盘点周期(NRT)。如果在盘点时库存水平T低于最小库存水平s,则会将库存补充至S,此时的补货量Q=S−T,如果在盘点时库存水平高于s,则不进行补充,直到下一次库存盘点。同时需要考虑到,在每次发起补货后,补充的货物会经过一定时间后才能到达当前仓库,这个时间间隔为提前期(LT)。
  使用以上的库存策略,管理者需要对两个方面进行权衡取舍。一方面,为了及时满足用户订单,公司需要保有大量库存以防止缺货;另一方面,库存水位升高带来了过高的库存成本。库存优化的目标主要为:
  1)降低库存总持有成本,可由单位持有成本h得到(一件商品存储一
天产生的成本);
  2)满足服务水平:确保有足够的产品可以及时满足客户需求,降低总缺货成本,可由缺货成本得到(每天每缺一件商品产生的成本);
  3)降低库存周转天数:库存周转天数越小,表示库存的流动性越好,企业的库存管理效率越高。服务水平及库存周转天数计算公式为:
在这里插入图片描述
  现有一张电商零售商家的历史出货量表(附件1),给出了历史6个月各商家存放在电商不同仓库的商品每天的出货量。假设该出货量即为历史各商品在各仓库的需求量。同时,还可以取到各商品、商家、仓库的信息(附件2-4),例如分类、品牌、生效日期等,这些信息的选择和引入会帮助更好的预测并管理供应链中的库存。
  初赛问题:
  问题一:使用附件1-4中的数据,预测出各商家在各仓库的商品2023-05-16 至 2023-05-30 的需求量,请将预测结果填写在结果表1并上传至竞赛平台,并对你们模型的预测性能进行评价。另外请讨论:根据数据分析及建模过程,这些由商家、仓库、商品形成的时间序列如何分类,使同一类别在需求上的特征最为相似?
  问题二:现有一些新出现的商家+仓库+商品维度(附件5),导致这种情况出现的原因可能是新上市的商品,或是改变了某些商品所存放的仓库。请讨论这些新出现的预测维度如何通过历史附件1中的数据进行参考,找到相似序列并完成这些维度在2023-05-16至2023-05-30的预测值。请把预测结果填写在结果表2,并上传至竞赛平台。
  问题三:每年6月会出现规律性的大型促销,为需求量的精准预测以及履约带来了很大的挑战。附件6给出了附件1对应的商家+仓库+商品维度在去年双十一期间的需求量数据,请参考这些数据,给出2023-06-01至2023-06-20 的预测值。请把预测结果填写在结果表3,并上传至竞赛平台。注:结果表1-3打包一个压缩包,“结果表.zip”,提交zip文件到竞赛系统中。
在这里插入图片描述
在这里插入图片描述

整体求解过程概述(摘要)

  可靠的用户需求量预测,对电商平台各商家对仓库、商品的管理和决策非常重要。本文对于商家、仓库、产品在时间序列上的需求量进行分析及预测,针对不同情况得到不同情况下的需求量预测情况。
  针对问题一,本文首先对于数据进行预处理,对于附件1中的商家、仓库、产品的编号进行组合合并成1996种,如29-1-915为一个组合并在后文统称组合,通过可视化图表发现“双12”购物节和春节时间段各商品的需求量出现明显与平时期间异常的波动,因此对于这部分时间进行剔除,预测所采用的需求量数据从2023年2月1日开始到2023年5月15日。针对预处理之后的数据,本文采用ARIMA时间序列和LSTM两种方法对组合2023年5月16日到5月30日的需求量进行预测,其中ARIMA时间序列本文通过python语言设置循环语句用AIC准则选取最小的AIC得到所需的p、d、q值进行预测,LSTM采用MATLAB编程实现LSTM时间序列预测,两个方法算出来的平均1-wmape分别为:0.7628、0.8344。通过1-wmape的值对两种方法进行赋权相加得到最终结果。对于聚类本文使用K–means聚类按照不同的聚类标准,将1996 个组合分别聚成4类和5类,并运用主成分分析法(PCA)降维实现可视化效果。
  针对问题二,本文同样对于附件5中提供的新维度的数据进行组合,附件5中的新组合共有210个,再将附件5中的新组合按照出现的时间分为5类,其中4月1日到4月5日出现的组合为一类,以此类推,其中每组分别含有66、29、57、42、16个组合,再分别对每组的组合与附件1中的组合计算Spearman相关系数,找到相关性最高的组合且P值小于0.05,如附件5中的组合14-21-239对应附件1中的组合35-53-1423,其 Spearman 相关系数为 0.8685 且P 值为3.83E-13 远小于0.05,每个附件5中的组合都在附件1中找到与之对应的相关性最强的组合,再将附件5中每个组合的数据带入问题一中已经训练完的LSTM和ARIMA时间序列方程中得到附件5中新组合在2023年5月15日到2023年5月30的需求量预测值,预测结果详见附录。
  针对问题三,本文对于附件6数据进行组合共有1957个组合,再通过对于数据的可视化处理发现用户在11月1日到11月11日的需求量出现先上升后下降在上升的整体趋势,结合各店商在“双11”的促销安排,可以大致将“双11”购物节分为三个阶段:开门红、品类日&主题日、高峰期&狂欢日。本文对于“618”期间的个组合预测分为两步,即正常预测与引入购物节因子(品类因子、地区因子),因此首先对于“618”期间各组合的需求量通过ARIMA时间序列与LSTM赋权相加进行如平时期间相同的预测,第二步再计算各一级分类商品在“双11”期间的品类因子,如宠物生活在“双11”中每天的品类因子即为1.0482,1.4386,1.8240,1.4737等等,再计算各地区在“双11”期间的地区因子,如东北地区在“双11”中每天的地区因子为2.3006,2.0367,1.6779,1.6252 等等,通过“双11”购物节的购物节因子按照分成的三个阶段进行线性插值得到“618”期间的品类因子和地区因子。通过ARIMA时间序列和LSTM赋权相加的预测结果结合两种因子的约束条件,得到“618”期间需求量预测值,预测结果详见附录。

模型假设:

  1.假设一:不计附件以外其他因素对各类商品、商家、仓库的信息的影响。
  2.假设二:附件所给数据真实有效且能够全面反映真实情况,不存在数据漏记重复记录等数据收集问题。
  3.假设三:数据是有关联的,学习数据可反映预测数据的潜在规律,不存在不同时段之间出货量完全不相关的情况。

问题分析:

  问题一的分析
  针对问题一,需要首先对附件中数据进行预处理,本文选择将附件1中的商家、仓库、产品三个编码进行合并作为组合,并将需求量波动强烈的“双12”和春节期间的数据当做异常值去除,为保证需求量的精准预测并且将长期需求量为0的组合进行剔除。本文对剩下的组合采用ARIMA时间序列预测与LSTM时间序列预测相结合的方法进行预测,并通过1-wmape指标对其进行评价,通过该评价指标的值对两种预测方法进行赋权,将两种方法相结合得出预测结果。对于聚类问题,本文从两个方向选择聚类指标:第一方面是各组合的需求量序列的实力特征指标,第二方面是各组合本身的性质特征(附件2-4中商家、仓库、产品的信息)。运用主成分分析法对多维指标进行降维处理,再通过降维数据采用k-means聚类方法,进行聚类,得到聚类结果。

  问题二的分析
  针对问题二,本文首先对于附件5中的数据如问题一一样进行上、仓库、产品三个编码进行合并作为新组合,并将附件5中的组合按照出现时间分为5类,如4月1日-4 月5日出现的组合作为1类,通过分别对5类新组合和附件1中组合在共有的时间序列上的需求量进行Spearman相关系数的计算,对附件5中每一个新组合找到附件1中对应的组合使得这两个组合之间Spearman相关系数最大并且p值小于0.05.再利用附件1中的组合在问题一中已得到的ARIMA时间序列模型得到的方程和LSTM得到的训练结果带入附件5中给的数据,对附件5中新组合进行预测得到结果。

  问题三的分析
  针对问题三,首先对于双11期间的每天商品的需求量及进行可视化展示,根据各电商平台“双11”促销时间表和可视化结果,把“双11”期间分为三个阶段:开门红、品类日&主题日、狂欢日&高峰期;并针对不同一级分类的商品计算“双11期间”的品类因子,针对不同地区的商品计算“双11”期间的地区因子。本文对于“618”期间各组合的需求量预测分为两步:第一步是通过ARIMA时间序列和LSTM赋权方法(同问题一)进行6月1日至6月20日无购物节的需求情况预测,第二步则是将“双11”中的品类因子和地区因子引入到“618”期间的各组合预测中,通过这两步得到“618”期间各组合的需求量预测情况。

模型的建立与求解整体论文缩略图

在这里插入图片描述
在这里插入图片描述

全部论文及程序请见下方“ 只会建模 QQ名片” 点击QQ名片即可

程序代码:

部分程序如下:
import pandas as pdimportnumpyasnpimportmatplotlib.pyplotasplt%matplotlibinlineimportseabornassnsfromdatetimeimportdatetimepd.options.display.float_format='{:.2f}'.formatfromitertoolsimportcombinationsfromsklearn.metricsimportmean_absolute_errorfromsklearn.metricsimportmean_squared_errorfromstatsmodels.tsa.stattoolsimportadfullerfromstatsmodels.tsa.stattoolsimportacf,pacffromstatsmodels.tsa.arima_modelimportARIMAasARIMAimportstatsmodels.apiassmimportstatsmodels.tsa.apiassmtdf=pd.read_excel('E:/competition/附件1label.xlsx')df=df.Tdf=df.set_axis(df.iloc[0],axis=1,inplace=False)df=df.drop(df.index[0])dfdeftest_stationarity(timeseries):#DetermingrollingstatisticsMA=timeseries.rolling(window=12).mean()MSTD=timeseries.rolling(window=12).std()#Plotrollingstatistics:plt.figure(figsize=(15,5))orig=plt.plot(timeseries,color='blue',label='Original')mean=plt.plot(MA,color='red',label='RollingMean')std=plt.plot(MSTD,color='black',label='RollingStd')plt.legend(loc='best')plt.title('RollingMean&StandardDeviation')#plt.show(block=False)#PerformDickey-Fullertest:print('ResultsofDickey-FullerTest:')dftest=adfuller(timeseries,autolag='AIC')dfoutput = pd.Series(dftest[0:4], index=['Test Statistic','p-value','#LagsUsed','NumberofObservationsUsed'])forkey,valueindftest[4].items():dfoutput['CriticalValue(%s)'%key]=valueprint(dfoutput)deftsplot(y,lags=None,figsize=(12,7),style='bmh'):ifnotisinstance(y,pd.Series):y=pd.Series(y)withplt.style.context(style):fig=plt.figure(figsize=figsize)layout=(2,2)ts_ax=plt.subplot2grid(layout,(0,0),colspan=2)acf_ax=plt.subplot2grid(layout,(1,0))pacf_ax=plt.subplot2grid(layout,(1,1))y.plot(ax=ts_ax)p_value=sm.tsa.stattools.adfuller(y)[1]ts_ax.set_title('Time Series Analysis Plots\n Dickey-Fuller:p={0:.5f}'.format(p_value))smt.graphics.plot_acf(y,lags=lags,ax=acf_ax)smt.graphics.plot_pacf(y,lags=lags,ax=pacf_ax)plt.tight_layout()
全部论文及程序请见下方“ 只会建模 QQ名片” 点击QQ名片即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/62940.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cocotb pytest

打印python中的print , 应该使用 pytest -s pytest --junitxmltest_report.xml --htmlreport.html

【Linux】进程间关系与守护进程

🌎进程间关系与守护进程 文章目录: 进程间关系与守护进程 进程组     会话       认识会话       会话ID       创建会话 控制终端     作业控制       作业(job)和作业控制(Job Control)       作业号及作业过程…

RuoYi-Vue部署到Linux服务器(Jar+Nginx)

一、本地环境准备 源码下载、本地Jdk及Node.js环境安装,参考以下文章。 附:RuoYi-Vue下载与运行 二、服务器环境准备 1.安装Jdk 附:JDK8下载安装与配置环境变量(linux) 2.安装MySQL 附:MySQL8免安装版下载安装与配置(linux) 3.安装Redis 附:Redis下载安装与配置(…

QT5.14 QML串口助手

基于 QML的 串口调试助手 这个代码有缺失,补了部分代码 ASCII HEX 工程共享, Qt版本 5.14.1 COM_QML 通过百度网盘分享的文件:COM_QML.zip 链接:https://pan.baidu.com/s/1MH2d6gIPDSoaX-syVWZsww?pwd5tge 提取码:…

IOS ARKit进行图像识别

先讲一下基础控涧,资源的话可以留言,抽空我把它传到GitHub上,这里没写收积分,竟然充值才能下载,我下载也要充值,牛! ARSCNView 可以理解画布或者场景 1 配置 ARWorldTrackingConfiguration AR追…

常用排查工具使用

1.spy++ Microsoft Spy++是一个非常好的查看Windows操作系统的窗口、消息、进程、线程信息的工具,简单易用,功能强大。 在vs的工具中默认安装,还可以监控到隐层窗口,通过查看窗口的属性可以获得更多信息,包括规格、窗口、类、进程等信息,可以帮助排查相关窗口的问题。 2…

“Encrypt”属性设置为“true”且 “trustServerCertificate”属性设置为“false”,但驱动程序无法使用安全套接字层 (SSL) 加密与 SQL Server 建立安全

com.microsoft.sqlserver.jdbc.SQLServerException: “Encrypt”属性设置为“true”且 “trustServerCertificate”属性设置为“false”,但驱动程序无法使用安全套接字层 (SSL) 加密与 SQL Server 建立安全连接:错误:PKIX path building failed: sun.security.provi…

【RK3588 Linux 5.x 内核编程】-内核高分辨率定时器

内核高分辨率定时器 文章目录 内核高分辨率定时器1、高分辨率定时器介绍2、高分辨率定时器API2.1 初始化定时器2.2 启动定时器2.3 停止定时器2.4 改变定时器超时时间2.5 定时器状态检查3、驱动实现4、驱动验证在前面的文章中,我们知道了如果在Linux内核中使用定时器。本文将详…

C语言第十五周课——课堂练习

目录 1.输出特定图形 2.求三个数的最小值 3.思考题 1.输出特定图形 要求&#xff1a;输出下面形状在控制台 * * * * * * * * * * * * * * * #include <stdio.h> int main() {int i, j;// 外层循环控制行数for (i 1; i < 5; i){// 内层循环控制每行的星号个数for (…

数据结构 (20)二叉树的遍历与线索化

一、二叉树的遍历 遍历是对树的一种最基本的运算&#xff0c;所谓遍历二叉树&#xff0c;就是按一定的规则和顺序走遍二叉树的所有节点&#xff0c;使每一个节点都被访问一次&#xff0c;而且只被访问一次。二叉树的遍历方式主要有四种&#xff1a;前序遍历、中序遍历、后序遍历…

sscanf与sprintf函数

本期介绍&#x1f356; 主要介绍&#xff1a;sscanf()、sprintf()这对输入/输出函数&#xff0c;并详细讲解了这两个函数的应用场景。 概述&#x1f356; 在C语言的输出和输入库中&#xff0c;有三对及其相似的库函数&#xff1a;printf()、scanf()、fprintf()、fscanf()、spri…

基于链表的基础笔试/面试题

1. 反转链表 问题描述&#xff1a;反转一个单向链表。 示例&#xff1a; 输入&#xff1a;1 → 2 → 3 → 4 → 5 输出&#xff1a;5 → 4 → 3 → 2 → 1 class ListNode {int val;ListNode next;ListNode(int x) {val x;} }public class LinkedList {public ListNode …

[高等数学学习记录] 泰勒公式

1 知识点 1.1 要求 为简化计算, 通常用多项式近似表达复杂函数: 设函数 f ( x ) f(x) f(x) 在含有 x 0 x_0 x0​ 的开区间内具有 ( n 1 ) (n1) (n1) 阶导数, 试找出一个关于 ( x − x 0 ) (x-x_0) (x−x0​) 的 n n n 次多项式 p n ( x ) p_n(x) pn​(x) 近似表达 f…

Linux条件变量线程池详解

一、条件变量 【互斥量】解决了线程间同步的问题&#xff0c;避免了多线程对同一块临界资源访问产生的冲突&#xff0c;但同一时刻对临界资源的访问&#xff0c;不论是生产者还是消费者&#xff0c;都需要竞争互斥锁&#xff0c;由此也带来了竞争的问题。即生产者和消费者、消费…

【错误记录】jupyter notebook打开后服务器错误Forbidden问题

如题&#xff0c;在Anaconda Prompt里输入jupyter notebook后可以打开浏览器&#xff0c;但打开具体项目后就会显示“服务器错误&#xff1a;Forbidden”&#xff0c;终端出现&#xff1a; tornado.web.HTTPError: HTTP 403: Forbidden 查看jupyter-server和jupyter notebook版…

shodan2-批量查找CVE-2019-0708漏洞

声明&#xff01; 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&#…

PostgreSQL实现透视表查询

PostgreSQL 8.3版本发布时&#xff0c;引入了一个名为tablefunc的新扩展。这个扩展提供了一组非常有趣的函数。其中之一是交叉表函数&#xff0c;用于创建数据透视表。这就是我们将在本文中讨论的内容。 需求说明 解释此函数如何工作的最简单方法是使用带有数据透视表的示例…

使用Tauri创建桌面应用

当前是在 Windows 环境下 1.准备 系统依赖项 Microsoft C 构建工具WebView2 (Windows10 v1803 以上版本不用下载&#xff0c;已经默认安装了) 下载安装 Rust下载安装 Rust 需要重启终端或者系统 重新打开cmd&#xff0c;键入rustc --version&#xff0c;出现 rust 版本号&…

【掩体计划——DFS+缩点】

题目 代码 #include <bits/stdc.h> using namespace std; const int N 1e5 10; vector<vector<int>> g; bool st[N]; int ans 1e9; bool dfs(int f, int u, int dis) {bool is 1;for (auto j : g[u]){if (j f)continue;is & dfs(u, j, dis (g[u].…

第四十四篇 EfficientNetV1、V2模型详解

摘要 EfficientNetV1 详解 简要介绍 EfficientNet是Google提出的一种高效的神经网络架构,其核心思想是通过比例缩放网络的宽度(通道数)、高度和深度(层数)来平衡计算资源和准确性。EfficientNetV1是该系列的首个版本,在提出时便在效果、参数量、速度方面均大幅超越了之…