2023年国赛高教杯数学建模C题蔬菜类商品的自动定价与补货决策解题全过程文档及程序

2023年国赛高教杯数学建模

C题 蔬菜类商品的自动定价与补货决策

原题再现

  在生鲜商超中,一般蔬菜类商品的保鲜期都比较短,且品相随销售时间的增加而变差,大部分品种如当日未售出,隔日就无法再售。因此,商超通常会根据各商品的历史销售和需求情况每天进行补货。
  由于商超销售的蔬菜品种众多、产地不尽相同,而蔬菜的进货交易时间通常在凌晨 3:00-4:00,为此商家须在不确切知道具体单品和进货价格的情况下,做出当日各蔬菜品类的补货决策。蔬菜的定价一般采用“成本加成定价”方法,商超对运损和品相变差的商品通常进行打折销售。可靠的市场需求分析,对补货决策和定价决策尤为重要。从需求侧来看,蔬菜类商品的销售量与时间往往存在一定的关联关系;从供给侧来看,蔬菜的供应品种在 4 月至 10月较为丰富,商超销售空间的限制使得合理的销售组合变得极为重要。
  附件 1 给出了某商超经销的 6 个蔬菜品类的商品信息;附件 2 和附件 3 分别给出了该商超 2020 年 7 月 1 日至 2023 年 6 月 30 日各商品的销售流水明细与批发价格的相关数据;
  附件 4 给出了各商品近期的损耗率数据。请根据附件和实际情况建立数学模型解决以下问题:
  问题 1 蔬菜类商品不同品类或不同单品之间可能存在一定的关联关系,请分析蔬菜各品类及单品销售量的分布规律及相互关系。
  问题 2 考虑商超以品类为单位做补货计划,请分析各蔬菜品类的销售总量与成本加成定价的关系,并给出各蔬菜品类未来一周(2023 年 7 月 1-7 日)的日补货总量和定价策略,使得商超收益最大。
  问题 3 因蔬菜类商品的销售空间有限,商超希望进一步制定单品的补货计划,要求可售单品总数控制在 27-33 个,且各单品订购量满足最小陈列量 2.5 千克的要求。根据 2023年 6 月 24-30 日的可售品种,给出 7 月 1 日的单品补货量和定价策略,在尽量满足市场对各品类蔬菜商品需求的前提下,使得商超收益最大。
  问题 4 为了更好地制定蔬菜商品的补货和定价决策,商超还需要采集哪些相关数据,这些数据对解决上述问题有何帮助,请给出你们的意见和理由。
  附件 1 6 个蔬菜品类的商品信息
  附件 2 销售流水明细数据
  附件 3 蔬菜类商品的批发价格
  附件 4 蔬菜类商品的近期损耗率
  注 (1) 附件 1 中,部分单品名称包含的数字编号表示不同的供应来源。
  (2) 附件 4 中的损耗率反映了近期商品的损耗情况,通过近期盘点周期的数据计算得到。

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

  商超(超市和零售店)在现代经济中扮演着至关重要的角色,然
而,它们在蔬菜商品管理中面临着多重挑战。这些挑战包括如何准确预测销售趋势、合理制定价格策略、以及有效制定补货计划等问题。解决这些问题对于商超来说至关重要,因为它们直接影响着销售收益、库存成本和客户满意度。因此,本研究旨在为商超提供一套全面的蔬菜商品管理策略,以帮助它们更好地应对这些挑战。
  针对问题一,在蔬菜商品管理中,首要问题之一是如何准确预测
销售趋势。这包括了不同蔬菜品类的销售模式,如季节性销售高峰和低谷。我们需要深入了解哪些蔬菜在特定时间段内销售最活跃,以及它们之间的差异。这个问题的解决有助于商超更有针对性地制定促销策略和补货计划。
  针对问题二,制定合理的价格策略对于商超至关重要,因为它们
需要平衡销售利润和客户价格敏感度。我们需要建立一个定价模型,考虑商品成本、预期销售量和销售利润等因素。这个模型将为每个蔬菜品类提供合理的售价建议,确保商超实现销售利润的最大化,同时提供具有竞争力的价格。
  针对问题三,如何确定每个单品的补货量以及建议的定价策略是
