【完整代码】2023数学建模国赛C题代码--蔬菜类商品的自动定价与补货决策

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

在生鲜商超中,一般蔬菜类商品的保鲜期都比较短,且品相随销售时间的增加而变差,

大部分品种如当日未售出,隔日就无法再售。因此,商超通常会根据各商品的历史销售和需

求情况每天进行补货。

由于商超销售的蔬菜品种众多、产地不尽相同,而蔬菜的进货交易时间通常在凌晨 3:00-

4:00,为此商家须在不确切知道具体单品和进货价格的情况下,做出当日各蔬菜品类的补货

决策。蔬菜的定价一般采用"成本加成定价"方法,商超对运损和品相变差的商品通常进行

打折销售。可靠的市场需求分析,对补货决策和定价决策尤为重要。从需求侧来看,蔬菜类

商品的销售量与时间往往存在一定的关联关系;从供给侧来看,蔬菜的供应品种在 4 月至 10

月较为丰富,商超销售空间的限制使得合理的销售组合变得极为重要。

附件 1 给出了某商超经销的 6 个蔬菜品类的商品信息;附件 2 和附件 3 分别给出了该

商超 2020 年 7 月 1 日至 2023 年 6 月 30 日各商品的销售流水明细与批发价格的相关数据;

附件 4 给出了各商品近期的损耗率数据。请根据附件和实际情况建立数学模型解决以下问

题:

bash 复制代码
裙号:882663918
完整代码:https://www.jdmm.cc/file/2709542/

问题一代码:

bash 复制代码
#!/usr/bin/env python
# coding: utf-8

# In[34]:


import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import os
import warnings
warnings.filterwarnings('ignore')
from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score,confusion_matrix,classification_report
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
import matplotlib.font_manager as fm


# In[35]:


# 设置全局字体
plt.rcParams['font.family'] = 'sans-serif'
plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置中文字体为黑体

# 加载字体文件
font = fm.FontProperties(fname='C:\Windows\Fonts\simhei.ttf', size=16)


# In[ ]:


#千千数模 q群:790539996
#代码购买链接:https://www.jdmm.cc/file/2709542/
#倒卖欢迎举报 举报有奖


# # 1.1 蔬菜类商品不同品类或不同单品之间可能存在一定的关联关系,请分析蔬菜各品类及单品销售量的分布规律及相互关系。

# In[36]:


# Read the data
'''
# data_1: 6 个蔬菜品类的商品信息
# data_2: 销售流水明细数据
# data_3: 蔬菜类商品的批发价格
# data_4: 蔬菜类商品的近期损耗率
附件 1 中,部分单品名称包含的数字编号表示不同的供应来源。
附件 4 中的损耗率反映了近期商品的损耗情况,通过近期盘点周期的数据计算得到。

'''
data_1 = pd.read_excel('../data/附件1.xlsx')
data_2 = pd.read_excel('../data/附件2.xlsx')
data_3 = pd.read_excel('../data/附件3.xlsx')
data_4 = pd.read_excel('../data/附件4.xlsx')


# In[37]:


data_1.head()


# In[38]:


data_2.head()


# In[39]:


data_3.head()
#将data_3中的列重命名为销售日期、单品编码和批发价格
data_3.columns = ['销售日期','单品编码','批发价格(元/千克)']
data_3.head()
#data_3.shape


# In[40]:


#将data_4中的列重命名为分类编码、分类名称、平均损耗率
data_4.columns = ['分类编码','分类名称','平均损耗率']
data_4.head()
#data_4.shape


# In[41]:


data_2.shape


# # 1.1.1 蔬菜各品类销售量的分布规律

# In[42]:


# 合并data_1和data_2
merged_data = pd.merge(data_1, data_2, on='单品编码')
# 按照分类名称进行分组,计算每个品类的销售量
sales_by_category = merged_data[merged_data['销售类型'] == '销售'].groupby('分类名称')['销量(千克)'].sum() - merged_data[merged_data['销售类型'] == '退货'].groupby('分类名称')['销量(千克)'].sum()


# In[43]:


sales_by_category.index[0:6]


# In[44]:


