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

news2024/9/24 13:22:22

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 蔬菜类商品不同品类或不同单品之间可能存在一定的关联关系,请分析蔬菜各
品类及单品销售量的分布规律及相互关系。

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java+ssh+mysql智能化办公管理系统

项目介绍: 本系统为基于jspsshmysql的OA智能办公管理系统,包含管理员、领导、员工角色,功能如下: 管理员:公告信息;工作计划;公司资料;部门管理;员工管理;员…

软件测试/测试开发丨Linux进阶命令

点此获取更多相关资料 本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接:https://ceshiren.com/t/topic/27139 一、Linux进阶命令学习 curljq 二、curl简介 curl 是一个发送请求数据给服务器的工具 curl支持的协议有:FTP、FTPS、HTTP、HTTP、SFTP…

深度学习推荐系统(七)NFM模型及其在Criteo数据集上的应用

深度学习推荐系统(七)NFM模型及其在Criteo数据集上的应用 1 NFM模型原理及其实现 1.1 NFM模型原理 无论是 FM,还是其改进模型FFM,归根结底是⼀个⼆阶特征交叉的模型。受组合爆炸问题的困扰,FM 几乎不可能扩展到三阶以上,这就不…

sonarqube的基本使用

操作截图 下载一个中文插件。 插件安装成功,提示需要重启sonarqube。 通过maven的命令对代码进行测试 找到maven。 修改apache-maven-3.6.1\setting.xml。 通过以下命令对当前代码进行质量检测。 检测完毕。 回到sonarqube,看到刚刚检测的结果…

【Unity3D赛车游戏优化篇】【十】汽车粒子特效和引擎咆哮打造极速漂移

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:Uni…

Nginx 学习(十)高可用中间件的配置与实现

一 Keepalived热备 1 概述 调度器出现单点故障,如何解决?Keepalived实现了高可用集群Keepalived最初是为LVS设计的,专门监控各服务器节点的状态Keepalived后来加入了VRRP功能,防止单点故障 2 运行原理 Keepalived检测每个服务器节点状…

湖南省副省长秦国文一行调研考察亚信科技

9月5日,湖南省人民政府党组成员、副省长秦国文一行到亚信科技调研考察,亚信科技高级副总裁陈武主持接待。 图:双方合影 在亚信科技创新展示中心,秦国文了解了亚信科技在5G、算力网络、人工智能、大数据等前沿领域的创新探索&…

LeetCode 865. Smallest Subtree with all the Deepest Nodes【树,DFS,BFS,哈希表】1534

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…

AVLTree模拟实现

一、常用的搜索逻辑 1、暴力搜索 O(N) 2、二分搜索 前提是有序,可以先用O(NlogN)排序一次,后续每次查找都是logN。 缺点:快排需要容器有随机访问功能,即为顺序表等。 如果不仅要搜索,还要插入删除,此时…

修复 ChatGPT 发生错误的问题

目录 ChatGPT 发生错误?请参阅如何修复连接错误! 修复 ChatGPT 发生错误的问题 基本故障排除技巧 检查 ChatGPT 的服务器状态 检查 API 限制 检查输入格式 清除浏览数据 香港DSE是什么? 台湾指考是什么? 王湘浩 生平 …

如何安装安卓(Android 7.0+)CA根证书

简介 写这个教程时,已经是2023年,现在最新的安卓系已经是Android 13 。从Android7.0以后系统不再信任用户的证书,导致我们在使用一些网络调试工具时非常不便,为了解决这个问题,本教程将教你如何一步步操作&#xff0c…

分类预测 | MATLAB实现PCA-LSTM(主成分长短期记忆神经网络)分类预测

分类预测 | MATLAB实现PCA-LSTM(主成分长短期记忆神经网络)分类预测 目录 分类预测 | MATLAB实现PCA-LSTM(主成分长短期记忆神经网络)分类预测预测效果基本介绍程序设计参考资料致谢 预测效果 基本介绍 MATLAB实现PCA-LSTM(主成分长短期记忆神经网络)分类预测。Matlab实现基于P…

Unity中Shader的屏幕坐标

文章目录 前言一、屏幕坐标1、屏幕像素的坐标2、屏幕坐标归一化 二、在Unity中获取 当前屏幕像素 和 总像素1、获取屏幕总像素,使用_ScreenParams参数2、获取当前片段上的像素怎么使用:在片元着色器传入参数时使用 前言 Unity中Shader的屏幕坐标 一、屏幕坐标 1、屏幕像素的坐…

YOLOV7改进-添加CoordConv(坐标卷积)

坐标卷积link 只替换FPN1x1卷积层和检测头中的第一卷积层 1、复制到common文件夹最后 2、做改进对比实验时,不要载入与训练权重 3、yolo.py解析模型里面 4、对yolov7.yaml的配置文件修改 5、对fpn1x1卷积替换

HCIA自学笔记01-冲突域

共享式网络(用同一根同轴电缆通信)中可能会出现信号冲突现象。 如图是一个10BASE5以太网,每个主机都是用同一根同轴电缆来与其它主机进行通信,因此,这里的同轴电缆又被称为共享介质,相应的网络被称为共享介…

使用PHPStudy在本地快速建立网站并实现局域网外访问(无公网IP)

文章目录 使用工具1. 本地搭建web网站1.1 下载phpstudy后解压并安装1.2 打开默认站点,测试1.3 下载静态演示站点1.4 打开站点根目录1.5 复制演示站点到站网根目录1.6 在浏览器中,查看演示效果。 2. 将本地web网站发布到公网2.1 安装cpolar内网穿透2.2 映…

前端面试题JS篇(1)

JS 的各种位置,比如 clientHeight,scrollHeight,offsetHeight ,以及 scrollTop, offsetTop,clientTop 的区别 clientHeight:表示的是可视区域的高度,不包含 border 和滚动条offsetHeight:表示可视区域的高度,包含了 b…

React 状态管理 - Redux 进阶(下)提升开发体验

目录 扩展学习资料 Reselect【数据持久化】&Immutable Data【不变数据】方案【解决某些场景重复渲染,重复计算的问题】 /src/reducer/index.js Reselect【 可缓存的筛选项,当数据量大的时候,可以节省diff时间,提升渲染效率…

[B题]2023 年全国大学生数学建模比赛思路、代码更新中.....

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

力扣刷题总结一:模拟+哈希表+双指针+前缀和+滑动窗口

模拟 根据题目意思,捋清整个流程,使用代码去模拟整个流程 例题 种花问题 class Solution:def canPlaceFlowers(self, flowerbed: List[int], n: int) -> bool:# 模拟,在数组前后各添加1个0,从第1个元素到倒数第2个元素&…