2020年第十届MathorCup高校数学建模
D题 新零售目标产品的精准需求预测
原题再现
随着我国消费市场的不断发展,市场上的消费模式已经逐步由“以物为主”转变为“以客为主”。在新零售行业,性价比不再是顾客衡量是否购买物品的唯一标准,人们的需求也不仅仅是单一的追求实用性,而是更多的考虑时尚性,把注意力放在“个性化、时尚、美观”等方面。在这类特殊需求的推动下,新零售企业的生产模式逐步向多品种、小批量迈进,这让商场内零售店铺里的饰品和玩具等种类变得更加琳琅满目,同时也给零售行业的库存管理增加了很大的难度。如何根据层级复杂,品类繁多的历史销售数据,以区域层级,小类层级乃至门店 skc(单款单色)层级给出精准的需求预测,是当前大多数新零售企业需要重点关注并思考的问题。你们的团队将从 3 个方向为新零售企业解决“精准需求预测”问题贡献一份力量。请基于附件的数据,思考并解决以下 4 个问题:
问题 1:试分析 2018 年国庆节,双十一,双十二和元旦这四个节假日内各种相关因素对目标 skc 的销售量的影响,可考虑产品销售特征,库存信息,节假日折扣等因素。其中,目标 skc 为销售时间处于 2018 年 7 月 1日至 2018 年 10 月 1 日内且累计销售额排名前 50 的 skc。
问题 2:试结合上述分析结果,预测给定区域内目标小类在 2019 年 10月 1 日后 3 个月中每个月的销售量,给出每个月预测值的 MAPE。其中,目标小类为历史销售时间处于 2019 年 6 月 1 日至 2019 年 10 月 1 日内且累计销售额排名前 10 的小类。
问题 3:为了满足企业更加精准的营销需求,试着建立相关数学模型,在考虑小类预测结果的同时,预测目标小类内所有 skc 在 2019 年 10 月 1日后 12 周内每周的周销量,并给出每周预测值的 MAPE(可以考虑 skc 销售曲线与小类销售曲线之间的差异)。
问题 4:请给企业写一份推荐信,向企业推荐你的预测结果和方法,并说明你们的方案的合理性以及后续的优化方向。
附件:
在附件中给出了某零售企业生产的 N 款产品,在华东区内的相关数据,其中:
附件 1:sale_info.csv 销售流水数据;
附件 2:prod_info.csv 产品信息表;
附件 3:inv_info.csv 区域库存数据;
附件 4:holidays_info.csv 节假日信息表;
附件 5:remark.xls 是附件 1-4 中字段的说明
整体求解过程概述(摘要)
随着我国消费市场的不断发展,人们对于新零售产品的需求也不再单一化,新零售行业如何根据历史销售数据预测出人们对于新零售产品的精准需求就显得格外重要。本文针对预测新零售目标产品的精准需求的问题,运用了多元回归分析法、层次分析法、灰色预测理论、BP 神经网络基本理论等理论和方法,构建了多元线性回归方程模型、灰色预测模型、基于双隐含层的 BP 神经网络预测模型。综合运用了 MATLAB、EXCEL、SPSS 等软件编程求解,得出各个因素对目标产品销售量影响的程度,且预测出了目标产品的月销量以及周销量。
针对问题一,要求分析不同节假日内各种相关因素对目标 skc 的销售量的影响。首先,运用了 EXCEL 以及 SPSS 对原始数据进行处理,筛选出目标 skc 的信息,同时剔除异常数据。其次,运用多元回归分析法,构建了多元线性回归方程模型,运用 MATLAB 软件编程求解,得出了节假日内各因素与目标 skc 销售量的关系。最后应用层次分析法,得出节假日内各因素对目标 skc 销售量的影响程度大小分别为:节假日折扣>标签价格>库存信息>小类编号。
针对问题二,预测目标小类的指定月销量以及求出每月对应的 MAPE。首先,由于样本数据较少,故运用灰色预测理论,构建了灰色预测模型 GM(1,1),运用 MATLAB 软件进行编程求解,得到预测的月销量数据,每月对应的 MAPE 分别为 0.473327652、1.099137302、0.890544582。
针对问题三,预测目标小类的指定周销量以及相应的 MAPE。首先,由于样本数据较多,故运用 BP 神经网络基本理论,构建了基于双隐含层的 BP 神经网络预测模型,运用 MATLAB 软件进行编程求解,得到预测的周销量数据,且每周对应的 MAPE 分别为 0.449878094、0.13670653、0.145773352 、 0.173651805 、 0.173651805 、0.182235558 、 0.13290254 、 0.146785558 、0.191995798、0.086879118、0.106512403、0.167677446。
针对问题四,给企业写一封建议信,介绍自己的模型以及模型优化方向。首先,向企业介绍了本文所采用的模型以及思想,同时也介绍了模型最终得到的结果,最后提出模型优化的关键在于样本数据的预处理,对异常数据的剔除十分必要。
本文最后对模型的优点和缺点进行了客观评价。最后还将模型进行了横向和纵向的推广。
模型假设:
(1)假设在神经网络预测中,输入变量作为第一层合理有效。
(2)假设缺失数据均为异常数据。
(3)假设影响目标产品销售量的 4 个因素直接相互独立。
(4)假设计算过程中收集的数据真实可靠有效。
问题分析:
问题一的分析:在问题一中,题目要求我们从给定的数据中分析四个节假日内各种因素对目标 skc 的销售量的影响。首先运用 EXCEL 对数据进行整理,根据题目要求筛选出目标 skc,其次分别筛选出四个节假日中目标 skc 的销售量 S,同时结合 4 个节假日内的 4 个因素:库存信息 H、节假日折扣 R、标签价格 G、小类编号 B。构建多元线性回归方程,找出 S 与 4 个因素直接的关系,最后运用层次分析法,求出 4 个因素对于 S 的影响因子,即可得到 4 个因素对 S 的影响程度大小。
问题二的分析:在问题二中,题目要求我们结合上述分析结果,预测给定区域内目标小类在 2019 年 10 月 1 日后 3 个月中每个月的销售量以及相应的 MAPE。首先根据所给数据筛选出目标小类,提取出目标小类已有的销售记录,对目标小类在 2019 年10 月 1 日后三个月的销售量进行灰色预测。
问题三的分析:在问题三中,题目要求我们建立相关数学模型,在考虑小类预测结果的同时,预测目标小类内所有 skc 在 2019 年 10 月 1 日后 12 周内每周的周销量以及相应的 MAPE。首先建立基于双隐含层的 BP 神经网络预测模型,通过上述目标小类的样本,对神经网络进行训练,最后通过训练后的神经网络预测出所需结果。难点在于正确运用所给样本对神经网络进行训练。
问题四的分析:在问题四中,题目要求我们给企业写一封推荐信,首先我们对上述问题的解决方案进行整理归纳,给出模型的优点以及缺陷,最后提出模型优化的建议和方向。
模型的建立与求解整体论文缩略图
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可
程序代码:(代码和文档not free)
The actual procedure is shown in the screenshot
load data1.txt
y=data1(:,1);
x1=data1(:,2);
x2=data1(:,3);
x3=data1(:,4);
x4=data1(:,5);
X=[ones(length(y),1),x1,x2,x3,x4];
Y=y;
[b,bint,r,rint,stats]=regress(Y,X)
figure(1);
rcoplot(r,rint)
title('国庆节销售量线性回归的残差图')
%双十一
load data2.txt
y=data2(:,1);
x1=data2(:,2);
x2=data2(:,3);
x3=data2(:,4);
x4=data2(:,5);
X=[ones(length(y),1),x1,x2,x3,x4];
Y=y;
[b,bint,r,rint,stats]=regress(Y,X)
figure(1);
rcoplot(r,rint)
title('双十一销售量线性回归的残差图')
%双十二
load data3.txt
y=data3(:,1);
x1=data3(:,2);
x2=data3(:,3);
x3=data3(:,4);
x4=data3(:,5);
X=[ones(length(y),1),x1,x2,x3,x4];
Y=y;
[b,bint,r,rint,stats]=regress(Y,X)
figure(1);
rcoplot(r,rint)
title('双十二销售量线性回归的残差图')
%元旦
load data4.txt
y=data4(:,1);
x1=data4(:,2);
x2=data4(:,3);
x3=data4(:,4);
x4=data4(:,5);
X=[ones(length(y),1),x1,x2,x3,x4];
Y=y;
[b,bint,r,rint,stats]=regress(Y,X)
figure(1);
rcoplot(r,rint)
title('元旦销售量线性回归的残差图')
%目标小类 4
clear
clc
load datamonth.txt
x=[0;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23];
y=datamonth(:,4);
f=fittype('(1783-k./r).*exp(-r.*t)+k./r','independent','t','coefficients',{
'k','r'});
cfun=fit(x,y,f)
xi=0:1:24;
yi=cfun(xi);
plot(x,y,'r*',xi,yi,'b-');
xlabel('月份');
ylabel('销售量');
title('灰色模型预测目标小类销售情况');
legend('实际数据','预测数据');