另一个重要问题。我们需要通过组合优化方法,确定每个单品的最佳补货量和定价策略,以确保商超在未来某一天实现最佳盈利。这需要考虑预期利润、最小陈列量要求和其他约束条件。
  针对问题四,更多的数据可以帮助商超更准确地预测市场需求,优化库存,制定更有效的定价策略,从而最大化收益。我们建议采集的数据包括:库存数据、竞争对手的价格数据、客户反馈、销售促销和广告活动的数据、季节性和趋势数据、供应链数据、宏观经济数据、商品的损耗数据、客户购买行为数据等。通过结合这些数据,商超可以更好地理解市场,满足客户需求,优化供应链,减少浪费,提高客户满意度,并最大化收益。
  通过解决这些问题,我们的研究旨在为商超提供一套完整的蔬菜
商品管理策略,以帮助它们提高销售效益、降低库存成本,并提高客户满意度。

模型假设:

  为了对问题一进行数学建模和分析,我们需要做出一些基本的假设。以下是一些可能的问题假设:
  1. 历史销售数据能够代表未来的销售趋势:我们使用历史销售数据来预测未来的销售。
  2. 蔬菜的损耗是固定的:我们使用平均损耗率来计算蔬菜的实际成本。
  3. 商品的销售量与其定价有关:我们基于预测的销售量来制定定价策略。
  4. 商超的销售空间是固定的:我们假设商超的销售空间在一段时间内是恒定的。
  5. 所有的商品都有相同的陈列空间:每个商品的最小陈列量都是 2.5 千克。
  6. 趋势假设:我们假设销售数据中可能存在长期的上升或下降趋势,这些趋势可以通过时间序列分解来识别。
  7. 数据完整性假设:提供的销售数据被视为准确和完整,不包含任何误差或遗漏。
  8. 稳定性假设:我们假设在观察期间,市场条件(例如消费者购买力、偏好等)保持相对稳定,这使得时间序列分析变得可行。
  9. 季节性假设:蔬菜销售可能受到季节性影响,例如由于供应量、天气条件或节假日等原因,某些蔬菜在特定时期的销售量可能会增加或减少。
  10. 独立性假设:除非通过数据明确显示出相关性,否则我们假设各个单品或品类之间的销售是独立的。

问题分析:

  问题一的问题分析
  为了分析蔬菜各品类及单品销售量的分布规律及相互关系,我们需要将这两个数据集合并,以便在一个数据框中查看每个蔬菜单品的销售情况和其所属的品类。然后,我们使用各种统计方法和可视化工具来进行了分析:首先将按品类对销售量进行总结,并可视化销售量的分布,其次计算每个单品的销售量,并进行可视化展示,然后通过时间序列分析各单品随时间变化的销售趋势,以确定哪些商品在特定时间段内的销售增长或下降和通过计算两两商品间的销售相关性,确定哪些商品经常一起购买。最终得出规律和相互关系
  问题二的分析
  根据题目和背景可知商超采用的是“成本加成定价”方法。由问题一可知蔬菜的供应品种在 4 月至 10 月较为丰富,而商超的销售空间有限。为了最大化收益,需要考虑的因素包括:蔬菜的进货成本、预期的销售量、市场需求、损耗率等。我们采用了线性回归方法预测未来一周的销售,然后基于预测的销售量和成本数据制定了定价策略。
  问题三的分析
  考虑到销售空间的限制,商超希望进一步制定单品的补货计划。需要确保可售单品总数控制在 27-33 个,且每个单品的订购量至少满足最小陈列量 2.5 千克的要求。我们使用了整个数据集的平均销售量作为预测值。使用贪心算法,我们选择了预期利润最高的 27-33 个单品,并为这些单品制定了定价策略。
  问题四的分析
  更多的数据可以帮助商超更准确地预测市场需求,优化库存,制定更有效的定价策略,从而最大化收益。我们建议采集的数据包括:库存数据、竞争对手的价格数据、客户反馈、销售促销和广告活动的数据、季节性和趋势数据、供应链数据、宏观经济数据、商品的损耗数据、客户购买行为数据等。通过结合这些数据,商超可以更好地理解市场,满足客户需求,优化供应链,减少浪费,提高客户满意度,并最大化收益。

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

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

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

程序代码:(代码和文档not free)

