【完整代码】2023数学建模国赛C题代码

您所在的位置:网站首页 蔬菜采购价格表计算公式 【完整代码】2023数学建模国赛C题代码

【完整代码】2023数学建模国赛C题代码

2024-06-21 13:18| 来源: 网络整理| 查看: 265

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/

问题一代码:

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

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

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

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

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

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

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

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

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

附件 1 6 个蔬菜品类的商品信息 附件 2 销售流水明细数据 附件 3 蔬菜类商品的批发价格 附件 4 蔬菜类商品的近期损耗率



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3