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

资讯详情

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

数据驱动的零售运营决策:蔬菜定价与补货联合优化模型实战

数据驱动的零售运营决策:蔬菜定价与补货联合优化模型实战 1. 项目概述从赛题到现实商业问题的映射看到“蔬菜类商品的自动定价与补货决策”这个题目很多同学第一反应可能是这不就是个数学建模题吗套几个模型跑点数据交篇论文就完事了。但如果你真这么想可能就错过了这道题最核心的价值。我干了十几年数据分析与供应链优化可以很负责任地告诉你这道C题几乎是当年所有赛题里与现实商业世界结合最紧密、最具实操价值的一道。它本质上是一个经典的“数据驱动的零售运营决策”问题在生鲜电商、连锁超市、社区团购等场景中每天都在上演。题目要求你建立一个模型同时解决“定价”和“补货”两个相互耦合的决策这直接戳中了生鲜零售行业的痛点——高损耗、高波动、低毛利。为什么说它耦合你想定价高了卖得慢库存积压导致损耗蔬菜烂掉定价低了虽然卖得快但可能利润薄甚至亏本同时如果补货不及时还会导致缺货损失销售机会。补货多了面临损耗风险补货少了错过销售高峰。这俩决策就像自行车的两个轮子必须协同才能前进。题目给出的“销量和成本定价规律”以及“可售总量限制”就是现实中“供需关系”和“资源约束”的数学抽象。你的模型就是要在这套约束下找到每一天、每一种蔬菜的最优价格和补货量使得商超在整个周期内的总收益最大化。这已经不是单纯的学术建模而是一个需要综合考虑预测、优化、决策的微型商业智能系统构建。所以无论你是为了参赛拿奖还是想借此机会深入理解数据科学在供应链中的应用这个题目都是一个绝佳的切入点。接下来我会抛开论文八股以一个实战者的角度拆解这道题的解决思路、核心模型、代码实现以及那些容易踩坑的细节。我们会用到一些数学工具主要是优化和预测但重点在于理解其商业逻辑和实现路径保证你不仅能看懂还能自己动手复现出来。2. 核心问题拆解与解题总览面对一个复杂问题最怕的就是一头扎进细节。我们先跳出来看看这个问题的全貌。题目通常会给出一段时间内比如过去N天各种蔬菜的销售流水数据日期、品类、销量、价格、批发价格数据、以及可能的损耗记录。然后要求你预测未来一段时间比如接下来M天的需求并制定出这M天里每天的定价和补货量策略。2.1 问题核心一个两阶段决策优化框架整个问题可以自然地分解为两个核心阶段它们依次进行又相互反馈需求预测阶段这是所有决策的基础。你需要根据历史销售数据预测未来每一天、每一种蔬菜的需求量。注意这个需求量不是固定的它会受到你未来制定的价格影响需求定律价格越高需求量通常越低。因此准确的预测模型必须能刻画“价格-需求”关系。定价与补货联合优化阶段在预测出价格与需求的函数关系后你需要建立一个优化模型。这个模型的目标是最大化总利润或收益决策变量是未来每天的售价和补货量约束条件包括每日可售总量上限源于货架空间或库存能力、补货量的逻辑约束比如非负、以及需求预测模型本身带来的约束销量不能超过预测的需求量。简单来说流程就是历史数据 - 训练“价格-需求”预测模型 - 将该模型作为约束嵌入利润最大化优化模型 - 求解优化模型得到最优定价与补货方案。2.2 关键难点与破局点这里有几个关键点处理好了就是亮点处理不好就是失分点价格-需求关系的建模这是灵魂。你不能简单用历史平均销量作为未来需求。必须建立一个函数比如需求量 f(价格 星期几 节假日 季节性趋势)。f可以是线性模型、指数模型、或更复杂的机器学习模型。如何从历史数据中拟合出这个f是第一个技术挑战。优化模型的构建目标函数是总利润 Σ售价 × 实际销量 - 成本 × 补货量。注意这里的“实际销量”不是预测的需求量而是min(预测需求量 当日可售量)。因为如果预测需求是100斤但你只补了80斤那你最多只能卖80斤。这个“min”关系会让优化问题变成非线性的增加求解难度。通常需要引入辅助变量进行线性化处理。损耗的处理蔬菜有损耗题目可能以“成本加成”或直接给出损耗率的方式体现。在优化模型中损耗会影响有效可售量和实际成本需要仔细建模。例如补货100斤损耗率10%则最大可售量为90斤这90斤卖完后即使还有库存损耗部分也无法产生收入。求解的可行性问题规模可能很大多种蔬菜、多天。直接求解非线性混合整数规划可能非常耗时。需要考虑模型简化如将非线性关系分段线性化、使用高效求解器如Gurobi, Cplex或设计启发式算法。3. 需求预测模型如何让数据“开口说话”一切始于预测。没有相对准确的需求感知后面的优化就是“垃圾进垃圾出”。我们分步骤来构建这个预测模型。3.1 数据预处理与探索性分析拿到的销售数据通常是流水账第一步是将其聚合为“天-品类”级别的面板数据。对于每一种蔬菜你都需要以下字段日期、星期几、是否为节假日、当日平均售价、当日总销量、当日批发成本。注意这里的“平均售价”需要谨慎处理。如果一天内价格有变动需要用加权平均按销量加权来计算当日的代表性价格。因为销量是在不同价格下产生的简单算术平均会扭曲价格-销量关系。接下来进行探索性分析销量时序图观察每种蔬菜的销量是否存在长期趋势逐渐增长或下降、季节性以周或年为单位、周期性明显的每周波动。价格-销量散点图这是看价格与销量相关性的最直观方式。通常你会看到一种负相关趋势但可能比较分散因为销量还受其他因素影响。箱线图按星期几分组画销量的箱线图可以清晰看到周内效应比如周末销量是否显著高于工作日。3.2 构建价格-需求响应模型这是预测部分的核心。我们的目标是建立函数Q f(P, X)。其中Q是需求量P是价格X是其他特征星期几、节假日等。常用模型选择线性模型Q a - b*P c*星期几 d*节假日 ...。这是最简单直观的模型。系数b代表价格弹性价格每上涨1元需求减少b单位。优点是解释性强易于嵌入后续优化模型。缺点是假设价格与需求是严格的线性关系这在现实中往往不成立尤其是价格极端高或低时。对数线性模型ln(Q) a - b*ln(P) c*星期几 ...。这是经济学中非常经典的需求模型。其优势在于系数b直接解释为需求的价格弹性一个常数弹性模型。例如b1.2意味着价格每上涨1%需求量下降1.2%。这个形式在数学上更优雅也常更符合实际数据。指数模型Q A * exp(-b*P) * exp(c*星期几) ...。这也是一种非线性模型可以捕捉需求随价格指数衰减的特性。机器学习模型如决策树、随机森林、梯度提升树如XGBoost、甚至神经网络。这些模型能自动捕捉复杂的非线性关系和交互效应预测精度可能更高。但是它们通常是“黑箱”难以直接作为一个约束条件嵌入到后续的数学规划优化模型中。一个折衷方案是用机器学习模型做基准预测然后分析其结果提炼出关键规律再用一个结构更简单的模型如分段线性模型去近似它用于优化。实操建议对于数学建模竞赛我推荐从对数线性模型入手。因为它有扎实的经济学理论基础参数易于解释并且通过取对数可以将乘法关系转化为加法关系便于使用线性回归进行拟合。你可以为每一种蔬菜分别拟合一个模型。拟合过程示例Python假设我们有一种蔬菜的数据框df包含列sales销量price价格is_weekend是否周末。import pandas as pd import statsmodels.api as sm import numpy as np # 假设 df 是包含历史数据的DataFrame # 添加常数列 df[const] 1 # 对销量和价格取自然对数 df[ln_sales] np.log(df[sales]) df[ln_price] np.log(df[price]) # 定义自变量和因变量 # 这里使用对数线性模型ln(sales) a b*ln(price) c*is_weekend X df[[const, ln_price, is_weekend]] y df[ln_sales] # 使用OLS普通最小二乘法进行拟合 model sm.OLS(y, X).fit() print(model.summary()) # 获取参数 a model.params[const] b model.params[ln_price] # 这个b就是需求的价格弹性通常为负 c model.params[is_weekend] # 预测函数给定价格p和是否周末iw预测销量 def predict_demand(p, iw): ln_q_pred a b * np.log(p) c * iw return np.exp(ln_q_pred) # 将对数预测值转换回原始销量通过model.summary()你可以查看R方、系数显著性P值等判断模型拟合效果。如果价格系数b不显著P值0.05说明历史数据中价格波动对销量的影响不明显这可能是因为历史价格变动太小或者数据噪声太大。这时你需要结合业务判断或考虑其他模型形式。3.3 引入外部因素与模型评估节假日效应可以创建一个“节假日”哑变量或者更细粒度地区分不同节日如春节、国庆。促销活动如果数据中包含促销标识一定要加入模型。天气因素如果数据允许温度、降雨量可能影响蔬菜需求。模型评估将历史数据按时间划分为训练集和测试集例如用前80%的数据训练后20%的数据测试。在测试集上计算预测误差如均方根误差RMSE、平均绝对百分比误差MAPE。MAPE尤其直观比如MAPE15%意味着平均预测误差在15%左右。实操心得对于蔬菜这种高频、易腐的商品周周期性往往是最强的信号。确保你的模型能很好地捕捉“星期几”效应。另外价格弹性系数b的估计至关重要且敏感。如果历史数据中价格变化范围很小估计出的弹性可能不可靠。这时可以参考同类商品的研究文献给出一个合理的弹性范围作为补充。4. 定价与补货联合优化模型构建有了需求预测模型我们就有了“如果定价为P预期需求为D(P)”的认知。现在我们要用这个认知来做决策。这是一个典型的带约束的利润最大化问题。4.1 模型假设与符号定义假设我们为单一蔬菜品类做未来T天例如T7的决策。定义如下符号t: 时间索引t1, 2, ..., T。p_t: 决策变量第t天的销售单价。q_t: 决策变量第t天的补货量。c_t: 参数第t天的单位进货成本可从历史批发价预测或取平均值。D_t(p_t): 第t天的需求函数来自我们上一阶段建立的预测模型。例如D_t(p_t) exp(a b*ln(p_t) season_t)。I_max: 参数每日最大可售量由货架容量决定。这是一个关键约束。S_t: 辅助变量第t天的实际销量。I_t: 辅助变量第t天结束时的库存量考虑损耗后。假设损耗发生在每日营业结束后损耗率为theta。4.2 目标函数与约束条件我们的目标是最大化未来T天的总利润最大化总利润 Σ_{t1}^{T} [ p_t * S_t - c_t * q_t ]这个目标函数需要在一系列约束下实现需求约束实际销量不能超过预测需求也不能超过当日可售库存。S_t D_t(p_t)(1)S_t 可供销售的库存(2) 其中“可供销售的库存” 上期结余库存 本期补货量 - 本期损耗。这引出了库存动态约束。库存动态与损耗约束I_t (1 - theta) * (I_{t-1} q_t - S_t)(3) 其中I_0是初始库存已知。theta是损耗率。这个公式表示当天营业结束后剩下的库存(I_{t-1} q_t - S_t)会有一个固定比例theta损耗掉剩下的结转到下一天。那么第t天营业开始时的可售库存就是I_{t-1} q_t。因此约束(2)可以写为S_t I_{t-1} q_t(4)可售总量约束这是题目明确给出的每天能摆上货架销售的总量有上限。I_{t-1} q_t I_max(5) 注意这里约束的是“营业前总库存”因为它决定了最大可售潜力。非负与逻辑约束p_t 0, q_t 0, S_t 0, I_t 0(6)S_t I_{t-1} q_t与(4)相同但强调了销量不能超过实物库存需求函数的引入D_t(p_t)是一个关于p_t的函数。如果D_t(p_t)是线性的如D a - b*p那么整个模型是线性规划LP或二次规划QP易于求解。如果D_t(p_t)是非线性的如对数线性模型D exp(a b*ln(p))那么约束(1)S_t exp(a b*ln(p_t))就是非线性约束问题变为非线性规划NLP求解难度增大。4.3 模型线性化处理技巧为了使用高效成熟的线性/整数规划求解器如Gurobi我们通常希望将模型线性化。对于非线性需求函数一个实用的技巧是分段线性逼近。步骤确定价格p_t的合理变动范围[P_min, P_max]。将这个范围划分为K个小区间每个区间的端点为P_0, P_1, ..., P_KP_0 P_min, P_K P_max。在每个端点P_k上计算对应的需求D_k D(P_k)。引入一组二进制变量z_{t,k}表示第t天采用的价格区间。引入连续变量lambda_{t,k}用于线性组合。将价格p_t和需求上界D_t表示为这些端点的凸组合p_t Σ_{k0}^{K} lambda_{t,k} * P_kD_t Σ_{k0}^{K} lambda_{t,k} * D_kΣ_{k0}^{K} lambda_{t,k} 1lambda_{t,k} 0并且最多只有两个相邻的lambda非零这可以通过特殊的顺序集约束或附加二进制变量实现在Gurobi等求解器中可以直接使用addGenConstrPWL函数添加分段线性约束。这样原本的非线性约束S_t D(p_t)就被近似为线性约束S_t D_t其中D_t由上面的线性表达式定义。经过这样的处理整个模型就转化成了一个**混合整数线性规划MILP**问题虽然引入了二进制变量但现代求解器对此类问题求解能力很强。5. 求解策略与参考代码实现框架理论模型建立后我们需要将其转化为可执行的代码。这里以Python为例结合PuLP一个免费的优化建模库或Gurobi商业求解器性能强大学生可申请免费学术许可来演示框架。我们假设使用分段线性化处理了需求函数。5.1 环境准备与数据加载import pandas as pd import numpy as np import matplotlib.pyplot as plt # 优化建模库这里以PuLP为例它支持开源求解器CBC import pulp # 如果使用Gurobi则 import gurobipy as gp # 1. 加载历史数据并完成需求预测模型的拟合假设已拟合好 # 假设我们得到了某种蔬菜的需求函数参数 ln(Q) alpha beta * ln(P) gamma * Weekend alpha 5.0 beta -1.2 # 价格弹性为负 gamma 0.3 # 周末效应 def demand_function(price, is_weekend): 对数线性需求函数 return np.exp(alpha beta * np.log(price) gamma * is_weekend) # 2. 定义优化问题的参数 T 7 # 规划未来7天 cost 3.0 # 假设未来7天进货成本稳定为3元/单位 I0 50 # 初始库存 I_max 200 # 每日最大可售量 theta 0.05 # 日损耗率5% # 未来7天是否为周末 is_weekend_future [0, 0, 0, 0, 0, 1, 1] # 假设第6、7天是周末 # 3. 分段线性化参数 P_min, P_max 4.0, 10.0 # 价格上下限 K 10 # 分成10段 price_breakpoints np.linspace(P_min, P_max, K1) # K1个断点 demand_breakpoints [demand_function(p, 0) for p in price_breakpoints] # 先按非周末计算基准需求周末再调整5.2 使用PuLP构建并求解MILP模型# 创建问题实例最大化利润 prob pulp.LpProblem(Vegetable_Pricing_Replenishment, pulp.LpMaximize) # 定义决策变量 # 价格变量连续 p pulp.LpVariable.dicts(Price, range(1, T1), lowBoundP_min, upBoundP_max) # 补货量变量连续非负 q pulp.LpVariable.dicts(Replenish, range(1, T1), lowBound0) # 实际销量变量连续非负 s pulp.LpVariable.dicts(Sales, range(1, T1), lowBound0) # 期末库存变量连续非负 I pulp.LpVariable.dicts(Inventory, range(0, T1), lowBound0) # I[0]是初始库存也是变量但会被固定 # 用于分段线性化的lambda变量连续非负 lam pulp.LpVariable.dicts(Lambda, [(t, k) for t in range(1, T1) for k in range(K1)], lowBound0) # 辅助变量表示第t天采用第k个区间的指示二进制这里简化假设用SOS2约束PuLP对SOS2支持有限以下用近似方法。 # 更严谨的做法需引入二进制变量这里为简化我们假设求解器能处理或使用Gurobi的addGenConstrPWL。 # 此处演示一个简化版我们不强加SOS2约束而是将其放松为凸组合约束这可能导致解不在断点上但作为近似。 # 实际竞赛中若用PuLP可增加二进制变量和相应约束来严格实现。这里为流程清晰暂不展开。 # 固定初始库存 prob I[0] I0 # 定义目标函数总利润 总销售收入 - 总补货成本 prob pulp.lpSum([p[t] * s[t] - cost * q[t] for t in range(1, T1)]) # 添加约束 for t in range(1, T1): # 库存动态平衡约束 (考虑损耗) # I[t] (1-theta) * (I[t-1] q[t] - s[t]) prob I[t] (1 - theta) * (I[t-1] q[t] - s[t]) # 销量逻辑约束销量不能超过期初库存补货量 prob s[t] I[t-1] q[t] # 可售总量约束期初库存补货量不能超过最大容量 prob I[t-1] q[t] I_max # --- 分段线性化需求约束 (简化版) --- # 1. 价格p_t表示为断点的凸组合 prob p[t] pulp.lpSum([lam[(t, k)] * price_breakpoints[k] for k in range(K1)]) # 2. lambda之和为1 prob pulp.lpSum([lam[(t, k)] for k in range(K1)]) 1 # 3. 需求上界D_t考虑周末效应表示为断点需求的凸组合 # 注意需求断点是以非周末计算的周末需求更高所以上界应该用周末的需求函数值。 # 这里我们动态计算周末的断点需求 if is_weekend_future[t-1]: demand_bps [demand_function(p, 1) for p in price_breakpoints] else: demand_bps demand_breakpoints # 添加需求约束销量 预测需求上界 prob s[t] pulp.lpSum([lam[(t, k)] * demand_bps[k] for k in range(K1)]) # 求解问题 solver pulp.PULP_CBC_CMD(msgFalse) # 使用CBC求解器不输出求解日志 prob.solve(solver) # 检查求解状态 print(f求解状态: {pulp.LpStatus[prob.status]}) print(f最优总利润: {pulp.value(prob.objective):.2f}) # 输出结果 results [] for t in range(1, T1): results.append({ Day: t, Price: p[t].varValue, Replenish: q[t].varValue, Sales: s[t].varValue, Inventory_End: I[t].varValue }) results_df pd.DataFrame(results) print(results_df)5.3 结果分析与可视化求解完成后你需要分析结果是否合理。# 绘制未来7天的决策图 fig, axes plt.subplots(2, 2, figsize(12, 10)) # 子图1价格与销量趋势 ax1 axes[0, 0] ax1.plot(results_df[Day], results_df[Price], markero, labelOptimal Price, colorred) ax1.set_xlabel(Day) ax1.set_ylabel(Price, colorred) ax1.tick_params(axisy, labelcolorred) ax1.legend(locupper left) ax1_twin ax1.twinx() ax1_twin.plot(results_df[Day], results_df[Sales], markers, labelSales, colorblue) ax1_twin.set_ylabel(Sales, colorblue) ax1_twin.tick_params(axisy, labelcolorblue) ax1_twin.legend(locupper right) ax1.set_title(Optimal Price and Sales Trend) # 子图2补货与库存趋势 ax2 axes[0, 1] ax2.bar(results_df[Day] - 0.2, results_df[Replenish], width0.4, labelReplenishment, colorgreen) ax2.bar(results_df[Day] 0.2, results_df[Inventory_End], width0.4, labelEnding Inventory, colororange) ax2.set_xlabel(Day) ax2.set_ylabel(Quantity) ax2.legend() ax2.set_title(Replenishment and Inventory) # 子图3每日利润贡献 results_df[Daily_Profit] results_df[Price] * results_df[Sales] - cost * results_df[Replenish] ax3 axes[1, 0] ax3.bar(results_df[Day], results_df[Daily_Profit], colorpurple) ax3.set_xlabel(Day) ax3.set_ylabel(Profit) ax3.set_title(Daily Profit Contribution) # 在柱子上标注利润值 for idx, row in results_df.iterrows(): ax3.text(row[Day], row[Daily_Profit]0.5, f{row[\Daily_Profit\]:.1f}, hacenter) # 子图4价格-需求关系散点最优解点 ax4 axes[1, 1] # 绘制需求曲线以第一天非周末为例 price_range np.linspace(P_min, P_max, 100) demand_curve demand_function(price_range, is_weekend_future[0]) ax4.plot(price_range, demand_curve, labelDemand Curve (Day 1), colorgray, linestyle--) # 绘制实际决策点 ax4.scatter(results_df[Price], results_df[Sales], colorred, s50, zorder5) for i, row in results_df.iterrows(): ax4.annotate(fDay{int(row[Day])}, (row[Price], row[Sales]), textcoordsoffset points, xytext(0,5), hacenter) ax4.set_xlabel(Price) ax4.set_ylabel(Demand / Sales) ax4.set_title(Optimal Decisions on Demand Curve) ax4.legend() ax4.grid(True, alpha0.3) plt.tight_layout() plt.show()通过这几个图表你可以直观地看到价格和销量如何随时间变化通常周末价格和销量都可能更高。补货策略如何与库存水平配合避免库存过高或断货。每天的利润贡献找出利润最高的日子。最优的定价点是否落在了需求曲线的合理位置通常是在弹性较大的区域而非最高或最低点。6. 模型拓展、优化与参赛技巧上面的框架解决了一个单品、确定型需求的问题。但在实际竞赛中题目往往更复杂。下面谈谈拓展方向和提升点。6.1 处理多品类关联性蔬菜之间可能存在替代或互补关系。例如西红柿涨价黄瓜的需求可能增加替代品。这需要引入交叉价格弹性。在需求预测模型中对于蔬菜i其需求函数可能变为ln(Q_i) a_i b_i * ln(P_i) Σ_{j≠i} c_ij * ln(P_j) 其他因素其中c_ij就是交叉价格弹性c_ij 0表示替代品c_ij 0表示互补品。这会使优化模型的耦合程度急剧上升因为一个商品的价格会影响其他商品的需求。求解这样的模型计算量很大可能需要采用分解协调算法如拉格朗日松弛或启发式算法。6.2 处理需求不确定性我们的预测模型不可能100%准确。更高级的模型会考虑需求的不确定性采用随机规划或鲁棒优化。随机规划假设未来需求有多个可能的情景如高需求、中需求、低需求每个情景有一个发生概率。优化目标变为最大化期望利润。这需要引入场景变量模型规模会成倍增长。鲁棒优化不假设概率分布只假设需求在一个不确定集合内波动例如预测值±20%。优化目标是在最坏情况worst-case下利润仍然最好。这种方法更保守但能提供风险保障。在竞赛中如果数据量不足以支撑复杂的随机模型一个务实的做法是进行敏感性分析。即在求得最优解后人为地上下调整需求预测值比如±10%重新求解或模拟观察最优策略和利润的变化幅度。如果变化不大说明你的策略比较稳健如果变化剧烈则需要说明该策略的风险。6.3 求解效率优化当品类数N和天数T增加时MILP的变量和约束数量会爆炸式增长O(N*T*K)。可以尝试以下方法分解算法将大问题按时间或按品类分解成若干小问题迭代求解。例如按品类分解假设其他品类价格固定轮流优化每个品类。启发式算法如模拟退火、遗传算法。这些算法不能保证找到全局最优解但能在可接受时间内找到高质量可行解。对于数学建模竞赛在论文中清晰描述算法设计、参数设置和收敛情况同样能获得高分。利用商业求解器的高级功能如Gurobi提供多目标优化、分段线性函数直接建模等功能能极大简化模型构建和提升求解速度。6.4 参赛论文写作要点问题重述与分析不要照抄题目要用自己的话精炼概括并画出逻辑框架图清晰展示“预测”与“优化”两阶段。模型假设明确列出你的假设如需求函数形式、损耗率恒定、不考虑缺货惩罚等并说明其合理性。合理的假设是模型成立的前提。符号说明制作一个清晰的三线表列出所有变量和参数。模型建立这是核心。逐步推导从预测模型到优化模型公式要编号并配以文字解释。将非线性约束线性化的过程要详细说明。求解方法说明你使用的算法、软件PythonPuLP/Gurobi、以及如何具体求解如将模型转化为MILP。结果分析展示结果图表如上面的四个子图并加以分析。例如“由图1可见周末第6、7天我们采取了较高的定价同时销量也因需求上涨而增加实现了利润最大化。”、“由图2可见补货策略呈现‘小批量、多频次’特点有效控制了库存水平使其始终低于最大容量I_max。”灵敏度分析改变关键参数如价格弹性beta、最大库存I_max、损耗率theta观察最优利润和策略的变化并分析其管理启示。模型评价与推广客观评价模型的优点如综合考虑定价补货、实用性强和缺点如未考虑需求不确定性、假设价格弹性恒定等并提出可能的改进方向。最后将你的完整代码作为附录提交。代码要有良好的注释关键步骤与论文中的模型描述对应起来。记住评委可能不会运行你的代码但清晰、结构良好的代码能极大增加论文的可信度。
返回列表