生鲜商超蔬菜补货与定价优化模型:基于线性规划的解决方案

在生鲜商超中,一般蔬菜类商品的保鲜期都比较短,且品相随销售时间的增加而变差,大部分品种如当日未售出,隔日就无法再售。因此,商超通常会根据各商品的历史销售和需求情况每天进行补货。

由于商超销售的蔬菜品种众多、产地不尽相同,而蔬菜的进货交易时间通常在凌晨 3:00-4:00,为此商家须在不确切知道具体单品和进货价格的情况下,做出当日各蔬菜品类的补货决策。蔬菜的定价一般采用'成本加成定价'方法,商超对运损和品相变差的商品通常进行打折销售。可靠的市场需求分析,对补货决策和定价决策尤为重要。从需求侧来看,蔬菜类商品的销售量与时间往往存在一定的关联关系;从供给侧来看,蔬菜的供应品种在 4 月至 10 月较为丰富,商超销售空间的限制使得合理的销售组合变得极为重要。

附件信息:

  • 附件 1.xlsx 表单包含数据的以下维度:单品编码、单品名称、分类编码、分类名称;
  • 附件 2.xlsx 表单包含数据的以下维度:销售日期、扫码销售时间、单品编码、销量(千克)、销售单价(元/千克)、销售类型、是否打折销售;
  • 附件 3.xlsx 表单包含数据的以下维度:日期、单品编码、批发价格(元/千克);
  • 附件 4.xlsx 表单包含数据的以下维度:单品编码、单品名称、损耗率(%)。

问题描述:

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

模型建立:

假设商超有 n 个可售单品,每个单品的补货量为 x_i,定价为 p_i。商超的收益可以表示为:

收益 = ∑(x_i * p_i * (1-损耗率_i) - x_i * 批发价格_i)

其中,损耗率_i 和批发价格_i 可以从附件 1 中获取。

为了满足可售单品总数控制在 27-33 个的要求,我们可以添加以下约束条件:

∑x_i >= 27 ∑x_i <= 33

为了满足各单品订购量满足最小陈列量 2.5 千克的要求,我们可以添加以下约束条件:

x_i >= 2.5, i = 1,2,...,n

为了满足市场对各品类蔬菜商品需求的前提下,我们可以添加以下约束条件:

∑x_i * (1-损耗率_i) >= 销售量_i, i = 1,2,...,n

最后,我们需要确定单品的定价策略。由于商超对运损和品相变差的商品通常进行打折销售,我们可以将定价策略设置为:

p_i = 批发价格_i * (1+成本加成率)

其中,成本加成率是商超根据经验确定的参数。

综上所述,我们可以建立如下的线性规划模型:

目标函数:

Maximize 收益 = ∑(x_i * p_i * (1-损耗率_i) - x_i * 批发价格_i)

约束条件:

∑x_i >= 27 ∑x_i <= 33

x_i >= 2.5, i = 1,2,...,n

∑x_i * (1-损耗率_i) >= 销售量_i, i = 1,2,...,n

Python代码:

import pandas as pd
import numpy as np
from scipy.optimize import linprog

# 读取数据
df1 = pd.read_excel("附件1.xlsx")
df2 = pd.read_excel("附件2.xlsx")
df3 = pd.read_excel("附件3.xlsx")
df4 = pd.read_excel("附件4.xlsx")

# 合并数据
df = pd.merge(df2, df1, on='单品编码', how='left')
df = pd.merge(df, df3, on='单品编码', how='left')
df = pd.merge(df, df4, on='单品编码', how='left')

# 删除缺失值
df.dropna(inplace=True)

# 计算收益
df['收益'] = df['销量(千克)'] * df['销售单价(元/千克)'] * (1 - df['损耗率(%)'] / 100) - df['销量(千克)'] * df['批发价格(元/千克)']

# 获取可售品种
available_products = df[df['销售日期'] == '2023-06-30']['单品编码'].unique()

# 构建线性规划模型
c = -df[df['销售日期'] == '2023-06-30']['收益'].values
A_eq = np.ones((1, len(available_products)))
b_eq = np.array([27])
A_ub = np.ones((1, len(available_products))) * -1
b_ub = np.array([-33])
bounds = [(2.5, None)] * len(available_products)

# 求解线性规划问题
res = linprog(c, A_ub=A_ub, b_ub=b_ub, A_eq=A_eq, b_eq=b_eq, bounds=bounds)

# 输出结果
print("单品补货量:")
for i, product in enumerate(available_products):
    print(f"单品编码:{product},补货量:{res.x[i]}")

# 计算定价策略
df_price = df[df['销售日期'] == '2023-06-30'][['单品编码', '批发价格(元/千克)']].drop_duplicates()
df_price['定价'] = df_price['批发价格(元/千克)'] * (1 + 0.1)  # 假设成本加成率为0.1

# 输出结果
print("\n单品定价策略:")
print(df_price[['单品编码', '定价']])

结论:

通过建立线性规划模型并利用Python代码进行求解,我们可以得到7月1日的单品补货量和定价策略,从而最大化商超收益。该模型可以帮助商超更加科学地进行补货和定价决策,提高经营效率和盈利能力。

注意:

  • 附件数据需要根据实际情况进行更新。
  • 代码中成本加成率为0.1,需要根据实际情况进行调整。
  • 该模型仅供参考,具体的补货和定价策略需要根据实际情况进行调整。
生鲜商超蔬菜补货与定价优化模型:基于线性规划的解决方案

原文地址: https://www.cveoy.top/t/topic/egdB 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录