# plot the sales distribution
plt.figure(figsize=(10, 6)) # set the figure size to 10x6 inches
plt.bar(sales_by_category.index, sales_by_category.values)
plt.xticks(rotation=45, fontproperties = font, size = 16) # set the font for x-axis labels
plt.xlabel('分类名称', fontproperties = font) # set the font for x-axis label
plt.ylabel('销售量(千克)', fontproperties = font) # set the font for y-axis label
plt.title('蔬菜各品类销售量分布', fontproperties = font) # set the font for title
plt.savefig('../results/sales_distribution.png', dpi=300, bbox_inches='tight') # set dpi to 300 for higher resolution and save the entire figure


# In[45]:


# 以季度为周期,可视化不同蔬菜品类销售量的变化趋势
# 将销售数据按照季度进行重采样
quarterly_sales = merged_data.resample('Q', on='销售日期')['销量(千克)'].sum()
# 将销售数据按照分类名称和季度进行分组,计算每个品类在每个季度的销售量
# sales_by_category = merged_data[merged_data['销售类型'] == '销售'].groupby(['分类名称', pd.Grouper(key='销售日期', freq='Q')])['销量(千克)'].sum() - merged_data[merged_data['销售类型'] == '退货'].groupby(['分类名称', pd.Grouper(key='销售日期', freq='Q')])['销量(千克)'].sum()
sales_by_category = merged_data[merged_data['销售类型'] == '销售'].groupby(['分类名称', pd.Grouper(key='销售日期', freq='Q')])['销量(千克)'].sum()
# 可视化销售量变化趋势
fig, ax = plt.subplots(figsize=(10, 6))
for category in sales_by_category.index.levels[0]:
    ax.plot(sales_by_category.loc[category].index, sales_by_category.loc[category].values, label=category)
ax.legend()
ax.set_xlabel('季度')
ax.set_ylabel('销售量(千克)')
ax.set_title('蔬菜各品类销售量变化趋势')
plt.savefig('../results/sales_num_trend.png', dpi=300, bbox_inches='tight')



问题 1 蔬菜类商品不同品类或不同单品之间可能存在一定的关联关系,请分析蔬菜各

品类及单品销售量的分布规律及相互关系。

问题一要求分析蔬菜各品类及单品销售量的分布规律及相互关系。下

  1. 数据预处理 首先,我们需要对附件2中的销售流水明细数据进行预处理,以便于后续的分析和建模。具体地,我们可以按照以下步骤进行:
  • 对销售流水明细数据进行汇总,得到各蔬菜品类和单品的销售总量。
  • 对销售总量进行归一化处理,以便于后续的分析和比较。
  1. 分析销售量的分布规律 接下来,我们需要分析各蔬菜品类和单品的销售量的分布规律。具体地,我们可以按照以下步骤进行:
  • 绘制销售量的直方图和箱线图,观察它们的分布情况和异常值情况。
  • 计算销售量的均值、方差、偏度和峰度等统计量,以便于后续的分析和比较。
  • 进行聚类分析,将蔬菜品类和单品划分为若干个类别,以便于后续的分析和建模。
  1. 分析销售量的相互关系 在分析了销售量的分布规律之后,我们可以进一步分析各蔬菜品类和单品之间的销售量的相互关系。具体地,我们可以按照以下步骤进行:
  • 绘制销售量的散点图,观察它们之间的关系。
  • 计算销售量之间的相关系数,判断它们之间的线性关系的强度和方向。
  • 进行因子分析

问题 2 考虑商超以品类为单位做补货计划,请分析各蔬菜品类的销售总量与成本加成

定价的关系,并给出各蔬菜品类未来一周(2023 年 7 月 1-7 日)的日补货总量和定价策略,

使得商超收益最大。

