生鲜商超蔬菜补货与定价优化:基于线性规划模型的策略制定

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

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

附件 1.xlsx 的表单包括数据的以下维度:['单品编码', '单品名称', '分类编码', '分类名称'] 附件 2.xlsx 的表单包括数据的以下维度:['销售日期', '扫码销售时间', '单品编码', '销量(千克)', '销售单价(元/千克)', '销售类型', '是否打折销售'] 附件 3.xlsx 的表单包括数据的以下维度:['日期', '单品编码', '批发价格(元/千克)']; 附件 4.xlsx 的表单包括数据的以下维度:['小分类编码', '小分类名称', '平均损耗率(%)_小分类编码_不同值']

小分类编码就是单品编码 损耗率(%)就是平均损耗率(%)_小分类编码_不同值

问题 3

因蔬菜类商品的销售空间有限,商超希望进一步制定单品的补货计划,要求可售单品种类数控制在 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

由于在df4中没有找到与df2中的单品编码相匹配的小分类编码 则跳过

给出预测的python代码内容:

import pandas as pd
from scipy.optimize import linprog

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

# 获取可售品种
available_items = df2['单品编码'].unique()

# 获取销售量
sales = df2.groupby('单品编码')['销量(千克)'].sum()

# 获取批发价格
wholesale_prices = df3.set_index('单品编码')['批发价格(元/千克)']

# 获取损耗率
loss_rates = df1.set_index('小分类编码')['平均损耗率(%)_小分类编码_不同值']

# 定义目标函数系数
c = [-wholesale_prices[item] for item in available_items]

# 定义约束条件
A = []
b = []
# 总数控制在27-33个
A.append([1] * len(available_items))
b.append(33)
A.append([-1] * len(available_items))
b.append(-27)
# 各单品订购量满足最小陈列量2.5千克
for item in available_items:
    A.append([0] * available_items.get_loc(item) + [1] + [0] * (len(available_items) - available_items.get_loc(item) - 1))
    b.append(2.5)
# 市场需求约束
for item in available_items:
    A.append([(1 - loss_rates[item] / 100) if available_items.get_loc(item) == i else 0 for i in range(len(available_items))])
    b.append(sales[item])

# 线性规划求解
res = linprog(c, A_ub=A, b_ub=b)

# 输出结果
for i, item in enumerate(available_items):
    print(f'单品编码:{item},补货量:{res.x[i]},定价:{wholesale_prices[item] * (1 + res.x[i])}')

注意:以上代码仅给出了解决问题的思路和一个可能的实现方式,具体实施时需要根据实际情况进行调整和优化。

本模型可以帮助商超优化蔬菜补货和定价策略,提高收益,并最大程度地满足市场需求。此外,该模型还可以根据不同的销售目标和市场情况进行调整,从而适应不同的经营需求。

生鲜商超蔬菜补货与定价优化:基于线性规划模型的策略制定

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

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