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

资讯详情

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

数学建模实战:从混合整数非线性规划到无线网络资源优化

数学建模实战:从混合整数非线性规划到无线网络资源优化 1. 项目概述一次从零到一的数学建模实战复盘去年我带着团队完整地参与了华为数学建模挑战赛其中D题给我留下了极其深刻的印象。这道题不像传统的纯理论数学题它更像一个从真实业务场景中抽象出来的、需要综合运用多种数学工具和编程能力来解决的复杂系统工程问题。题目通常围绕通信网络、资源调度、路径规划或信号处理等华为实际业务中的痛点展开要求参赛者在有限时间内完成从问题分析、模型建立、算法设计到编程求解、结果分析的全过程。对于很多初次接触数学建模或者习惯了理论推导但缺乏工程实现经验的同学来说这道题既是挑战也是快速提升综合能力的绝佳机会。今天我就以2021年D题为蓝本结合我们团队的实战经验拆解一下面对这类综合性赛题如何高效地完成一次从零到一的建模实战。无论你是准备参加未来的比赛还是希望提升自己解决复杂问题的能力相信这篇复盘都能给你带来一些直接的启发和可操作的“干货”。2. 赛题核心剖析与解题思路构建2.1 题目场景还原与关键信息提取我记得2021年D题的核心场景是关于“无线通信网络中的智能资源分配与优化”。具体来说题目描述了一个多基站、多用户的蜂窝网络环境每个基站有一定的发射功率和频谱资源用户分布在不同位置且有差异化的服务质量QoS需求比如最低速率要求。同时信道条件会随着环境如距离、遮挡动态变化。问题的目标是在满足所有用户基本通信需求的前提下通过动态调整基站的资源分配策略比如哪个基站服务哪个用户分配多少功率和频段使得整个系统的某个综合性能指标达到最优例如系统总吞吐量最大或者总能耗最小。拿到题目后第一步不是急着建模型而是“翻译”和“拆解”。我们花了将近一个小时在白板上反复梳理做了以下几件事明确变量找出所有我们可以控制的“决策变量”。在这个题里主要就是“用户-基站”的关联关系矩阵一个用户是否由某个基站服务以及基站分配给关联用户的功率和频谱资源量。这些变量通常是0-1变量或连续变量。理清约束把所有限制条件列出来。这包括每个用户的QoS必须被满足速率不低于门限每个基站的发射功率有上限频谱资源总量有限一个用户通常只能由一个基站服务或至多由少数几个协同服务还有信道容量公式香农公式本身就是一个非线性约束。定义目标确认要最大化或最小化的那个目标函数。题目可能直接给出如“最大化系统总速率”也可能需要我们自己从“高效”、“绿色”等描述中提炼比如“在满足所有用户需求的前提下最小化所有基站的总发射功率”。注意数学建模赛题的文字描述往往包含冗余信息和干扰项。关键是要用数学语言集合、变量、公式重新精准地定义问题。我们当时把问题归纳为“给定用户集合、基站集合、信道状态信息求解最优的关联关系和资源分配方案以最大化系统总效用并满足一系列物理和业务约束。” 这个归纳过程本身就为后续建模奠定了坚实基础。2.2 模型类型判断与核心难点识别将问题翻译成数学语言后接下来要判断模型的类型。这直接决定了我们后续求解算法的选择。通过分析我们识别出这个问题的几个核心特征也即难点所在混合整数非线性规划MINLP决策变量中既有整数变量如0-1的关联变量又有连续变量如功率、带宽分配。目标函数或约束条件中包含了非线性项如基于香农公式的速率计算涉及log2(1SINR)其中信干噪比SINR本身又是功率变量的复杂分式函数。这是最棘手的一点因为MINLP问题通常属于NP-hard很难直接求得全局最优解。高维与组合爆炸用户和基站数量稍多比如几十个用户十几个基站可能的关联组合就是一个天文数字。穷举法完全不现实。约束耦合紧密用户的速率约束依赖于为其服务的基站分配的功率同时也受到其他基站对其造成的干扰影响。功率、关联、干扰三者相互耦合牵一发而动全身。面对这样一个复杂模型直接求解精确最优解在比赛时间内几乎不可能。因此解题思路的核心必然在于“合理化简”与“高效近似”。我们的思路是进行“分步解耦”和“智能启发”思路一分步优化。将联合优化问题分解为两个相对独立的子问题先解决“用户关联”整数规划部分再在固定关联关系下解决“资源分配”连续变量优化部分。当然这两步可以迭代进行。思路二基于规则的启发式算法。针对用户关联问题设计合理的启发式规则例如让用户优先关联到信道条件最好的基站或采用图论中的匹配算法。思路三将非线性约束线性化近似。对于香农公式这类非线性项可以在典型工作点附近进行一阶泰勒展开将其近似为线性约束从而将原问题转化为混合整数线性规划MILP虽然仍有难度但已有成熟的求解器如Gurobi, CPLEX可以处理中等规模的问题。思路四元启发式算法。如果问题规模允许可以考虑采用遗传算法、模拟退火、粒子群优化等智能优化算法来搜索全局较优解。这类算法不依赖于问题的严格数学性质适用于黑箱优化但调参复杂且解的质量不一定稳定。我们团队最终采用了“分步优化 线性化近似 商用求解器”为主“启发式规则”为辅的混合策略。先设计一个快速的初始关联方案然后固定关联将资源分配问题构建为MILP模型调用求解器求解。根据求解结果再对关联关系进行局部调整迭代几次。3. 模型建立与算法设计细节3.1 数学模型的精确构建基于上述思路我们开始构建具体的数学模型。这是整个比赛中最需要严谨和细致的一环。首先定义集合和参数$\mathcal{U}$用户集合索引 $u$。$\mathcal{B}$基站集合索引 $b$。$h_{b,u}$基站 $b$ 到用户 $u$ 的信道增益这是一个关键输入参数通常由距离路径损耗、阴影衰落等模型生成。$P_b^{max}$基站 $b$ 的最大发射功率。$W$系统总带宽假设均匀分配或作为优化变量。$N_0$噪声功率谱密度。$R_u^{min}$用户 $u$ 的最低速率需求。然后定义决策变量$x_{b,u} \in \{0, 1\}$二进制变量表示用户 $u$ 是否关联到基站 $b$。$p_{b,u} \ge 0$连续变量表示基站 $b$ 分配给用户 $u$ 的功率。显然如果 $x_{b,u}0$则 $p_{b,u}0$。可能还有带宽分配变量 $w_{b,u}$这里为简化假设带宽固定分配或已包含在信道增益中。接着写出核心的信干噪比SINR和速率公式用户 $u$ 在基站 $b$ 服务下的 SINR 为 $\gamma_{b,u} \frac{p_{b,u} \cdot h_{b,u}}{N_0 \sum_{b \in \mathcal{B}\setminus\{b\}} p_{b,u} \cdot h_{b,u}}$ 分母中的求和项就是其他基站对用户 $u$ 造成的干扰。这是整个模型非线性和耦合的根源。 对应的可达速率为根据香农公式 $r_{b,u} \log_2(1 \gamma_{b,u})$最后构建优化问题目标最大化系统总吞吐量 $\sum_{b\in\mathcal{B}}\sum_{u\in\mathcal{U}} r_{b,u}$。约束每个用户至少或恰好关联到一个基站$\sum_{b\in\mathcal{B}} x_{b,u} 1, \quad \forall u \in \mathcal{U}$。基站功率限制$\sum_{u\in\mathcal{U}} p_{b,u} \le P_b^{max}, \quad \forall b \in \mathcal{B}$。功率与关联变量逻辑关系$p_{b,u} \le P_b^{max} \cdot x_{b,u}, \quad \forall b \in \mathcal{B}, u \in \mathcal{U}$。这个约束确保如果 $x_{b,u}0$则 $p_{b,u}0$。用户 QoS 约束$\sum_{b\in\mathcal{B}} r_{b,u} \ge R_u^{min}, \quad \forall u \in \mathcal{U}$。变量域约束。这个原始模型就是一个典型的、难以直接求解的 MINLP。3.2 关键线性化技巧与问题转化为了应用高效的 MILP 求解器我们必须处理掉目标函数和 QoS 约束中的非线性项 $r_{b,u} \log_2(1\gamma_{b,u})$。我们采用了分段线性化Piecewise Linear Approximation, PWA的方法。具体操作如下确定 SINR 范围根据网络参数估算出 $\gamma_{b,u}$ 可能的取值范围 $[\gamma_{min}, \gamma_{max}]$。分段将这个区间划分为 $K$ 个小区间区间端点值为 $\Gamma_0, \Gamma_1, ..., \Gamma_K$其中 $\Gamma_0 \gamma_{min}, \Gamma_K \gamma_{max}$。引入辅助变量和约束对于每一对 $(b,u)$我们引入一组新的连续变量 $\lambda_{b,u,k} \ge 0$ 和一个二进制变量 $z_{b,u,k} \in \{0,1\}$其中 $k 1,...,K$。其物理意义是$\gamma_{b,u}$ 的值由这些分段线性组合而成且只能落在一个分段内。用线性组合近似非线性函数$\gamma_{b,u} \sum_{k1}^{K} \lambda_{b,u,k} \cdot \Gamma_{k-1}$ 实际实现时需用 SOS2 约束或特殊有序集约束来保证连续性在建模语言中如 AMPL、GAMS 或 Pyomo 中有直接支持。$r_{b,u} \approx \sum_{k1}^{K} \lambda_{b,u,k} \cdot \log_2(1\Gamma_{k-1})$。约束 $\sum_{k1}^{K} \lambda_{b,u,k} 1$并且至多只有两个相邻的 $\lambda$ 非零SOS2 约束。通过这种方式我们将非线性的速率计算转化为了关于辅助变量 $\lambda$ 的线性表达式。虽然引入了大量新的变量和约束但成功地将 MINLP 转化为了一个更大规模的 MILP。只要分段足够细近似精度是可以接受的。在比赛环境中这是一个在求解难度和模型精度之间非常实用的权衡。实操心得分段线性化的段数 $K$ 需要仔细选择。段数太少近似误差大可能导致结果不可行如 QoS 无法满足或远离最优段数太多则问题规模急剧膨胀求解时间可能无法承受。我们通过前期的小规模测试比如 3个基站5个用户测试了 K5, 10, 20 等情况发现 K10 在精度和速度上取得了较好的平衡。这是一个重要的调参过程。4. 编程实现与求解过程实录4.1 工具链选择与环境搭建工欲善其事必先利其器。数学建模比赛不仅是数学能力的比拼也是编程和工具使用效率的比拼。我们的工具链如下建模语言Python Pyomo。Pyomo 是一个强大的 Python 优化建模库可以方便地定义变量、约束、目标并且能无缝对接多种商业和开源求解器。相比直接写 C 或 MATLAB 的优化工具箱Pyomo 语法更直观调试更方便。求解器Gurobi。这是当时我们学校有教育许可证的一款顶尖商业 MILP 求解器。它的求解效率非常高并且对 Pyomo 支持良好。如果无法获得商业求解器开源的CBC或SCIP也是不错的选择只是性能上会有差距。辅助计算与绘图NumPy, Pandas, Matplotlib。用于数据处理、初始信道增益计算、结果分析和可视化。版本控制Git。虽然比赛时间短但用 Git 管理代码可以避免版本混乱特别是在最后时刻修改模型或参数时能快速回退。环境搭建的第一步就是确保 Pyomo 和 Gurobi 能够正确通信。我们需要安装pyomo和gurobipy包并配置好 Gurobi 的许可证。我们赛前就在比赛用机上完成了这些配置并写了简单的测试脚本确保求解一个线性规划问题能成功。4.2 代码结构与求解流程我们的代码主要分为以下几个模块结构清晰便于协作和调试data_generator.py根据题目描述的参数范围生成模拟的网络场景数据。包括随机生成用户和基站的位置、计算路径损耗我们用了简化的 COST231-Hata 模型、生成阴影衰落、计算信道增益 $h_{b,u}$以及随机生成用户 QoS 需求 $R_u^{min}$。我们在这里固定了随机种子确保结果可复现。model_builder.py核心模块。定义了一个函数build_model(data, K)其中data是包含所有参数的数据结构K是分段线性化的段数。在这个函数里我们用 Pyomo 创建具体的模型对象用pyo.Var定义 $x_{b,u}$ (Binary) $p_{b,u}$ (NonNegativeReals)以及分段线性化引入的辅助变量 $\lambda_{b,u,k}$ 和 $z_{b,u,k}$。用pyo.Constraint添加所有约束包括关联约束、功率约束、逻辑约束、QoS约束使用线性化后的速率近似值以及最关键的分段线性化约束这里我们使用了 Pyomo 的SOS2工具。用pyo.Objective定义最大化总吞吐量的目标函数。solver_manager.py负责调用求解器。我们设置求解时间限制例如 300 秒、最优间隙容忍度MIPGap例如 0.01即 1%然后启动求解。并记录求解状态、目标值、求解时间等信息。main.py主程序。串联整个流程读入或生成数据 - 调用build_model构建模型 - 调用求解器 - 提取并分析结果如各用户的实际速率、基站的功率使用情况- 输出结果表格和绘制网络拓扑与关联关系图。heuristic_initializer.py可选但推荐在调用精确求解器之前先运行一个快速的启发式算法例如基于最强接收信号强度关联得到一个可行的初始解。将这个初始解通过model.x[b,u] initial_value的方式提供给 Gurobi可以显著加快其求解进程因为求解器从一个较好的起点开始分支定界。# 代码片段示例在Pyomo中定义SOS2约束进行分段线性化概念性展示 from pyomo.environ import * model ConcreteModel() # ... 定义集合、参数、其他变量 ... # 假设我们已经有了 gamma_val[b,u] 和 rate_val[b,u] 作为分段点 # 引入lambda变量 model.lambda_var Var(model.B, model.U, model.SEGMENTS, withinNonNegativeReals) # 引入辅助变量用于SOS2 model.y_sos Var(model.B, model.U, withinNonNegativeReals) # 约束gamma的线性化表示 def gamma_linear_rule(model, b, u): return model.gamma[b,u] sum(model.lambda_var[b,u,k] * gamma_val[b,u][k] for k in model.SEGMENTS) model.gamma_linear_con Constraint(model.B, model.U, rulegamma_linear_rule) # 约束rate的线性化表示 def rate_linear_rule(model, b, u): return model.rate_approx[b,u] sum(model.lambda_var[b,u,k] * rate_val[b,u][k] for k in model.SEGMENTS) model.rate_linear_con Constraint(model.B, model.U, rulerate_linear_rule) # 约束lambda之和为1 def lambda_sum_rule(model, b, u): return sum(model.lambda_var[b,u,k] for k in model.SEGMENTS) 1 model.lambda_sum_con Constraint(model.B, model.U, rulelambda_sum_rule) # 关键添加SOS2约束。Pyomo中可以通过add_sos2方法这里展示概念。 # 实际中对于每个(b,u)需要构建一个 (lambda_var[b,u,k], gamma_val[b,u][k]) 的列表然后声明为SOS2。 # 以下为伪代码实际API请参考Pyomo文档。 # for b in model.B: # for u in model.U: # sos_set [(model.lambda_var[b,u,k], gamma_val[b,u][k]) for k in model.SEGMENTS] # model.add_sos2(sos_set, ‘gamma_sos_{}_{}’.format(b,u))求解过程并非一帆风顺。我们第一次构建的模型对于 5基站20用户 的场景Gurobi 跑了 10 分钟仍然没有找到可行解。通过检查求解器的日志我们发现“根节点松弛解”的目标值非常差这意味着我们的模型松弛后的问题太松了导致分支定界树搜索效率极低。5. 性能调优与问题排查实战5.1 求解效率瓶颈分析与优化面对求解缓慢的问题我们进行了如下排查和优化检查模型紧致性MILP 求解器的效率极大依赖于模型的“紧致性”。我们通过添加额外的有效不等式来收紧模型的线性规划松弛。添加割平面例如对于功率约束和关联逻辑约束我们可以推导出更紧的形式。一个经典的技巧是对于每个基站 $b$ 和用户 $u$有 $p_{b,u} \le P_b^{max} \cdot x_{b,u}$。但这还不够紧。考虑到如果用户 $u$ 关联到基站 $b$它至少需要一定的功率 $p_{b,u}^{min}$ 才能满足其最低速率在忽略干扰的乐观估计下。我们可以添加不等式$p_{b,u} \ge p_{b,u}^{min} \cdot x_{b,u}$。这样当 $x_{b,u}1$ 时$p_{b,u}$ 被限制在一个更小的区间内松弛后的可行域变小松弛解的质量更高。利用问题特性添加约束例如一个基站服务的用户数不可能超过其资源所能支持的最大数量一个粗略上界。我们可以添加约束 $\sum_{u} x_{b,u} \le N_b^{max}$。这能有效减少不必要的搜索分支。提供高质量的初始解这是我们提速最有效的一步。我们放弃了让求解器从零开始搜索而是先运行一个快速的贪婪启发式算法步骤1每个用户选择信道增益 $h_{b,u}$ 最大的基站作为候选。步骤2按用户需求 $R_u^{min}$ 从高到低排序。步骤3遍历排序后的用户尝试将其关联到候选基站。如果该基站剩余功率根据一个简单的功率分配估计如注水算法能够满足该用户需求则关联成功并更新基站剩余功率否则尝试关联到次优基站以此类推。步骤4将得到的关联关系 $x_{b,u}$ 作为初始解输入给 Gurobi。同时根据这个关联关系用注水算法估算一个初始功率分配 $p_{b,u}$ 也一并输入。这样做之后同样规模的模型求解器在 1 分钟内就找到了一个可行解并在 5 分钟内将最优间隙缩小到了 2% 以内。调整求解器参数设定时间限制比赛时间有限我们设定了每个场景的最大求解时间如 600 秒。设定最优间隙我们并不强求绝对最优解。设置MIPGap0.02告诉求解器当找到的解与理论下界的差距在 2% 以内时就可以停止并报告当前解为最优解。这能大幅缩短求解时间。聚焦可行性在初期如果求解器长时间找不到可行解可以设置SolutionLimit1或调整Heuristics参数让求解器更专注于寻找第一个可行解。5.2 结果分析与模型验证求解器输出结果后不能直接拿来就用必须进行严谨的后验分析。可行性验证将求解器得到的 $x_{b,u}$ 和 $p_{b,u}$ 代入原始的、未线性化的SINR 和速率公式中重新计算。检查每个用户的真实速率 $\sum_b r_{b,u}$ 是否真的大于等于 $R_u^{min}$由于线性化是近似这里可能出现微小 violation。每个基站的总功率 $\sum_u p_{b,u}$ 是否真的不超过 $P_b^{max}$ 我们确实发现了少数用户速率略低于需求的情况 violation 在 1% 左右。对于这种情况我们的处理方法是在论文中如实说明并解释这是由于分段线性化引入的近似误差但误差在可接受范围内。同时我们可以做一个微调对于这些不满足需求的用户在固定关联关系的前提下微增其服务基站的发射功率直到刚好满足需求。这通常只涉及很小的功率调整不会对整体目标造成大的影响。敏感性分析为了体现模型的鲁棒性和我们思考的深度我们做了简单的敏感性分析。例如改变用户密度模拟用户数量增多业务繁忙和减少业务空闲的场景观察系统总吞吐量和功率利用率的变化趋势。结论符合直觉用户越多总吞吐量增加但平均每用户速率可能下降功率利用率升高。改变 QoS 要求将所有用户的 $R_u^{min}$ 提高 20%重新求解。观察有多少用户的需求无法被满足成为“掉线用户”以及系统总吞吐量的变化。这能评估网络的服务能力极限。改变信道模型在生成数据时加入更严重的阴影衰落或快衰落观察优化方案的性能波动。这引出了“鲁棒优化”的潜在方向可以作为论文的“未来展望”部分。方案对比与优势展示为了凸显我们优化方案的价值我们设置了对比基线。基线1最近基站关联每个用户简单地关联到距离最近的基站然后基站均匀分配功率给所有关联用户。基线2最强信号关联每个用户关联到接收信号最强的基站功率分配同基线1。我们的方案联合优化关联和资源分配。 我们将三个方案在相同随机场景下进行测试比较系统总吞吐量、满足 QoS 的用户比例、总功耗等指标。用柱状图或表格清晰展示我们的方案在总吞吐量上提升了 30%-50%同时能服务更多的用户。这种对比使论文的结论非常有力。6. 论文撰写要点与答辩准备心得数学建模比赛的成果最终体现在论文上。一篇逻辑清晰、表述专业的论文是取得好成绩的关键。6.1 论文核心章节结构与写作技巧我们的论文结构大致如下供参考摘要重中之重采用“问题-方法-结果-结论”的结构。用精炼的语言说明研究了什么问题无线网络资源分配建立了什么模型基于 MINLP 转化 MILP 的联合优化模型采用了什么算法分段线性化与商业求解器结合辅以启发式初始化得到了什么结果相比基准方案吞吐量提升 X%功耗降低 Y%得出什么结论所提方案能有效提升网络效率。问题重述与分析不要照抄题目。用自己的话梳理问题的背景、目标、约束和难点。画出系统模型示意图。模型假设与符号说明列出所有合理的假设如信道信息已知、用户静止等。用表格清晰列出所有集合、参数、变量及其含义和单位。数学模型这是核心。分小节阐述原始 MINLP 模型清晰列出目标函数和所有约束公式并给出文字解释。模型分析与转化重点阐述为什么这是个难解的问题以及我们如何通过分段线性化技巧将其转化为 MILP。这里要给出线性化的详细推导过程和图解画出 log 函数和分段线性近似的对比图。最终求解模型给出转化后的完整 MILP 模型公式。算法设计与实现阐述求解流程。包括启发式初始解生成算法画流程图或伪代码、分段线性化具体实现、调用求解器的步骤和参数设置。数值结果与分析仿真参数设置用表格列出所有参数基站数、用户数、功率、带宽、噪声、QoS 范围等。基准方案定义用于对比的基准方案。结果展示用精心设计的图表展示结果。例如网络拓扑与关联关系可视化图、不同方案下的系统吞吐量对比柱状图、用户满意度QoS 满足率对比图、功率利用率曲线等。敏感性分析展示用户数、QoS 需求变化对性能的影响。结果分析对每一个图表都要配以文字说明指出“我们看到了什么现象”、“这个现象说明了什么”、“为什么会产生这个现象”。结论与展望总结全文工作重申主要贡献。展望可以改进的地方例如考虑移动性、考虑更复杂的干扰模型、尝试深度强化学习等智能算法等。参考文献规范引用。附录可以放核心代码的片段不宜过长。写作心得图表胜过千言万语。多用高质量的图表如 MATLAB 或 Python Matplotlib 生成来展示你的模型、算法流程和结果。图表务必清晰、标注完整。在描述算法时伪代码比纯文字更直观。在分析结果时要结合通信原理知识进行解释体现专业深度。6.2 答辩准备与常见问题预演答辩环节是展示团队风采和加深评委印象的机会。我们准备了 10 分钟的讲稿和 PPT并反复演练。PPT 制作要点风格简洁专业避免花哨动画。每页只讲一个核心点。多用图表少堆砌文字。逻辑主线清晰问题 - 难点 - 我们的思路 - 模型 - 算法 - 结果 - 结论。讲稿准备要点团队三人分工明确每人负责讲述自己最熟悉的部分建模、编程、写作/演讲。开场白要吸引人可以从一个简单的例子引出复杂问题。重点讲清楚“我们是如何思考的”和“我们模型的创新点/巧妙之处在哪里”比如分段线性化的处理、启发式初始解的提供。对结果的分析要透彻不能只说“提升了50%”要解释“为什么能提升”。预演评委可能的问题为什么选择分段线性化而不是其他方法比如凸近似回答我们考虑了凸近似但原问题的非凸性较强直接凸近似可能偏差较大。分段线性化虽然引入了更多变量但能通过控制分段数来平衡精度和复杂度且能直接利用成熟的 MILP 求解器在比赛时间限制下更可靠。你们的启发式初始解算法复杂度是多少回答主要是排序和遍历复杂度是 O(B*U log U)对于比赛规模的数据是瞬间完成的不会成为瓶颈。如果用户是移动的你们的模型如何适应回答这是一个很好的扩展方向。在当前模型中我们假设了信道信息在优化周期内是固定的。对于慢移动场景可以周期性地执行我们的优化算法。对于快移动场景则需要结合预测算法或者转向基于强化学习的在线优化框架这是我们未来可以研究的方向。你们的结果中有用户的需求没有被严格满足怎么看待这个问题回答我们注意到了这个由于模型近似带来的微小偏差。在实际通信系统中可以通过一个快速的功率微调环来解决。在我们的仿真中偏差小于 1%我们认为在工程上是可接受的。这也说明了我们模型的有效性。通过这样一次完整的竞赛实战我们不仅收获了奖项更重要的是系统性地锻炼了将复杂现实问题抽象为数学模型、利用优化理论和编程工具求解、以及清晰呈现结果的全套能力。这道 D 题就像一块试金石检验和提升了我们解决综合性工程问题的硬实力。希望这份详细的复盘能为你未来的建模之路提供一份切实可行的“地图”。
返回列表