问题 2要求分析各蔬菜品类的销售总量与成本加成定价的关系,并给出各蔬菜品类未来一周(2023年7月1-7日)的日补货总量和定价策略,使得商超收益最大。

  1. 数据预处理 首先,我们需要对附件2和附件3中的数据进行预处理,以便于后续的分析和建模。具体地,我们可以按照以下步骤进行:
  • 对销售流水明细数据进行汇总,得到各蔬菜品类的销售总量。
  • 对批发价格数据进行处理,计算各蔬菜品类的成本加成定价。
  1. 分析销售总量与成本加成定价的关系 接下来,我们需要分析各蔬菜品类的销售总量与成本加成定价的关系。具体地,我们可以按照以下步骤进行:
  • 绘制销售总量与成本加成定价的散点图,观察它们之间的关系。
  • 计算销售总量与成本加成定价之间的相关系数,判断它们之间的线性关系的强度和方向。
  • 进行回归分析,得到销售总量与成本加成定价之间的线性回归方程,以便于后续的建模和优化。
  1. 建立数学模型 在分析了销售总量与成本加成定价的关系之后,我们可以建立数学模型,以最大化商超的收益。具体地,我们可以按照以下步骤进行: - 定义决策变量:对于每个蔬菜品类,我们定义一个补货量和一个定价变量,分别表示商超在未来一周内每天补货的数量和每个蔬菜品类的定价。
  • 定义目标函数:商超的收益可以定义为销售收入减去成本。因此,我们可以将目标函数定义为: max Σ(销售收入 - 成本) 其中,Σ表示对所有蔬菜品类求和,销售收入可以通过补货量和定价计算得到,成本可以通过批发价格和补货量计算得到。
  • 定义约束条件:为了保证补货量和定价的合理性,我们需要定义一些约束条件。具体地,我们可以按照以下方式定义约束条件:
  • 补货量约束:商超每天补货的数量不能超过该蔬菜品类的销售总量。
  • 定价约束:商超的定价必须在一定的范围内,以保证价格的合理性和市场竞争力。
  • 收益约束:商超的收益必须大于等于一个给定的阈值,以保证商超的盈利能力。
  1. 求解数学模型 在建立了数学模型之后,我们可以使用数学优化方法,如线性规划或整数规划,来求解模型,得到最优的补货计划和定价策略。具体地,我们可以使用求解器或其他数学优化软件,将模型输入其中,然后运行求解器,得到最优的补货量和定价。最后,我们可以根据模型的结果,给出各蔬菜品类未来一周的日补货总量和定价策略,以实现商超收益最大化。 总之,通过以上的步骤,我们可以分析各蔬菜品类的销售总量与成本加成定价的关系,建立数学模型,求解模型,得到最优的补货计划和定价策略,以实现商超收益最大化。需要注意的是,在实际应用中,我们还需要考虑一些其他的因素,如市场需求、供应链管理、损耗率等,以保证模型的准确性和可行性。

问题 3 因蔬菜类商品的销售空间有限,商超希望进一步制定单品的补货计划,要求可

售单品总数控制在 27-33 个,且各单品订购量满足最小陈列量 2.5 千克的要求。根据 2023

年 6 月 24-30 日的可售品种,给出 7 月 1 日的单品补货量和定价策略,在尽量满足市场对各

品类蔬菜商品需求的前提下,使得商超收益最大。

问题三要求制定单品的补货计划,要求可售单品总数控制在27-33个,且各单品订购量满足最小陈列量2.5千克的要求。根据2023年6月24-30日的可售品种,给出7月1日的单品补货量和定价策略,在尽量满足市场对各品类蔬菜商品需求的前提下,使得商超收益最大。

  1. 数据预处理 首先,我们需要对附件2中的销售流水明细数据进行预处理,以便于后续的分析和建模。具体地,我们可以按照以下步骤进行:
  • 对销售流水明细数据进行汇总,得到各蔬菜品类和单品的销售总量。
  • 对销售总量进行归一化处理,以便于后续的分析和比较。
  1. 制定补货计划和定价策略 接下来,我们需要制定单品的补货计划和定价策略。具体地,我们可以按照以下步骤进行:
  • 根据可售品种和市场需求,确定需要补货的单品种类和数量。
  • 根据各单品的销售量和成本加成定价的关系,计算出各单品的售价。
  • 根据各单品的售价和损耗率,计算出各单品的净收益。
  • 根据各单品的净收益和补货量,计算出商超的总收益。
  • 利用数学优化方法,求解最优的补货计划和定价策略,使得商超收益最大化。
  1. 控制单品的数量和订购量 根据问题三的要求,商超希望制定单品的补货计划,要求可售单品总数控制在27-33个,且各单品订购量满足最小陈列量2.5千克的要求。因此,在制定补货计划和定价策略时,需要考虑这些限制条件,以确保计的可行性和有效性。具体地,我们可以按照以下步骤进行:
  • 根据可售品种和市场需求,确定需要补货的单品种类和数量。
  • 对于每个单品,计算出其最小陈列量,以确保其能够满足市场需求。
  • 根据可售单品总数的限制,对各单品的补货量进行调整,以确保总数控制在27-33个之间。
  • 根据各单品的补货量和最小陈列量,计算出各单品的订购量,以确保其能够满足市场需求和陈列要求。 需要注意的是,这些限制条件可能会相互制约,因此需要进行综合考虑和优化,以达到最优的补货计划和定价策略。

