尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

数学建模在生鲜商品定价与补货决策中的应用与求解策略

数学建模在生鲜商品定价与补货决策中的应用与求解策略 1. 从“卖菜”到“建模”一个看似简单却暗藏玄机的决策问题如果你在超市负责生鲜区每天最头疼的事情是什么是不知道今天该进多少西红柿还是不知道昨天卖8块一斤的黄瓜今天该标价多少这恰恰是2023年高教社杯全国大学生数学建模竞赛C题“蔬菜类商品的自动定价与补货决策”试图用数学模型去回答的核心问题。这绝不是一个简单的“进货-卖货”流程而是一个在不确定性中寻找最优解的典型运筹学问题。题目背景通常基于真实的超市销售数据要求参赛者构建模型既要决定每天补多少货补货决策又要动态调整每个商品的售价定价决策最终目标是实现一段时间内的总利润最大化或者满足特定的经营指标。为什么说它“暗藏玄冰”因为蔬菜销售充满了矛盾与约束。补货多了卖不完会腐烂直接造成损失补货少了又错过了销售机会损失了潜在利润。定价高了销量可能锐减商品积压定价低了虽然走量快但单位利润薄甚至可能覆盖不了成本。更复杂的是这些决策不是独立的它们相互耦合、相互影响并且受到到货量、损耗率、陈列空间、市场需求波动可能和季节、节假日、甚至天气相关等一系列现实条件的严格限制。这就像在走钢丝而数学建模就是那根帮助你保持平衡的杆子。这道题考察的远不止是套用一个现成的库存模型或定价公式。它要求队伍具备系统思维能将一个复杂的商业问题拆解为可量化的数学模块需要数据处理能力能从历史销售数据中提取出需求规律、损耗特征更需要建模与优化能力设计出能够协同工作的定价与补货模型并用算法进行求解。无论是准备参赛的同学还是对供应链优化、收益管理感兴趣的朋友深入剖析这道题的解题脉络都是一次极佳的思维训练。2. 问题拆解定价与补货决策的核心矛盾与关联面对这样一个综合性的问题切忌一上来就埋头建模型、写代码。正确的第一步是进行彻底的问题拆解理解各个子问题之间的内在逻辑。我们可以将整个系统看作一个由“补货”和“定价”两个核心引擎驱动的利润机器而数据是燃油约束是护栏。2.1 定价决策在弹性需求与利润空间之间博弈定价的本质是影响需求。对于蔬菜这类生鲜商品其需求量通常与价格呈负相关关系即价格越高销量越低反之亦然。这种关系可以用需求函数来描述。一个常见且实用的模型是线性需求函数Q a - b * P。其中Q是预测的需求量P是我们设定的售价a代表理论上的最大潜在需求量当价格为零时b是需求价格弹性系数它衡量了需求量对价格变化的敏感程度。注意在实际比赛中a和b这两个参数不能凭空捏造。它们必须通过题目提供的历史销售数据进行拟合得到。通常的做法是针对每个单品选取一段时间内“价格-销量”的对应数据点使用最小二乘法等进行线性回归从而估计出该商品独有的a和b。这就把定价问题从一个主观决策转变为了一个基于数据的预测问题。然而定价并非只考虑需求。我们还需要考虑成本。设单位商品的进货成本为C那么销售一件商品的毛利润就是P - C。因此在单周期比如一天内不考虑库存和损耗的简单利润模型就是Profit (P - C) * Q (P - C) * (a - b * P)。这是一个关于P的二次函数通过求导令其为零我们可以轻松解出使单日利润最大化的理论最优价格P* (a b * C) / (2b)。但这只是理想情况。现实约束马上来了第一价格变动可能有范围限制比如市场指导价第二我们当天的可售数量受限于补货决策和初始库存第三高价可能导致销量低于预期造成次日库存积压。因此定价模型必须是一个受约束的优化问题。2.2 补货决策在缺货成本与过剩成本之间权衡补货决策回答“进多少”的问题。经典的报童模型是理解这个问题的基石。报童每天要决定进多少份报纸进少了会因缺货失去销售机会缺货成本进多了卖不出去就白费了过剩成本。蔬菜问题与之类似但更复杂蔬菜有过期损耗其“过剩成本”不仅包括进货成本沉没还包括处理腐烂商品的额外成本。补货决策的核心输入是对未来需求的预测。这个预测可以来自我们上面提到的需求函数考虑了定价也可以结合时间序列分析看历史销量趋势、周期性。设我们预测明天的需求量为D那么补货量R就需要谨慎设定。如果补货量R 实际需求量D则会发生缺货损失的单位利润机会成本记为Cu通常等于售价减成本即边际利润。如果RD则会产生过剩单位过剩成本记为Co包括商品成本、可能的处理费或折扣损失。最优的补货决策点是使得缺货的期望成本等于过剩的期望成本的那个点。在需求服从某种概率分布如正态分布的假设下这个点对应着一个特定的服务水平即需求被满足的概率。对于蔬菜还需要引入损耗率。假设补货R但只有(1 - θ) * R是可售的θ为损耗率那么实际有效的供给量就打了折扣。这要求我们在计算补货量时进行逆向放大实际补货量 预测需求量 / (1 - 损耗率)。同时损耗本身也构成了成本。2.3 决策耦合为什么不能分开考虑定价与补货之所以是一个联合决策问题是因为它们通过需求量这个关键变量紧密耦合。定价影响补货你定的价格P通过需求函数Q f(P)直接决定了你预测的需求量D。这个D是补货模型最核心的输入。价格定高了预测需求D就小根据补货模型计算出的最优补货量R也会变小。补货约束定价你实际补货的数量R加上前一天的剩余库存构成了你当天可售商品的上限。在定价时你不能只顾着用理论最优价格P*还必须考虑一个现实如果按P*定价计算出的需求Q*可能远远大于你的实际库存I。这时你定的高价会导致商品迅速售罄虽然单件利润高但总销售件数受限于库存总利润可能并非最优。因此定价模型必须加入库存约束Q min(预测需求量 f(P), 当前可用库存 I)。这种耦合关系决定了我们必须建立一个联合优化模型。其标准形式可以表述为在满足库存动态方程、到货量约束、陈列空间约束等条件下寻找未来一段时间如一周内每一天、每一个商品的定价P_i(t)和补货量R_i(t)使得这段时间的总利润总收入减总成本包括进货成本、损耗成本、可能的机会成本最大化。3. 模型构建从理论框架到可求解的数学方程在理清逻辑后我们需要用严谨的数学语言将上述思想表述出来。一个典型的模型框架包含以下几个部分。3.1 定义符号与变量这是建模的基石务必清晰、完整。集合与索引i: 商品索引i 1, 2, ..., N。t: 时间周期索引通常以天为单位t 1, 2, ..., T。参数已知或可估计C_i: 商品i的单位进货成本。S_i: 商品i的单位售价在动态定价模型中这将变成变量P_i(t)。θ_i: 商品i的日损耗率假设为常数或与时间相关。a_i, b_i: 商品i的需求函数参数D_i(t) a_i - b_i * P_i(t) ε其中ε为随机误差项。a_i可能还与星期几、节假日等因素有关可通过引入虚拟变量进行回归。Cap_t: 第t天总到货量的上限物流约束。Space_i: 商品i的单位占用空间。TotalSpace: 货架总陈列空间。I_i(0): 商品i的初始库存。决策变量R_i(t): 第t天早晨对商品i的补货量。P_i(t): 第t天商品i的销售价格。Sale_i(t): 第t天商品i的实际销售量。I_i(t): 第t天结束时商品i的库存量。3.2 建立核心模型方程库存动态方程这是连接各时期决策的纽带。I_i(t) [I_i(t-1) R_i(t)] * (1 - θ_i) - Sale_i(t)含义期末库存 期初库存 当日补货扣除自然损耗后减去当日实际销量。销量决定方程这是耦合定价与库存的关键。Sale_i(t) min( D_i(P_i(t)), I_i(t-1) R_i(t) )其中D_i(P_i(t)) a_i - b_i * P_i(t)此为确定性需求版本。实际销量由“市场需求”和“实际可用库存”两者中的较小值决定。目标函数总利润最大化Maximize Σ_{t1}^{T} Σ_{i1}^{N} [ P_i(t) * Sale_i(t) - C_i * R_i(t) ]总利润 所有天、所有商品的销售收入 - 进货成本。这里隐含了损耗成本已通过库存动态方程中的(1-θ_i)因子体现损耗的商品产生了成本但未带来收入。有时题目会明确要求考虑废弃处理成本则需要额外减去一项Σ Σ [处理单价 * 损耗量]。约束条件逻辑约束Sale_i(t) ≥ 0,R_i(t) ≥ 0,P_i(t) ≥ C_i价格不低于成本。资源约束总到货量约束Σ_i R_i(t) ≤ Cap_t 每天总补货量不能超过物流能力。陈列空间约束Σ_i Space_i * [I_i(t-1) R_i(t)] ≤ TotalSpace 每天在库商品总量不能超过货架容量。需求约束Sale_i(t) ≤ D_i(P_i(t)) 实际销量不可能大于市场需求。库存非负I_i(t) ≥ 0。3.3 模型变体与复杂性处理上述模型是一个确定性的非线性规划因为目标函数中含有P_i(t) * min(...)是非线性的。在实际比赛中根据题目数据的具体情况可能需要引入更复杂的因素随机需求将需求函数改为D_i(t) a_i - b_i * P_i(t) ε_i(t)其中ε_i(t)是一个随机变量如服从正态分布。此时模型变为随机规划目标函数变为最大化期望利润。求解难度大增可能需采用情景分析法、蒙特卡洛模拟结合优化等方法。多品类关联某些蔬菜的需求可能存在互补或替代关系例如西红柿和鸡蛋。这需要在需求函数中引入交叉价格弹性项D_i(t) a_i - b_ii * P_i(t) Σ_{j≠i} b_ij * P_j(t)。这会使模型更贴近现实但也大大增加了变量间的耦合度和求解复杂度。时变参数需求函数的截距a_i可能随星期、季节、促销活动变化。这需要通过数据拟合引入时间虚拟变量或使用更复杂的时间序列模型如ARIMA来预测a_i(t)。4. 求解策略如何让模型“算得出”结果构建出模型只是第一步如何求解这个可能包含成千上万个变量和约束的优化问题是比赛中的另一大挑战。对于C题这类问题通常没有“标准答案”式的解法需要根据模型特点设计求解策略。4.1 经典方法分解与迭代对于耦合的定价与补货问题一个直观的思路是“解耦-迭代”。给定价格求解补货先假设一组初始价格如历史均价代入需求函数得到预测需求。此时对于每个商品、每一天补货问题可以近似看作一系列独立的报童模型。虽然存在总到货量等耦合约束但可以通过拉格朗日松弛等方法将其分解为多个单商品问题求解或者直接构建一个以补货量为决策变量的线性/整数规划此时目标函数中销售收入部分为常数相对容易求解。给定补货优化价格固定上一步求出的补货量R_i(t)和由此决定的库存路径I_i(t)此时销量方程简化为Sale_i(t) min( D_i(P_i(t)), I_i(t) )。定价问题变成了在每个时间点t对每个商品i求解一个带库存上限的一维价格优化问题Maximize P_i(t) * min( a_i - b_i * P_i(t), I_i(t) )。这是一个分段函数优化可以通过分析解快速求出比较无库存约束的最优价格对应的需求与当前库存的大小。迭代直至收敛将第二步得到的新价格带回第一步重新计算补货如此反复迭代直到价格和补货量的变化小于某个阈值或总利润不再显著增加。这种方法的优点是思路清晰将复杂问题分解为两个相对熟悉的子问题。缺点是可能收敛到局部最优解且对于强耦合的约束处理起来比较麻烦。4.2 智能优化算法元启发式搜索当模型非线性、非凸且变量较多时智能优化算法是更通用的选择。我们可以将所有决策变量所有商品、所有天的价格和补货量编码成一个长向量作为优化算法的“个体”或“粒子”。遗传算法将价格和补货量的组合编码为染色体。适应度函数就是模型的总利润需要代入变量计算库存动态和销量。通过选择、交叉、变异操作迭代进化种群。其优势是能全局搜索对目标函数形式要求低可以方便地处理各种复杂约束通过罚函数法或修复策略。粒子群优化算法每个粒子代表一组决策方案粒子在解空间中飞行根据个体历史最优和群体历史最优更新自己的位置即变量值。PSO实现相对简单收敛速度可能较快。模拟退火算法从一组初始解开始以一定概率接受比当前解差的“邻域”解从而有机会跳出局部最优。适合变量不是特别多的情况。实操心得在使用智能算法时变量编码和约束处理是关键。对于价格变量可以定义其变化范围和精度。对于补货量可能需要整数约束。资源约束如总到货量通常采用罚函数法将约束违反程度乘以一个很大的惩罚系数然后从目标函数利润中减去这样违反约束的方案适应度会非常低自然被淘汰。算法的参数如种群大小、迭代次数、交叉变异概率需要多次调试没有一成不变的最优设置。4.3 基于仿真的优化这是一种非常强大且贴近实际的方法尤其适合处理随机需求。构建仿真器编写一个程序能够模拟超市多日运营。输入包括所有天的定价P_i(t)和补货量R_i(t)以及需求随机模型。仿真器严格按照库存动态方程运行并根据随机生成的需求决定每日实际销量最终输出总利润。外层嵌套优化器将仿真器看作一个“黑箱函数”它接受决策变量输入返回利润输出。然后在外层使用上述的智能优化算法如遗传算法来搜索决策变量。优化算法产生一组(P, R)调用仿真器得到这组决策下的利润可能是多次随机模拟的平均值以此作为适应度值指导下一轮搜索。优点这种方法能完美处理随机性、复杂的逻辑规则如促销规则、损耗规则和非线性关系模型灵活性极高。缺点是计算量巨大因为每一次适应度评估都需要运行一次多日、多商品的完整蒙特卡洛模拟。在比赛有限的时间内需要仔细设计仿真的时间步长和模拟次数在精度和速度间取得平衡。5. 数据驱动如何从历史数据中提取模型参数任何模型都离不开数据的支撑。题目通常会提供一段时间内如过去数月各类蔬菜的每日销售记录至少包含日期、商品编码、销售量、销售单价、成本价、是否打折等信息。我们的任务是从这些“原料”中烹制出模型所需的“食材”——参数。5.1 需求函数参数估计这是最关键的一步。目标是得到每个商品i的需求函数Q a_i - b_i * P中的a_i和b_i。数据清洗与聚合剔除异常值如销量为0或极高可能是盘点错误、价格为0或负数的记录。按“商品-日期”聚合将一天内同一商品的多次销售记录汇总为日销量和日加权平均售价。处理缺货日如果某天有价格但销量为0这可能是缺货而不是需求为0。这类数据点需要谨慎处理或许可以剔除或许可以标记并用于后续的缺货分析。回归分析对于每个商品将其历史数据中的“日平均售价”作为自变量P“日销量”作为因变量Q。使用线性回归拟合Q a - bP。这里b的估计值就是需求价格弹性系数。a是回归线的截距。注意简单的线性回归可能效果不佳因为需求还受其他因素影响。此时需要引入多元线性回归。例如Q a - b*P c1*IsWeekend c2*IsHoliday c3*Temperature ...其中IsWeekend,IsHoliday等是0-1虚拟变量。这样拟合出的b是在控制其他因素不变的情况下价格对需求的“纯净”影响。结果检验与处理检查回归结果的显著性p值、R^2拟合优度。对于b不显著或为正值不符合经济学常识的商品可能需要考虑①数据量不足②存在严重的缺货情况导致数据失真③该商品需求确实缺乏价格弹性。对于这种情况可以采取保守策略如使用一个较小的经验弹性值或参考同类商品的平均弹性。5.2 损耗率估计损耗率θ_i通常无法直接从销售数据中直接获得因为数据记录的是售出的部分。但可以通过库存盘点数据或进行合理推断。理想情况如果数据包含每日的期初库存和期末库存那么损耗量 ≈ (期初库存 当日进货 - 当日销量 - 期末库存)损耗率θ ≈ 平均每日损耗量 / 平均每日在库量可以计算每个商品一段时间的平均损耗率。无库存数据时这是一个难点。一种合理的假设是当日未售完且次日没有以原价继续销售的商品即从销售记录中消失或被打折处理可视作损耗。但这需要非常详细的销售数据支持。更常见的做法是根据蔬菜品类给出一个经验范围如叶菜类0.1-0.15根茎类0.05-0.08作为模型参数进行灵敏度分析。5.3 其他参数与约束成本C_i通常直接取自数据中的“成本价”字段的平均值。到货量上限Cap_t可能需要从历史进货数据中统计出最大单日到货量或根据题目描述设定。陈列空间若题目未给出可能需要根据商品体积进行合理假设或忽略此约束专注于核心的定价-补货联动。6. 方案实现、检验与论文呈现要点有了模型和算法最后一步是将其实现并形成完整的解决方案。6.1 编程实现与工具选择数据处理与参数估计Python的Pandas、NumPy、Statsmodels库是绝佳选择。Pandas用于数据清洗和聚合Statsmodels或Scikit-learn用于回归分析。优化模型求解如果采用分解迭代法每个子问题可能是一个线性规划可以使用PuLPPython或MATLAB的linprog等求解器。如果采用智能优化算法可以自己编写遗传算法/粒子群算法的代码也可以利用现成的库如DEAPPython的进化算法框架或Geatpy。如果问题规模适中也可以尝试用Gurobi或CPLEX这类商业求解器直接求解非线性模型如果模型能被它们识别的话。仿真实现用Python或MATLAB编写一个清晰的仿真循环是可行的。注意代码的模块化将仿真逻辑、需求随机数生成、利润计算等分开。6.2 模型检验与灵敏度分析一个优秀的建模论文不能只给出结果还必须验证模型的合理性和稳健性。历史数据回测用过去一段时间的数据将你的模型生成的决策价格、补货量代入仿真计算模拟利润。与超市实际的历史利润进行对比。如果你的模型利润显著高于历史说明模型有效如果低则需要检查模型缺陷。关键参数灵敏度分析这是体现思考深度的重要环节。选择几个最不确定或最重要的参数如需求弹性系数b、损耗率θ、到货能力Cap在合理范围内变动它们观察总利润、平均价格、平均补货量等核心输出指标如何变化。例如分析当需求弹性增大顾客对价格更敏感时模型是否会自动调低价格以维持销量总利润是升是降又如分析损耗率增加时模型是否会减少补货量以避免浪费这对利润的影响是线性的吗将分析结果用图表展示如折线图、热力图并给出管理启示“当损耗率超过X%时利润对补货决策的敏感性急剧增加因此控制损耗在此阶段至关重要”。6.3 论文写作与可视化论文是展示你们工作的唯一窗口。在写作时问题重述与分析部分不要照抄题目要用自己的语言精炼地概括问题的本质、目标和难点并画出系统流程图清晰地展示“数据输入 - 参数估计 - 模型决策 - 仿真输出”的完整逻辑链条以及定价与补货的反馈关系。模型部分符号说明要完整、清晰最好用三线表格呈现。模型公式要编号推导过程要严谨。说明每个假设的合理性如为什么用线性需求函数。求解部分详细说明算法步骤。如果是智能算法给出流程图、编码方式、适应度函数设计、约束处理方法和关键参数设置。结果分析部分这是亮点所在。不要只扔出一堆数字。展示核心结果表例如未来一周的推荐补货计划表和每日定价表。进行对比分析将你们的策略与简单的策略对比如“固定价格、按历史平均销量补货”的策略。用数据证明你们模型的优越性。可视化多用图。例如用折线图展示不同商品价格随时间的变化趋势用柱状图展示补货量与预测需求的对比用散点图展示价格与销量的关系叠加拟合的需求曲线用箱线图展示灵敏度分析中利润的分布情况。模型评价与推广客观地指出模型的优点如综合考虑了定价与补货的耦合、使用了数据驱动参数和缺点如假设需求函数为线性可能过于简化、未考虑竞争对手行为等并提出可能的改进方向。最后记住数学建模竞赛没有标准答案评审看重的是解决问题的逻辑过程、模型的创新性与合理性、以及论文表述的清晰度。从理解商业逻辑开始到数据提炼、模型构建、算法求解再到结果检验与解读每一步都体现着你们的综合能力。这道蔬菜定价补货题就是一个微缩版的商业智能系统设计过程其思路和方法对于未来解决许多实际的资源优化问题都有着宝贵的借鉴意义。
返回列表