pxy = pd.read_excel("data2pro1day.xlsx")
# 按销售日期、单品名称分组求和(只对 age 求和)
pxy2 = pxy.groupby(['销售日期','单品名称'])['销量(千
克)'].sum().reset_index()
pxy3 = pd.DataFrame(pxy2)
# 按销售日期、单品名称分组求和(只对 age 求和)
pxy2 = pxy.groupby(['销售日期','单品名称'])['销量(千
克)'].sum().reset_index()
pxy3 = pd.DataFrame(pxy2)
pxyy = pd.read_excel("不同品类销量日汇总表.xlsx")
# 按销售日期、单品名称分组求和(只对 age 求和)
pxy2 = pxyy.groupby(['销售日期','分类名称'])['销量(千克)','不同单品销
售价格'].sum().reset_index()
pxy3 = pd.DataFrame(pxy2)
pxy3.to_excel("不同品类销量与总销售价关系结果表.xlsx")
from pyecharts import ThemeRiver
import pandas as pd
# 导入数据
data_1 = pd.read_excel('不同品类销量月度汇总表.xlsx')
data_list = []
# 封装数据
for i in zip(data_1['销售月'],data_1['销量(千克)'],data_1['分类名称
']):data_list.append(list(i))
apk = ['水生根茎类','花叶类','花菜类','茄类','辣椒类','食用菌']
#colors_list=['#7f7f7f','#32CD32','#4169E1','#FAA460']#备用颜色列表
tr = ThemeRiver("")
tr.add(apk,data_list,is_random=True,is_label_show=True)
#tr.add(apk,data_list,is_random=True,is_label_show=True,label_color=c
olors_list)
tr.render("不同品类销量月度汇总河流图.html")
from pyecharts import Pie
import pandas as pd
vote_result = pd.read_excel("第二问 2023 年 6 月各品类销量占比.xlsx")
pie = Pie("2023 年 6 月份各品类销量占比环形图")
pie.add("",vote_result['分类名称'],vote_result['占比
'],center=[60,60],legend_orient="vertical",is_random=True,radius=[30,75],legend_pos="right",is_label_sh
ow=True)pie.render('2023 年 6 月份各品类销量占比环形图.html')
import pandas as pd
from statsmodels.tsa.arima.model import ARIMA
import numpy as np
# read data
data = pd.read_excel('data4zong.xlsx')
name = data['单品名称'].tolist()
rq = data['销售日期'].tolist()
qk = data['销量(千克)'].tolist()
sr = data['收入'].tolist()
dj = data['销售单价'].tolist()
key = ['2023-06-24', '2023-06-25', '2023-06-26', '2023-06-27', '2023-
06-28', '2023-06-29', '2023-06-30']
# data deal
dated = {time:[] for time in key}
for i in range(len(qk)):for time in key:if str(rq[i]).split(' ')[0] == time:temp = []temp.append(name[i])temp.append(qk[i])temp.append(dj[i])temp.append(sr[i])dated[time].append(temp)
# set name
nameset = list(set(name))
nameset.sort(key = name.index)
# fill with all names
for k, v in dated.items():vna = [item[0] for item in v]for cn in nameset:if cn not in vna:temp = []temp.append(cn)temp.append(0)temp.append(0)
temp.append(0)dated[k].append(temp)
# compute max sr
srd = {cn:[] for cn in nameset}
for cn in nameset:temp = []for k, v in dated.items():vna = [item for item in v]for vn in vna:if vn[0] == cn:temp.append(vn[-1])srd[cn] = sum(temp)
srd_sort = sorted(srd.items(), key=lambda x:x[1], reverse=True)
shour_max_name_list = [item[0] for item in srd_sort[:30]]
result = open('7 月 1 日的各单品补货量和定价策略.txt', 'a', 
encoding='utf8')
for cn in nameset:teqk = []tedj = []for k, v in dated.items():vna = [item for item in v]for vn in vna:if vn[0] == cn:teqk.append(cn)tedj.append(cn)teqk.append(vn[1])tedj.append(vn[2])temp_name = teqk[0]if temp_name in shour_max_name_list:teqk = [teqk[i] for i in range(len(teqk)) if i%2 != 0]tedj = [tedj[i] for i in range(len(tedj)) if i%2 != 0]model_qk = ARIMA(np.array(teqk).reshape(-1, 1), 
order=(1,1,1))model_dj = ARIMA(np.array(tedj).reshape(-1, 1), 
order=(1,1,1))pred_qk = model_qk.fit().forecast(steps=10).tolist()pred_dj = model_dj.fit().forecast(steps=10).tolist()#pass#result.write(temp_name + '\t 补货量:' + 
str(round(pred_qk[0], 3)) + '\t 定价:' + str(round(pred_dj[0], 1)) + 
'\n')
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

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

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

相关文章

AI编码工具-通义灵码功能实测(二)

AI编码工具-通义灵码功能实测(二) 通义灵码智能问答 在上一篇文章中:https://blog.csdn.net/csdn565973850/article/details/138563670?spm1001.2014.3001.5501 讲述了通义灵码的7大应用场景,这里在使用过程中遇到了一些问题&…

【ArcGIS Pro微课1000例】0058:玩转NetCDF多维数据集

一、NetCDF介绍 NetCDF(network Common Data Form)网络通用数据格式是由美国大学大气研究协会(University Corporation for Atmospheric Research,UCAR)的Unidata项目科学家针对科学数据的特点开发的,是一种面向数组型并适于网络共享的数据的描述和编码标准。NetCDF广泛应…

5.2 Java全栈开发前端+后端(全栈工程师进阶之路)-服务端框架-Spring框架-相信我看这一篇足够

1.Spring框架 1.1.Spring框架简介 Spring是一个基于java的轻量级的、一站式框架。 虽然Spring是一个轻量级框架,但并不表示它的功能少。实际上,spring是一个庞然大物,包罗万象。 时至今日,Spring已经成为java世界中事实上的标准…

教你解决PUBG绝地求生游戏中闪退掉线无法重连回去的问题

《绝地求生》(PUBG),作为一款在全球范围内掀起热潮的战术竞技游戏,以其栩栩如生的战场环境和令人心跳加速的生存冒险博得了广大玩家的青睐。然而,一些玩家在经历了一场惊心动魄的对局后,却面临了一个不大不…

数据库备份可视化网站,配置定时备份

有兴趣的看官老爷可以留下评论私聊。 使用示例👍 网站展示 MySQL mysqldump -h 127.0.0.1 -uroot -p#{PWD} ht > test#{DATE}.sql 在win运行结果:成功生成备份文件 PostgreSQL PostgreSQL export PGPASSWORD#{PWD} pg_dump -h localhost -U postgr…

树与二叉树之间的转换

树转化成二叉树:兄弟相连留长子 1.加线:在兄弟之间加一条线 2.抹线:对每个结点,除了其左孩子外,去除其与其余孩子之间的关系 3.旋转:以树的根结点为轴心,将整树顺时针转45 二叉树转化成为树…

nginx--防盗链

盗链 通过在自己网站里面引用别人的资源链接,盗用人家的劳动和资源 referer referer是记录打开一个页面之前记录是从哪个页面跳转过来的标记信息 正常的referer信息 none:请求报文首部没有referer首部,比如用户直接在浏览器输入域名访问web网站&…

bean在java中什么意思?这篇文章带你详细了解

bean在java中什么意思?这篇文章带你详细了解 在Java的世界里,你可能会经常听到“Bean”这个词。它听起来像咖啡豆,但实际上与咖啡无关。那么,Java Bean到底是什么呢? 简单来说,Bean是一种特殊的Java类&…

数据分析——业务指标量化

业务指标量化 前言一、统计指标二、统计指标特点完整的统计指标统计指标的理解和使用方法 三、统计指标类型总量指标时期指标时点指标总量指标的作用 相对指标计划完成相对数指标结构相对数指标比例相对数指标比较相对数指标动态相对数指标 平均指标 四、数量指标和质量指标五、…

四、用nodejs写新增接口

(1)新增数据库 选择不区分大小写 在新建查询内编译 (2)新建提交代码的表 create TABLE code_record( id INT not null auto_increment, name VARCHAR(200) not null, course VARCHAR(200) not null, mail VARCHAR(200) not null…

深度学习之前馈神经网络

1.导入常用工具包 #在终端中输入以下命令就可以安装工具包 pip install numpy pip install pandas Pip install matplotlib注: numpy是科学计算基础包 pandas能方便处理结构化数据和函数 matplotlib主要用于绘制图表。 #导包的代码: import numpy as n…

YUV中Y颜色模型的采样

YUV的特点 相对于表示颜色的GUI, YUI将亮度(用Y表示)与色调(用U和V表示)分开来表示。又因为人类视网膜上的视网膜杆细胞要多于视网膜锥细 胞,说得通俗一些,视网膜杆细胞的作用就是识别亮度&…