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


    C 题 蔬菜类商品的自动定价与补货决策
    在生鲜商超中,一般蔬菜类商品的保鲜期都比较短,且品相随销售时间的增加而变差,
    大部分品种如当日未售出,隔日就无法再售。因此,商超通常会根据各商品的历史销售和需
    求情况每天进行补货。
    由于商超销售的蔬菜品种众多、产地不尽相同,而蔬菜的进货交易时间通常在凌晨 3:00-
    4:00,为此商家须在不确切知道具体单品和进货价格的情况下,做出当日各蔬菜品类的补货
    决策。蔬菜的定价一般采用“成本加成定价”方法,商超对运损和品相变差的商品通常进行
    打折销售。可靠的市场需求分析,对补货决策和定价决策尤为重要。从需求侧来看,蔬菜类
    商品的销售量与时间往往存在一定的关联关系;从供给侧来看,蔬菜的供应品种在 4 月至 10
    月较为丰富,商超销售空间的限制使得合理的销售组合变得极为重要。
    附件 1 给出了某商超经销的 6 个蔬菜品类的商品信息;附件 2 和附件 3 分别给出了该
    商超 2020 年 7 月 1 日至 2023 年 6 月 30 日各商品的销售流水明细与批发价格的相关数据;
    附件 4 给出了各商品近期的损耗率数据。请根据附件和实际情况建立数学模型解决以下问
    题:

    裙号:882663918
    完整代码:https://www.jdmm.cc/file/2709542/
    
    • 1
    • 2

    问题一代码:

    #!/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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146

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

    问题 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 蔬菜类商品的近期损耗率

  • 相关阅读:
    OpenWRT设置ipv6网络
    Java面试挂在线程创建后续,不要再被八股文误导了!创建线程的方式只有1种
    Python学习第2天-安装pycharm
    算法分析至栈与队列
    政安晨:【深度学习神经网络基础】(十三)—— 卷积神经网络
    学习记忆——方法篇——联想法+记忆宫殿+数字编码
    实战PyQt5:149-QChart图表之图例设置
    《Deep Residual Learning for Image Recognition》阅读笔记
    【网站项目】015健身房管理系统
    小米首款汽车预计2024年量产;英伟达发布首款基于Hopper架构GPU;​Java 18正式发布|极客头条
  • 原文地址:https://blog.csdn.net/yeqianqian_/article/details/132747798