问题 4 为了更好地制定蔬菜商品的补货和定价决策,商超还需要采集哪些相关数据,

这些数据对解决上述问题有何帮助,请给出你们的意见和理由。

对于问题四,商超需要采集哪些相关数据,这些数据对解决上述问题有何帮助,请给出你们的意见和理由。 为了更好地制定蔬菜商品的补货和定价决策,商超需要采集以下相关数据:

  1. 市场需求数据:商超需要了解市场对各品类蔬菜商品的需求情况,以便于制定最优的补货计划和定价策略。这些数据可以通过市场调研、销售数据分析等方式获得。
  2. 成本数据:商超需要了解各单品的成本情况,以便于计算出各单品的售价和净收益。这些数据可以通过采购记录、供应商报价等方式获得。
  3. 损耗率数据:商超需要了解各单品的损耗率情况,以便于计算出各单品的净收益。这些数据可以通过库存管理系统、盘点记录等方式获得。
  4. 供应商数据:商超需要了解各单品的供应商情况,以便于进行供应商评估和管理。这些数据可以通过采购记录、供应商合同等方式获得。
    这些数据对解决上述问题非常有帮助。例如,市场需求数据可以帮助商超了解市场对各品类蔬菜商品的需求情况,从而制定最优的补货计划和定价策略;成本数据和损耗率数据可以帮助商超计算出各单品的售价和净收益,从而实现商超收益最大化;供应商数据可以帮助商超进行供应商评估和管理,从而确保商品的质量和供应.
    附件1给出了6个蔬菜品类的商品信息,包括品类、单品名称、供应商、规格、单位和成本加成等信息。附件2和附件3分别给出了该商2020年7月1日至2023年6月30日各商品的销售流水明细与批发价格的相关数据。附件4给出了各商品近期的损耗率数据。这些数据对制定蔬菜类商品的补货和定价决策非常有帮助,可以帮助商超了解市场需求、商品成本、损耗情况等,从而制定最优的补货计划和定价策略,实现商超收益最大化。

附件 1 6 个蔬菜品类的商品信息

附件 2 销售流水明细数据

附件 3 蔬菜类商品的批发价格

附件 4 蔬菜类商品的近期损耗率

相关推荐
一只小小的土拨鼠1 天前
【冲奖必看】2026年数维杯数学建模竞赛ABC题全方位深度拆解与备考全案(核心思路与高分逻辑)
数学建模·数维杯
★飞翔的企鹅★2 天前
【一等奖版】2026 金地杯 C题 核桃油品质分析
数学建模·2026金地杯·2026金地杯c题·2026山西省数学建模·核桃油品质分析
maligebilaowang2 天前
【2026年华东杯学建模竞赛B题医药物流安排问题】完整思路+论文+可运行代码
数学建模·2026华东杯·医药物流安排问题
做cv的小昊3 天前
【TJU】研究生应用统计学课程笔记(8)——第四章 线性模型(4.1 一元线性回归分析)
笔记·线性代数·算法·数学建模·回归·线性回归·概率论
AI科技星3 天前
光子本源三元结构定理(《全域数学·物理原本》)【乖乖数学】
人工智能·机器学习·数学建模·数据挖掘·agi
AI科技星4 天前
全域数学·72分册·射影原本 无穷维射影几何卷细化子目录【乖乖数学】
人工智能·线性代数·算法·机器学习·数学建模·数据挖掘·量子计算
AI科技星5 天前
全域数学·第二部 几何本原部 《无穷维射影几何原本》合订典藏版【乖乖数学】
人工智能·线性代数·数学建模·矩阵·量子计算
AI科技星5 天前
精细结构常数α作为SI 7大基本量纲统一耦合常数的量子几何涌现理论
算法·机器学习·数学建模·数据挖掘·量子计算
一只小小的土拨鼠6 天前
全网首发】2026五一杯数学建模C题满分解析:多源数据融合下边坡形变预警的“时序变点-分阶预测”全链路方案
数学建模
maligebilaowang6 天前
【2026年华东杯数学建模A题游览路线规划问题】完整思路+论文+可运行代码
数学建模·2026华东杯·游览路线规划