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.rhkb.cn/news/481573.html

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

相关文章

前端node.js

一.什么是node.js 官网解释:Node.js 是一个开源的、跨平台的 JavaScript 运行时环境。 二.初步使用node.js 需要区分开的是node.js和javascript互通的只有console和定时器两个API. 三.Buffer Buffer 是一个类似于数组的 对象,用于表示固定长度的字节序列。Buffer…

偏差-方差权衡(Bias–Variance Tradeoff):理解监督学习中的核心问题

偏差-方差权衡(Bias–Variance Tradeoff):理解监督学习中的核心问题 在机器学习中,我们希望构建一个能够在训练数据上表现良好,同时对未见数据也具有强大泛化能力的模型。然而,模型的误差(尤其…

go-zero使用自定义模板实现统一格式的 body 响应

前提 go环境的配置、goctl的安装、go-zero的基本使用默认都会 需求 go-zero框架中,默认使用goctl命令生成的代码并没有统一响应格式,现在使用自定义模板实现统一响应格式: {"code": 0,"msg": "OK","d…

Matlab热力图巅峰之作

准备‘data.xlsx’ 的热力图文件: main: clc; clear; close all; % 相关性气泡热图%% 数据准备 % 读取Excel文件数据 data readmatrix(data.xlsx); % 读取Excel文件中的数据%% 颜色定义 map colormap("cool"); map map([2:6,9:13],1:3)…

时序论文28|CycleNet:通过对周期模式进行建模增强时间序列预测

论文标题:CycleNet: Enhancing Time Series Forecasting through Modeling Periodic Patterns 论文链接:https://arxiv.org/abs/2409.18479v1 代码链接:https://github.com/ACAT-SCUT/CycleNet 前言 这是今年NIPS的一篇时序论文&#xff…

自动化运维(k8s)之微服务信息自动抓取:namespaceName、deploymentName等全解析

前言:公司云原生k8s二开工程师发了一串通用性命令用来查询以下数值,我想着能不能将这命令写成一个自动化脚本。 起初设计的 版本一:开头加一条环境变量,执行脚本后,提示输入:需要查询的命名空间&#xff0c…

如何把产品3D模型放到网站上进行3D展示或3D互动?

要将产品3D模型放到网站上进行3D展示或3D互动,可以按照以下步骤进行: 一、准备3D模型 使用3D建模软件(如3ds Max、Maya、Blender、C4D等)制作好产品的3D模型。 确保3D模型的格式是网站或平台所支持的,常见的格式包括…

ESP32驱动PCM5102A播放SD卡音频

文章目录 简介模块参数功能框图引脚定义通信接口和通信数据格式通信流程引脚接线ESP32和PCM5102AESP32和SD模块 主要代码spi.hSD.hAudio.h实验效果总结 简介 PCM5102A模块是一款立体声DAC模块、音频数模转换器,内部集成了PCM5102芯片。PCM5102芯片是集成了立体声模…

【人工智能】Python常用库-TensorFlow常用方法教程

TensorFlow 是一个广泛应用的开源深度学习框架,支持多种机器学习任务,如深度学习、神经网络、强化学习等。以下是 TensorFlow 的详细教程,涵盖基础使用方法和示例代码。 1. 安装与导入 安装 TensorFlow: pip install tensorflow…

【设计模式系列】解释器模式(十七)

一、什么是解释器模式 解释器模式(Interpreter Pattern)是一种行为型设计模式,它的核心思想是分离实现与解释执行。它用于定义语言的文法规则,并解释执行语言中的表达式。这种模式通常是将每个表达式抽象成一个类,并通…

【查询目录】.NET开源 ORM 框架 SqlSugar 系列

.NET开源 ORM 框架 SqlSugar 系列 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列【Code First】.NET开源 ORM 框架 SqlSugar 系列【数据事务…

设计模式:11、迭代器模式(游标)

目录 0、定义 1、迭代器模式的四种角色 2、迭代器模式的UML类图 3、示例代码 4、迭代器的next()方法与集合的get(int index)方法的效率对比(LinkedList为例) 0、定义 提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象…

Web开发基础学习——通过React示例学习模态对话框

Web开发基础学习系列文章目录 第一章 基础知识学习之通过React组件学习模态对话框 文章目录 Web开发基础学习系列文章目录前言一、创建新的 React 应用二、 创建模态对话框组件三、修改 App.js四、 添加样式五、启动应用六、访问应用总结 前言 模态对话框(Modal D…

Unity XR Interaction Toolkit 开发教程:抓取交互【3.0以上版本】

获取完整课程以及答疑,工程文件下载: https://www.spatialxr.tech/ Unity XR Interaction Toolkit 系统化开发教程:https://www.spatialxr.tech/course/5 视频说明链接:抓取交互课程介绍【全球最新 Unity VR 系统化入门开发教程…

科技为翼 助残向新 高德地图无障碍导航规划突破1.5亿次

今年12月03日是第33个国际残疾人日。在当下科技发展日新月异的时代,如何让残障人士共享科技红利、平等地参与社会生活,成为当前社会关注的热点。 中国有超过8500万残障人士,其中超过2400万为肢残人群,视力障碍残疾人数超过1700万…

OGRE 3D----4. OGRE和QML共享opengl上下文

在现代图形应用开发中,OGRE(Object-Oriented Graphics Rendering Engine)和QML(Qt Modeling Language)都是非常流行的工具。OGRE提供了强大的3D渲染能力,而QML则用于构建灵活的用户界面。在某些应用场景中,我们需要在同一个应用程序中同时使用OGRE和QML,并且共享OpenGL…

YOLOv9改进,YOLOv9引入TransNeXt中的ConvolutionalGLU模块,CVPR2024,二次创新RepNCSPELAN4结构

摘要 由于残差连接中的深度退化效应,许多依赖堆叠层进行信息交换的高效视觉Transformer模型往往无法形成足够的信息混合,导致视觉感知不自然。为了解决这个问题,作者提出了一种聚合注意力(Aggregated Attention),这是一种基于仿生设计的token混合器,模拟了生物的中央凹…

坐标系变换

1 Clark变换 三相对称电压表达式为: 将三相电压用相量的形式表达出来,并用欧拉公式(eix(cosxisinx))写成三角函数的形式: 同时,三相电压矢量空间合成向量可表示为: 三相电压合成矢量幅值为相电…

Java 上机实践10(常用实用类)

(大家好,今天分享的是Java的相关知识,大家可以在评论区进行互动答疑哦~加油!💕) 目录 Plug:程序实现方法一(记事本) 方法二(IDEA) 实验一&…

【JavaEE初阶 — 网络编程】Socket 套接字 & UDP数据报套接字编程

1. Socket套接字 1.1 概念 Socket 套接字,是由系统提供用于网络通信的技术,是基于TCP / IP协议的网络通信的基本操作单元。基于 Socket 套接字的网络程序开发就是网络编程。 1.2 分类 Socket套接字主要针对传输层协议划分为如下三类&#x…