尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

数学建模实战:基于销量预测与联合优化的商品定价补货决策

数学建模实战:基于销量预测与联合优化的商品定价补货决策 1. 赛题核心与破题方向从“蔬菜类商品定价”看数学建模的本质每年国赛的C题总给人一种“接地气”的感觉它不像A题那样需要深厚的物理或工程背景也不像B题那样可能涉及复杂的优化算法。C题往往取材于一个具体的社会经济或管理问题要求你用数学工具去描述、分析和解决。2023年的这道“蔬菜类商品的自动定价与补货决策”就是典型代表。乍一看题目描述的是超市生鲜区的日常运营但内核考察的是参赛者将模糊的实际问题转化为清晰数学模型的能力以及在不同约束和目标下进行权衡与决策的逻辑。很多新手队伍看到“自动定价”、“补货决策”这些词第一反应可能是去套用现成的库存模型比如报童模型或者价格预测模型。这当然是一个起点但绝不是终点。国赛C题的难点和魅力在于它给出的从来不是一个“教科书式”的、边界清晰的问题。附件中提供的销售流水、损耗数据、商品信息就像现实世界中的数据一样充满了噪声、缺失和不一致性。你的第一个任务不是急着跑代码而是像一个真正的数据分析师或运营经理一样去理解这些数据背后代表的业务逻辑哪些蔬菜是高频消费的“流量品”哪些是利润高但易损耗的“精品菜”周末和工作日的销售模式有何不同定价和销量之间真的存在一个简单线性关系吗因此破解这道题的关键在于建立一套“分而治之”的建模思想。你不能指望一个模型解决所有蔬菜、所有时间段的问题。更合理的思路是先对商品进行科学的分类针对不同类别的商品设计差异化的定价与补货策略。例如对于土豆、西红柿这类需求稳定、损耗率低的大众蔬菜核心目标是保障供应、稳定客流定价策略可能更侧重于成本加成和竞争性定价补货则追求平滑的库存水平。而对于有机蔬菜、精品绿叶菜这类高价值、高损耗的商品策略核心则是收益管理需要动态定价以平衡销售速度与损耗风险补货则需要更精准的预测和更小的批次。这个分类过程本身就是建模的重要一环。你可以利用附件中的历史数据通过聚类分析如K-means、层次聚类基于销售额、销售频率、损耗率、成本利润率等维度对商品进行分组。也可以根据业务常识如是否易腐、是否为主力品类进行人工划分。分类的目的是降低问题的复杂度让后续的模型更有针对性这也是评委看重的问题分析能力。2. 数据清洗与特征工程从原始流水到模型“燃料”拿到销售流水明细表你看到的可能是几十万条记录包含商品编码、销售日期、销量、销售单价、成本单价等信息。直接把这些扔进模型效果往往很差。数据预处理和特征工程是建模成功的基础这部分工作可能枯燥但至关重要它直接决定了你模型的上限。2.1 数据清洗处理现实世界的“不完美”首先是异常值处理。你需要警惕那些“诡异”的记录比如某天某个蔬菜销量为0但销售额却不为0可能是退货或其他操作未记录销量或者销售单价远低于成本单价可能是促销或录入错误又或者某天销量突然飙升至日常的数十倍可能是团购或数据错误。对于这些点需要结合业务判断是直接剔除还是用合理的方法进行修正如用前后几天的均值填充我的经验是对于明显的单点极端异常值如销量为日常千倍直接剔除影响不大但对于可能代表特殊业务场景如节假日促销的“异常”则需要谨慎处理可以考虑单独建模或加入标识变量。其次是缺失值处理。某些商品在某些日期可能没有销售记录这未必是数据缺失可能就是没卖出去。这时你需要区分“真零”和“缺失值”。一个实用的方法是检查该商品在前后一段时间是否有记录。如果前后很长一段时间都无记录可能是该商品已下架这部分数据可以剔除出当前分析范围。如果只是零星几天无记录可以视为销量为零但需要与后续的补货逻辑结合考虑。2.2 特征构建让数据“开口说话”清洗后的干净数据只是原材料特征工程才是将其加工成模型可消化“燃料”的过程。你需要从原始字段中衍生出对预测和决策有用的新特征。以下是一些关键方向时间特征这是最重要的特征之一。不仅仅是“星期几”Weekday还可以细化到“是否周末”、“是否节假日”、“是否月初/月末”发薪日效应。对于生鲜商品甚至可以尝试“是否节气”如立秋贴膘可能影响肉类但对蔬菜影响需验证。历史统计特征对于每个商品可以计算其过去N天如7天、14天的滚动均值、滚动标准差代表需求波动性、滚动销量最大值/最小值。还可以计算“昨日销量”、“上周同天销量”等这些对于短期预测非常有效。价格弹性相关特征为了建模定价对销量的影响你需要构造价格特征。例如“当日价格与过去7日均价之比”、“当日价格与成本价之比”、“该商品价格与同类商品平均价格之比”。这些特征能帮助模型捕捉消费者的价格敏感度。品类与交叉特征利用商品信息表可以引入商品的大类、中类信息。更进一步可以计算“当日同大类商品的总销量”、“竞争品可替代品的价格均值”等。例如黄瓜和西红柿可能存在一定的替代关系一方的价格变动可能影响另一方的销量。损耗特征从损耗数据表中可以计算每个商品的历史平均损耗率。高损耗率商品的特征权重在补货模型中应该更高。注意特征不是越多越好。高度相关的特征会导致模型过拟合或不稳定。建议先基于业务理解构建一批特征然后通过相关性分析、特征重要性排序如使用树模型等方法进行筛选。在论文中清晰地阐述你构建了哪些特征以及为什么构建它们能极大体现你的工作量和思考深度。3. 核心模型一销量预测模型无论是定价还是补货一个相对准确的销量预测都是前提。预测不准后续所有优化都是空中楼阁。对于C题不建议一开始就上复杂的深度学习模型如LSTM时间序列特征如季节性在单品类上可能由于数据周期短仅一年而不明显。更务实、可解释性更强的方案是“机器学习回归模型 时间序列思想”。3.1 模型选型与融合思路我推荐采用“LightGBM/XGBoost 线性模型”的融合策略。LightGBM/XGBoost这类梯度提升树模型非常适合处理表格数据能自动捕捉特征间的复杂非线性关系如价格与销量的非线性关系、周末与品类的交互效应并且对缺失值不敏感训练速度快。它可以作为主力预测器。线性模型如Ridge回归线性模型可解释性强能很好地捕捉明确的趋势和基线。可以将它作为一个“基准校正器”。具体操作上可以将历史数据按时间划分训练集和验证集注意避免时间穿越。先用LightGBM进行预测得到预测值y_pred_lgb。然后分析预测残差(y_true - y_pred_lgb)。如果残差呈现出明显的、模型未捕捉到的模式如缓慢上升的趋势可以用线性模型对这些残差进行拟合作为修正项。最终预测值为y_final y_pred_lgb y_pred_residual。这种方法在实践中往往比单模型效果更稳健。3.2 预测粒度与商品分类不要对所有商品用一个模型。应该按照第一部分的商品分类为每一类商品建立独立的预测模型。因为不同类别蔬菜的需求影响因素差异很大。例如土豆的需求可能主要受时间和基线影响价格弹性小而精品绿叶菜的需求可能对价格和新鲜度可用当日库存或历史损耗率间接表示非常敏感。预测的粒度建议为“单品-日”级别。即预测未来每一天每个单独商品的销量。这虽然计算量大但最为精细能为后续的定价和补货提供最直接的输入。3.3 验证与评价必须使用时间序列交叉验证Time Series Split来评估模型而不是随机的K折交叉验证。例如用前3个月的数据训练预测后1个月的数据然后滚动窗口。评价指标首选对称平均绝对百分比误差SMAPE或均方根误差RMSE。SMAPE对零值相对友好且是百分比误差便于理解。在论文中需要展示主要品类商品的预测效果图真实值 vs 预测值曲线并分析模型在哪些情况下预测不准如节假日突变以及你如何处理这些情况如是否为节假日加入哑变量。4. 核心模型二定价与补货联合优化模型这是本题的终极目标也是最体现建模功力的部分。定价和补货不是两个孤立决策它们通过“销量”和“库存”紧密耦合定价影响销量销量消耗库存并产生损耗库存水平又反过来影响可销量和新鲜度进而可能影响需求。因此最理想的模型是一个联合优化框架。4.1 模型框架设计我们可以将其构建为一个以“日”为时间步长的有限期动态决策问题。假设我们为未来一周T7天做决策。定义决策变量p[i,t]: 商品i在第t天的销售单价。q[i,t]: 商品i在第t天的补货量在每天开始前决定。I[i,t]: 商品i在第t天开始时的库存量。定义参数与状态转移D[i,t](p[i,t], ...): 商品i在第t天的需求函数即预测的销量。它是价格p[i,t]的函数同时也受时间特征、历史销量等影响这部分由销量预测模型提供。可以假设为线性需求函数D a - b*p其中a, b通过历史数据回归得到或更弹性的形式。Cost[i]: 商品i的单位进货成本已知。S[i,t]: 商品i在第t天的实际销量满足S[i,t] min(D[i,t], I[i,t])即销量不能超过需求也不能超过库存。L[i,t]: 商品i在第t天的损耗量。这是关键损耗与库存水平强相关。可以建立一个简单的损耗模型例如L[i,t] θ * I[i,t]其中θ是商品i的日损耗率可从历史损耗数据估计。更精细的模型可以考虑库存时间如新鲜度衰减。I[i,t1] I[i,t] - S[i,t] - L[i,t] q[i,t]: 库存状态转移方程。第二天的期初库存等于今天的期初库存减去销量和损耗再加上今天的补货量。定义目标函数我们的目标是最大化未来T天的总利润或考虑其他目标如满足率。Max Σ_t Σ_i [ (p[i,t] - Cost[i]) * S[i,t] - Cost[i] * L[i,t] ]即总收入减去销售成本再减去损耗成本损耗的商品也消耗了进货成本。这里忽略了库存持有成本等其他复杂因素但对于赛题而言已足够核心。定义约束条件价格约束p_min[i] p[i,t] p_max[i]。价格需在合理范围内p_min可以是成本价p_max可以参考历史最高价或市场承受价。补货能力约束Σ_i q[i,t] Q_max。每天的总补货量可能受物流能力限制。库存容量约束I[i,t] I_max[i]。每个商品的库存不能超过货架或仓库容量。非负约束所有决策变量非负。4.2 模型求解的实用化简化上述模型是一个带约束的非线性动态规划问题因为需求函数D(p)是非线性的直接求解非常困难。在国赛有限的时间内必须进行合理简化。简化思路一解耦与迭代优化。这是一个非常实用的工程思路。我们不追求一次性联合求解p和q而是采用交替优化的方式固定补货计划优化价格假设未来几天的补货量q[i,t]已知例如先用简单的规则如预测销量的80%来初始化那么根据库存转移方程我们可以推算出每天的库存I[i,t]。此时问题简化为在每个时间t独立地为每个商品i求解一个价格p[i,t]以最大化当天的期望利润(p[i,t]-Cost[i]) * min(D[i,t](p), I[i,t])。由于库存I[i,t]已知这个单期问题可以通过一维搜索如黄金分割法快速求解。固定价格策略优化补货在得到一组价格p[i,t]后我们可以得到对应的预测需求D[i,t]。此时问题简化为一个经典的随机需求下的多期库存补货问题但需求变得“更确定”了因为价格已定。我们可以用动态规划(DP)或更简单的报童模型扩展来求解。对于每个商品目标是找到一系列q[i,t]在满足库存约束下最小化缺货和损耗的期望成本。迭代用新求出的补货量q[i,t]回到步骤1重新优化价格如此反复直到利润或决策变量的变化小于某个阈值。简化思路二按商品分类采用不同策略。对于需求稳定、损耗低的商品A类可以采用(s, S)或定期补货策略价格则采用成本加成简化计算。对于高损耗、需求波动的商品B类重点应用上述的定价-库存联合优化模型。这样可以把计算资源集中在最复杂、收益潜力最大的部分。4.3 模型结果与输出求解模型后你得到的就是未来几天每个商品的建议售价和建议补货量。在论文中你需要展示核心品类的决策结果曲线图并解释其合理性例如为什么周末前某些菜要涨价为什么易损菜的补货建议是“少量多次”还需要进行敏感性分析如果预测误差增大10%对总利润影响多大如果损耗率突然上升模型决策如何调整这能体现模型的鲁棒性。5. 论文撰写与模型评价的加分细节国赛最终比拼的是论文。模型再精巧表达不清也徒劳。除了常规的摘要、问题重述、模型假设、建立与求解有几个细节能让你脱颖而出。5.1 可视化表达一图胜千言。不要只堆砌表格。商品分类图用散点图展示商品在“销售额-损耗率”二维空间上的分布并清晰地画出你的分类边界。预测效果对比图对于几个代表性商品绘制真实销量与预测销量的时间序列折线图并标注出预测误差较大的点分析原因。决策方案图用甘特图或分组柱状图展示未来一周不同类别商品的定价趋势和补货计划。敏感性分析热力图用热力图展示关键参数如需求弹性系数、损耗率变动对最终总利润的影响程度。5.2 模型评价的多维度性不要只说“我们的模型很好”。要从多个维度评价预测准确性用SMAPE/RMSE量化。业务合理性你的定价建议是否在常识范围内补货量是否避免了极端值如某天为0隔天暴增利润提升与基线策略如固定价格、按历史均值补货相比你的优化模型能带来多少百分比的理论利润提升这是最直接的效益证明。鲁棒性通过敏感性分析说明当输入数据有一定噪声或参数估计有偏差时你的方案是否依然稳定。可实施性你的方案是否过于复杂是否需要难以获取的数据在论文中讨论模型的简化版本或落地步骤会显得思考周全。5.3 假设的明确与讨论清晰列出你的核心假设例如“假设单一商品的需求只与其自身价格有关忽略替代品和互补品的影响”、“假设损耗率在短期内是常数”、“假设补货次日清晨即可到货”。对于每一条假设都要讨论其合理性以及如果放松该假设模型应如何改进。这展示了你的批判性思维。最后我想分享一点最深的体会国赛C题的成功往往不在于用了多么高深的算法而在于对问题本质的洞察和一套清晰、自洽、可解释的建模逻辑。从数据理解、特征工程、预测模型到最终的优化决策每一步的选择都要有充分的理由并且环环相扣。评委希望看到的是一个能真正解决实际问题的“思考过程”而不仅仅是一堆代码和公式的堆砌。在时间有限的情况下优先保证核心主线的完整和扎实比贪多求全地使用复杂模型更重要。把“蔬菜定价补货”这个故事讲得逻辑严密、令人信服你就已经战胜了大多数对手。
返回列表