MCM520 ← 资料站首页 Testing Time: The Constant Wear On Stairs(优秀范文二:磨损均衡的多目标设计优化) 打开交互阅读器 →

Testing Time: The Constant Wear On Stairs(优秀范文二:磨损均衡的多目标设计优化)

2025 美赛 MCM A 题 · 优秀范文二。视角:把范文一识别的"磨损常数"当作优化对象——以"最大踏步年磨损率 f1f_1 最小"(短板最小化)与"改造成本 f2f_2 最小"为双目标,在段内步数 NN × 设计周期 pp × 材质等级 mm × 出入口加强垫 gg 四维决策空间枚举 510 个方案,筛出帕累托前沿,再用 λ 加权法给出不同预算立场下的推荐方案。正文 / 配图 / 附录 / 真源四路数字一致。

摘要

设计改造的目标不是"平均磨损更少",而是最不利踏步的磨损更少——短板决定寿命。本文把设计问题形式化为双目标规划:min⁡f1=max⁡iLi\min f_1=\max_i L_i(最大年磨损率)、min⁡f2=Cmat(m)+Cpad⋅g\min f_2=C_{\mathrm{mat}}(m)+C_{\mathrm{pad}}\cdot g(改造成本),决策变量为段内步数 N∈[12,28]N\in[12,28]、设计步态周期 p∈[4,8]p\in[4,8]、材质等级 m∈{0,1,2}m\in\{0,1,2\}、出入口局部加强垫 g∈{0,1}g\in\{0,1\},共 510 个候选方案。非支配筛选得到 6 点帕累托前沿:(0.5499 当量/年, 0 千元) → (0.4274, 15) → (0.4124, 40) → (0.3205, 55) → (0.3024, 100) → (0.2350, 115)。λ 加权分析显示:花 15 千元装出入口加强垫即可把全段寿命从 12.9 年提到 23.4 年(+81%),是性价比最高的一档;而追求极限寿命(42.5 年)需要 115 千元的全套组合(N=28,p=4,m=2,g=1N=28,p=4,m=2,g=1)。前沿还揭示明显的边际收益递减:从 55 千元到 100 千元只换来 0.018 当量/年的改善——预算应优先投向几何杠杆与局部加强,而非整段换顶级材质。

一、问题重述

题目第④问要求提出使磨损均衡、延长服役寿命的设计改造,并在成本与寿命间权衡。这本质是一个多目标设计优化:目标一"均衡/寿命"在范文一中已被压缩为单一标量 max⁡iLi\max_i L_i(最不利踏步年磨损率,越小短板寿命越长);目标二"成本"来自材质升级与局部改造的造价。两个目标天然冲突——好材质要花钱、零成本的几何改动改善有限——因此答案不应是一个方案,而是一组帕累托最优方案的谱系,再由决策者按预算立场选择。本文完成这一建模、求解与选择的全流程。

二、模型假设

  1. 磨损载荷场沿用范文一:落点权重 = 均匀基础 + 正弦周期偏置(幅度 ±25%)+ 出入口加成(首末级 +40%、次级 +20%)。
  2. 设计变量相互独立、取值离散:材质等级只改变单步磨损当量的全局乘子(1.00/0.75/0.55),加强垫只把首末两级的局部磨损再减半。
  3. 改造成本按一次性投入计:材质三档分别 0 / 40 / 100 千元,加强垫固定 15 千元;不计施工停运损失(作为灵敏度讨论)。
  4. 人流总量固定 V=4×105V=4\times10^5 人次/年;改造不改变人流(步数变化对通行便利的影响计入讨论而非目标)。
  5. 更换阈值仍取 Wmax⁡=10W_{\max}=10 当量,寿命 =Wmax⁡/f1=W_{\max}/f_1。

三、符号说明

符号 含义
f1f_1 目标一:max⁡iLi\max_i L_i(最大踏步年磨损率)
f2f_2 目标二:总改造成本(千元)
N,  pN,\;p 段内步数、设计步态周期
mm 材质等级(0 基准 / 1 中档 / 2 高档)
gg 出入口局部加强垫开关
eme_m 单步磨损当量乘子(1.00/0.75/0.55)
P\mathcal{P} 帕累托前沿方案集
λ\lambda 加权法中 f1f_1 的权重

四、建模过程

4.1 决策空间与双目标

给定方案 (N,p,m,g)(N,p,m,g),逐级年磨损率为:

Li=V⋅wi(N,p)∑jwj⋅e0⋅em⋅κi(g),κi(g)={0.5g=1, i∈{1,N}1其他L_i=V\cdot\frac{w_i(N,p)}{\sum_j w_j}\cdot e_0\cdot e_m\cdot \kappa_i(g),\qquad \kappa_i(g)=\begin{cases}0.5 & g=1,\ i\in\{1,N\}\\ 1 & \text{其他}\end{cases}

其中 wi(N,p)w_i(N,p) 是范文一的落点权重场。双目标即 f1=max⁡iLif_1=\max_i L_i 与 f2=Cmat(m)+15⋅gf_2=C_{\mathrm{mat}}(m)+15\cdot g。图 8 先把 (N,p)(N,p) 平面(m=g=0m=g=0)的热力铺开:共振谷随 pp 移动,同一 NN 在不同 pp 下差异显著,说明几何参数的联合调优优于逐个扫描。

图8

4.2 枚举与非支配筛选

决策空间 17×5×3×2=51017\times5\times3\times2=510 个方案规模很小,直接全枚举。非支配关系定义为:方案 bb 支配 aa 当且仅当 bb 的两个目标都不劣于 aa 且至少一个严格更优。筛掉全部被支配方案后得到 6 个帕累托解,构成前沿。图 1 把 510 个点铺在目标空间、绿色高亮前沿——绝大多数方案被支配,例如"花钱换了高档材质却在糟糕的 NN 上浪费"的点大量存在:

图1

图2

图 2 连线的前沿呈清晰的阶梯状:0 元档(纯几何优化 N=28,p=8N=28,p=8)已把 f1f_1 从基线 0.7779 压到 0.5499;+15 千元的加强垫一步跳到 0.4274;此后每上一档成本,磨损下降越来越小——阶梯高度递减就是边际收益递减的可视化。

4.3 λ 加权法:三种立场的推荐

为把前沿转化为可执行建议,用加权标量化 min⁡ λf^1+(1−λ)f^2\min\ \lambda\hat f_1+(1-\lambda)\hat f_2(两目标先 min-max 归一)。图 3 展示 λ\lambda 从 0 到 1 扫描时所选方案的 f1f_1 与成本迁移:

图3

三个代表性立场:

  • 省钱立场(λ=0\lambda=0):选零成本方案 (N=28,p=8)(N=28,p=8),f1=0.5499f_1=0.5499,寿命 18.2 年——比放任基线多活 5.3 年且不花一分钱;
  • 均衡立场(λ=0.5\lambda=0.5):选 (N=28,p=4,m=0,g=1)(N=28,p=4,m=0,g=1),f1=0.4274f_1=0.4274、成本 15 千元,寿命 23.4 年(较基线 +81%);
  • 性能立场(λ=1\lambda=1):选全套组合 (N=28,p=4,m=2,g=1)(N=28,p=4,m=2,g=1),f1=0.2350f_1=0.2350、成本 115 千元,寿命 42.5 年。

4.4 各杠杆的贡献分解

图4

图 4 固定其余变量、只动单一杠杆:仅优化 NN 或仅错开 pp 都只能小幅压低 f1f_1;加强垫(15 千元)单独贡献了最大的降幅,因为它精准打击了短板本身(首末级的出入口加成);高档材质降 45% 的 ee 但作用于全体踏步,对"最大值"的帮助反而被短板外的冗余稀释。这印证了多目标优化的经典教训——对 max 型目标,局部补强优于全局升级。

4.5 推荐方案的磨损谱对比

图5

图 5 叠画基线与推荐方案的逐级磨损率谱:基线的"双峰"(出入口 + 共振)被削平成平缓起伏,首末两级因加强垫甚至低于中部若干级——短板被消除后,磨损曲线整体下移且变平,这正是"均衡设计"的字面实现。图 6 给出寿命提升柱:12.9 → 23.4 年。

图6

4.6 成本—寿命曲线与预算建议

图7

图 7 沿前沿画成本-寿命曲线:15 千元处斜率最陡(每千元换约 0.7 年),100 千元以后近乎水平(每千元不足 0.05 年)。若预算只有一个数:15 千元的加强垫 + 免费的几何重排,拿下 81% 的寿命增益;剩余预算应留作未来人流增长后的二次评估,而不是现在就买顶级材质。

把结论落成一张实施路线图:**第一步(图纸期)**在新楼设计中直接采用 N=28N=28、错开共振周期——此时改动只是画一根线,零增量成本;**第二步(交付期)**在两端首末级预装加强垫并纳入年度巡检清单,重点观察垫面磨损深度;**第三步(第 10 年评估)**用实测磨损厚度反演真实的 Ap,ηplat,eA_p,\eta_{\mathrm{plat}},e,代入本文模型重算前沿,决定是否追加材质升级——届时数据将取代假设,前沿会自动给出新的最优档位。这套"先几何、再局部、按实测迭代"的流程,比一次性重投入更稳健也更可辩护。

五、灵敏度分析

  • 人流增长 ±20%:所有 LiL_i 同比例缩放,前沿形状不变、各方案寿命同比例伸缩,排序结论完全稳健;但若预期人流翻倍,应在当前就选 λ=1\lambda=1 方案预留容量。
  • 材质价格波动:若高档材质降价一半(100→50 千元),它将支配原 55 千元档进入前沿,推荐序列改变——前沿方法的价值正在于可以随时代入新价格重算,而不必重建模型。
  • 加强垫衰减:垫层自身会磨损,假设两年后局部减半效果退化为七折,则其前沿点的 f1f_1 从 0.4274 回升到约 0.47,但仍优于 40 千元档——结论方向不变。
  • 施工停运成本:换材质需停用楼梯数日,若计入停运损失,中高档材质的实际成本上浮 20–30%,进一步削弱其性价比,强化"几何优先"的结论。

六、模型评价与改进

优点:把模糊的"均衡设计"翻译成可枚举、可验证的双目标规划;510 方案的穷举保证全局最优性,无陷入局部极值的风险;前沿+加权法两层输出既给数学完备性又给决策可用性。局限:①决策变量离散化了连续世界(如 NN 只取整数、材质只有三档),精细定价需连续松弛;②成本模型未含贴现与多次更换的时间价值,长期视角应用 NPV 重写 f2f_2;③未考虑人流对设计的反馈(步数变化改变行走节奏从而改变 pp 的有效分布);④单段建模,多段接力楼梯的平台相位衔接是自然扩展。改进方向:引入 NSGA-II 处理更大设计空间与第三目标(施工停运时长),并用蒙特卡洛在不确定人流下检验前沿的稳定性。

七、结论

楼梯耐磨设计的正确目标是最小化最不利踏步的磨损而非平均值。四维决策空间的 510 个方案收敛到 6 点帕累托前沿,其形态揭示了清晰的行动顺序:免费的几何重排(N=28N=28、错开周期)先拿走 29% 的负载下降;15 千元的出入口加强垫再砍一刀,把全段寿命从 12.9 年推到 23.4 年(+81%);更贵的材质只在追求 30 年以上服役期时才值得考虑,且边际收益急剧递减。"先改图纸、再补短板、最后才换材料"是本题给出的普适工程顺序。对既有建筑而言,同一框架只需把"图纸改动"换成"改造评估",前沿方法照常适用——这正是把赛题从一道建模题升华为一套可复用决策工具的意义所在。

参考文献

  1. COMAP. MCM Problem A: Testing Time — The Constant Wear On Stairs. 2025.
  2. Pareto V. Manuale di Economia Politica. 1906.(帕累托最优原始概念)
  3. Deb K. Multi-Objective Optimization Using Evolutionary Algorithms. Wiley, 2001.
  4. Marler R. T., Arora J. S. The weighted sum method for multi-objective optimization. Struct Multidisc Optim, 2010.
  5. 范文一真源 tools/gen_mcm2025a.py:落点权重场与载荷标定(本站)。

附录:核心 Python 实现

import sys, os
_HERE = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, os.path.abspath(os.path.join(_HERE, "..", "..", "..", "tools")))
import gen_mcm2025a_2 as M   # 真源:双目标枚举 + 帕累托前沿 + λ加权

# 1) 全枚举与非支配筛选
schemes = M.enumerate_schemes()
front = M.pareto_front(schemes)
print("方案总数=%d  帕累托非支配=%d" % (len(schemes), len(front)))
print("前沿:", sorted([(round(s[0], 4), s[1]) for s in front], key=lambda t: t[1]))

# 2) 三种立场的推荐
bl = M.baseline()
rec_eq = M.weighted_pick(front, 0.5)
rec_max = M.weighted_pick(front, 1.0)
print("基线: f1=%.4f 寿命=%.1f年" % (bl[0], M.life_of(bl[0])))
print("均衡(λ=0.5): f1=%.4f 成本=%.0f千元 寿命=%.1f年 @ N=%d p=%d m=%d g=%d"
      % (rec_eq[0], rec_eq[1], M.life_of(rec_eq[0]), rec_eq[2], rec_eq[3], rec_eq[4], rec_eq[5]))
print("性能(λ=1): f1=%.4f 成本=%.0f千元 寿命=%.1f年 @ N=%d p=%d m=%d g=%d"
      % (rec_max[0], rec_max[1], M.life_of(rec_max[0]), rec_max[2], rec_max[3], rec_max[4], rec_max[5]))