刷到 B 题是“太空电梯系统建立月球殖民地”的时候,我第一反应是:这题终于从“地球电梯”升级到“月球电梯”了。太空电梯这个主题在美赛里不算冷门,但 B 题一般不会只让你算一根缆绳——它会把物理可行性、运输调度、基地选址、成本经济全部揉在一起,最后还让你写一份可持续发展的方案。对大多数参赛队来说,最大的难点不是公式,而是不知道从哪一步开始建模。
这篇内容我会按我自己备赛时的顺序来讲:先拆题目、再建物理模型、然后处理运输与优化、最后给出代码框架和论文排版建议。适合正在备赛 MCM 的队伍参考,也适合想快速理解“太空电梯建模套路”的同学阅读。里面的参数和代码我会给到可以直接复制改写的程度,但更重要的是理解每一条公式为什么长这样。
1. 拿到题目先画问题地图:太空电梯不是“造一根缆绳”那么简单
1.1 五个字概括题目本质:把货物送到月球
很多队伍看到“月球殖民地”就开始脑补科幻设定,这是最大的失分点。竞赛题目无论包装成什么样,本质都是一道可以用数学语言描述的系统设计题。太空电梯解决的核心问题只有一个:如何以比火箭更低的成本,把物资从月面持续送到地月空间,或者反过来。月球殖民地只是需求端,它决定了需要运输多少货物、多少人员。
所以第一步不是写代码,而是把题目里所有动词圈出来。比如“设计”“评估”“优化”“权衡”这些词,对应到论文里分别是:设计参数、建立指标、优化模型、敏感性分析。我习惯用一张问题地图把题目拆成三层:
- 物理层:缆绳能否存在,材料强度够不够,张力分布长什么样。
- 交通层:爬升器怎么上下,运力多大,能耗多少,多久能完成运输任务。
- 规划层:基地建在哪,规模如何增长,成本如何回收,风险如何管控。
这三层不是并列关系,而是递进关系。物理层是硬约束,交通层是系统能力的决定因素,规划层才是拿高分的差异化内容。大多数队伍会在物理层花掉80%的时间,到了第三天发现运输和规划还没有模型,最后只能硬凑。这个坑我踩过,所以建议一开始就按三层分配工作量。
1.2 先手算量级:建模的第一步不是列公式
拿到这类题目,我强烈建议先花半小时做一组手算量级估算。量级估算的意义是让你知道题目中哪些因素是主导项,哪些可以安全忽略。太空电梯逃不开这几个数字:
- 月球半径约为 1737 km,表面重力加速度约 1.62 m/s²,是地球的六分之一。
- 月球自转周期约为 27.322 天(潮汐锁定),也就是说它绕自己转一圈需要约 236 万秒。
- 月球的同步轨道半径约为 88460 km,对应距月面高度约 86700 km。
- 地月 L1 点距月球中心约 61500 km,距月面约 59800 km。
这几个数字一出来,关键结论马上就清楚了:如果把缆绳末端只伸到 L1 点,由于 L1 点的离心加速度还不足以抵消月球的引力,缆绳会被“拉回”月球方向,无法自持。理想方案必须让缆绳末端超出月球同步轨道,利用离心力来拉紧整根缆绳,或者在同步轨道以内加一个大型配重。这也是很多人忽略的物理核心:太空电梯不是一根悬在天上的绳子,而是一根“旋转木马上的绳子”,离心力是它立起来的关键。
再算一个运输量级:从月面到末端约 10 万公里,如果爬升器以 1000 m/s 的速度匀速上升,单程大约需要 10 万秒,也就是不到 30 小时。如果速度降到 200 m/s,单程就要 5 天。这个数字直接决定了后续运输模型中的周转时间,也是后面优化的一个重要变量。
1.3 三问拆解法:把“殖民地”需求翻译成运输任务
题目里的“月球殖民地”不会只让你描述生活画面,它一定会给出人口规模或建设目标,比如“支持 100 人长期驻留”或“建成 1000 吨级研究站”。这时候要做的,是把这些目标翻译成运输任务。
我的拆法很简单,用三个问题驱动:
第一问:殖民初期需要从地球或月面运输哪些物资?答案是基础设施模块、生命支持系统、设备仪器、能源装置,还有建设月球电梯本身的材料。这部分是“一次性建设物资”,对应固定的运输总吨位。
第二问:维持运营需要哪些持续补给?氧气、水、食物、备件,对应一个以天或月为单位的补给速率。要注意闭合生命支持系统的回收率:如果水回收率是 90%,每人每天可能需要补充的水量就很少;如果完全不回收,那运输量会直接爆炸。这种细节特别适合写进假设和敏感性分析。
第三问:运输系统需要多长时间完成建设任务?这决定了缆绳长度、爬升器速度、载荷量和配重质量的联合优化。竞赛题往往要求你给出一个“最优方案”,这里的优化目标可以是总成本最低,也可以是最短工期,或者两者权衡。
把这三问的答案整理成表格,论文的问题重述部分就有了骨架,而且后面每个模型都知道该输出什么量。
2. 从张力分布到锥度比:手把手搭出静力学模型
2.1 缆绳上每一段都受三个力
静力学模型是整个 B 题的基础。无论是材料选择、缆绳尺寸,还是配重质量,都要回到张力分布上。
取缆绳上距离月心为 r 的一小段,它主要受三个力:月球引力向内,离心力向外,缆绳截面张力沿绳传递。如果把缆绳截面积设计成与张力成正比(即每段截面的应力都保持在材料的允许应力附近),那么就可以推导出一个非常优雅的微分方程。
定义局部有效重力加速度为:
a_eff(r) = G M / r² - ω² r
其中 G 为引力常数,M 为月球质量,ω 为月球自转角速度。当 a_eff 为正时,表示该处月球引力占优,缆绳需要靠内部的张力来“拉住”上方;当 a_eff 为负时,表示离心力占优,缆绳处于受拉状态。
再设缆绳密度为 ρ,材料允许应力为 σ,截面积为 A(r),张力为 T(r)。利用 A(r) = T(r)/σ,可以消去截面积,得到:
dT/dr = - (ρ / σ) · a_eff(r) · T(r)
这个方程的意思是:张力的相对变化率由当时的局部有效重力决定。低轨区域引力占优,张力随高度下降;过了同步轨道之后,离心力占优,张力又随高度上升。所以整根缆绳的张力分布是一条“先降后升”的曲线,最低点正好在同步轨道附近。
这个模型的好处是只需要一个边界条件:缆绳末端的张力等于配重提供的向心力矩拉力,也就是 T_top = m_cw · (ω² r_top - G M / r_top²)。只要末端在同步轨道外,末端张力就是正的。然后从末端向月面数值积分,就能得到月面锚点处的张力,进而算出所需的截面积和总质量。
2.2 材料参数是模型的命门
太空电梯能不能成立,核心就看材料。碳纳米管是目前最常被拿来做假设的材料,理论拉伸强度可以超过 100 GPa,但实际工程中要打折扣。我在建模时通常把允许应力设为 30~50 GPa,密度取 1300 kg/m³,这样不会显得过于乐观。
如果你想让模型更有区分度,可以列一张材料对比表:
| 材料 | 密度 (kg/m³) | 允许应力 (GPa) | 比强度 (m²/s²) | 备注 |
|---|---|---|---|---|
| 碳纳米管 | 1300 | 50 | 3.85e7 | 主选材料 |
| 石墨烯 | 2200 | 50 | 2.27e7 | 工艺不成熟 |
| Zylon PBO | 1540 | 5.8 | 3.77e6 | 可作对比 |
| 高强钢 | 7850 | 1 | 1.27e5 | 只能当笑话 |
比强度其实就是“允许应力除以密度”,它决定了缆绳自重占多大比例。比强度越高,缆绳可以做得越长而不需要靠锥度来增重。月球电梯之所以比地球电梯容易,就是因为月球引力小且自转周期长,需要的特征长度小得多。
2.3 用 solve_ivp 从末端向月面积分:完整代码
这段代码我建议直接放进论文附录,并且主文里放一张张力分布图。用 Python 的 scipy 可以轻松完成,关键点是积分方向:从末端 r_top 往月面 R0 积分。
import numpy as np from scipy.integrate import solve_ivp G = 6.674e-11 M_moon = 7.346e22 R_moon = 1.737e6 T_period = 27.322 * 86400 omega = 2 * np.pi / T_period rho = 1300.0 # 碳纳米管密度 kg/m3 sigma = 50e9 # 允许应力 Pa r_top = 1.2e8 # 末端半径 12 万 km m_cw = 50000.0 # 配重质量 5 万吨 def a_eff(r): return G * M_moon / r**2 - omega**2 * r T_top = m_cw * (omega**2 * r_top - G * M_moon / r_top**2) def dT_dr(r, T): return -(rho / sigma) * a_eff(r) * T sol = solve_ivp(dT_dr, [r_top, R_moon], [T_top], rtol=1e-8, atol=1e-6) r_arr = sol.t T_arr = sol.y[0] A_bottom = T_arr[-1] / sigma print("月面张力 = {:.2e} N".format(T_arr[-1])) print("月面所需截面积 = {:.2e} m^2".format(A_bottom)) print("直径 = {:.2f} m".format(2 * np.sqrt(A_bottom / np.pi)))这里有个很容易踩的坑:solve_ivp 默认要求时间(自变量)单调变化,从 r_top 到 R_moon 是递减的,这是允许的,但你的初值必须是末端张力 T_top。如果你的边界条件给错位置,比如从月面往上积,就需要猜月面截面积,相当麻烦。从末端往下积,物理意义清晰,数值上也稳定。
算完之后你会发现,月面锚点处截面积可能只有几平方厘米到零点几平方米。这个数字看起来不大,但整根缆绳长度接近 10 万公里,总质量会达到上万吨级。这正好可以作为运输任务输入的初始依据。
3. 爬升器与物资流建模:把“电梯”变成“运输系统”
3.1 爬升器动力学:别一上来就假设匀速
很多队伍做运输模型时直接设定“爬升速度 1000 m/s”,然后算时间。这个做法不是不行,但会丢掉一个重要的物理约束:爬升器需要靠缆绳提供牵引力,而牵引力受限于缆绳表面接触能力和电机功率。
我建议把爬升器的运动分成三段:匀加速段、巡航段、匀减速段。加速度可以取 5 m/s² 到 10 m/s²,对货物来说没有舒适性限制,对人员来说要控制在 5 m/s² 以下。运行阻力包括重力梯度变化、机械摩擦和可能的空气阻力。月球没有大气,所以空气阻力这一项直接删掉,这是一个重要细节。
于是运动方程可以写成:
F_trac - m_climber · a_eff(r) - F_friction = m_climber · a
其中 F_trac 是爬升器由缆绳提供的牵引力,a_eff 是前面的局部有效重力加速度,但要注意爬升器受到的力不是整根缆绳的张力差,而是它提升自重所对抗的等效重力。工程上可以把每单位质量所需的牵引功率写成:
P = F_trac · v / η
η 是电机和传动效率,取 0.7~0.8。这个公式的意义是,速度越高、载荷越重,需要的功率越大。如果你的方案里假设靠激光或微波从月面供能,还要额外把接收效率和波束发散考虑进去。
3.2 运输吞吐量:算一次就知道方案合不合理
吞吐量是整个交通层的输出指标。定义一个“爬升器”的往返周期:
T_round = 2 · (L / v_cruise + t_acc + t_dec + t_load + t_unload)
其中 L 是缆绳有效爬升长度。如果 L 取 9 万公里,巡航速度取 1000 m/s,加速减速各 12 分钟,装卸各 6 小时,单程约 25 小时,往返约 50 小时。这个数字意味着一个爬升器大约两天跑一趟。如果单次运载能力是 200 吨,那一个爬升器每年可运输 3 万吨以上。建一个 100 人殖民地的初期物资如果按 5 万吨算,一台爬升器一年多就能完成。
这个算例告诉我们:太空电梯系统最大的瓶颈往往不是缆绳,而是爬升器数量、装卸效率和能源供应。因此模型里必须把爬升器数量 N 作为决策变量,而不是拍脑袋设成“3 台”。
3.3 用优化模型同时决定爬升器数量与速度
这部分建议做一个单目标或多目标优化模型。决策变量可以是:
- 爬升器数量 N
- 巡航速度 v
- 单次有效载荷 m_payload
- 末端配重质量 m_cw
- 缆绳末端半径 r_top
约束条件包括:
- 缆绳各点应力不超过允许应力
- 爬升器功率不超过最大设计功率
- 同一时刻缆绳上的爬升器间隔大于安全距离
- 完成建设任务的总时间不超过给定年限
目标函数可以选“单位货物运输成本最小”,或者“总成本最低+总时间最短”的双目标。我常用的做法是定义:
C_total = C_cable + N · C_climber + C_energy + C_ops
其中 C_cable 与缆绳总质量成正比,C_climber 与爬升器单价和数量成正比,C_energy 与总需要提升的势能和全程能耗成正比,C_ops 是运营费用。把各分项写清单位,最后统一换成美元或“等价积分”,在摘要页里给一个总成本即可。
求解这种问题不需要太高级的算法,先用网格扫描 + 模拟退火做全局搜索,再用局部搜索精化。不要一上来就上强化学习,MCM 的评审看重的是模型的合理性和结果的可解释性,不是算法有多炫。
4. 从单缆绳到殖民基地:选址与扩张规划模型
4.1 把殖民地需求翻译成“补给流”
很多队伍把殖民地当摆设,只在结论里写一句“可以容纳 100 人”。但真正的高分论文会把殖民地需求化成一个补给方程。
我常用的方式是按“建设物资 + 运营物资”两类统计:
建设物资包括:预制舱段、太阳能板/核反应堆、水冰处理设备、机器人、科学仪器、人员运输舱。运营物资包括:氧气、食物、水补充、备件和消耗品。
可以给出一张“日产需求表”:
| 项目 | 每人每天消耗 | 100 人每天需求 | 假设回收率后需补给量 |
|---|---|---|---|
| 氧气 | 0.84 kg | 84 kg | 若 85% 回收,只需约 12.6 kg |
| 饮用水 | 3 L | 300 L | 若 90% 回收,只需 30 L |
| 食物 | 0.6 kg(干重) | 60 kg | 无回收,60 kg |
| 综合电力 | 3~10 kWh | 1000 kWh | 由核能/太阳能提供,不考虑运输 |
这张表一出来,持续补给速率就有了,运输模型可以算“建设期完成之后还需要多少频次的航班”。这个细节特别能体现建模的完整性。
4.2 基地选址:多准则打分比纯优化更实用
基地选址题目如果没有明确给约束,建议用多准则决策。候选地可以抽象成月球赤道附近的几个区域,也可以基于简单地图划分网格。
评分准则建议覆盖四个方面:
- 与电梯锚点的距离:距离越近,物资转运成本越低。
- 光照条件:月球昼夜各约 14 天,极区部分高地有接近永久光照区域,太阳能利用价值高。
- 水冰资源:极地陨石坑阴影区可能含有水冰,是生命支持系统和燃料生产的关键资源。
- 温度稳定性与地质风险:避开月震活跃带和极端温差区域。
把四类指标标准化后加权求和,权重的选择用熵权法或层次分析法都行。如果想做得更专业,可以画出候选方案的帕累托前沿,展示“越靠近锚点光照越差”的权衡关系。评审很吃这一套,因为它说明你不是只用单一指标拍板。
4.3 扩张阶段:三段式模型最稳
殖民地的建设周期建议分成三个阶段:
阶段一:机器人先遣。运送无人设备和基础发电装置到月面,建设电梯月面锚点。运输总量小,但要求高可靠性。
阶段二:首批人员驻留。完成居住舱、水循环、食物生产系统,人员规模从 10 人增加到 100 人。这一段是物资运输的高峰期。
阶段三:持续运营与科学扩展。人员规模稳定,运输以补给和设备为主,开启资源开采和原位利用。此时太空电梯也开始承担向地月空间运输月面资源的任务。
每个阶段定义一组合适的状态变量:人员数 P(t)、已建成有效载荷能力 I(t)、累计运输量 Q(t)。然后用常微分方程描述增长,比如人员增长率受制于居住舱能力和补给速率。这样写出来,论文的“模型建立”部分就有层次感,而不是只有一根缆绳的静力学。
5. 代码路线图与敏感性分析结果怎么摆
5.1 代码框架:先跑通物理,再扩展优化
我自己的代码结构是这样的:
physics.py:负责静力学模型,输出张力分布、截面积、缆绳总质量。transport.py:负责爬升器运动与吞吐量计算,输出单程时间、年运力。optimize.py:负责优化车队配置与参数扫描。sensitivity.py:负责对材料强度、速度、载荷等参数做敏感性分析。plotting.py:统一出图。
这个结构不复杂,但能保证团队协作时不会所有代码都堆在一个 notebook 里。特别是中文注释一定要写清楚物理单位,我在备赛时就因为把 km 和 m 混用,导致缆绳质量差了一千倍。
5.2 车队配置优化:目标函数与约束的伪代码
优化部分如果不想引入太重的外部库,可以用 scipy.optimize.differential_evolution,它支持带边界的全局优化,也方便处理连续变量。写伪代码的思路是这样:
def transport_cost(x): N, v, m_payload, r_top, m_cw = x # 1) 由静力学模型计算缆绳质量 cable_mass = cable_mass_from_tension(r_top, m_cw) # 2) 计算单程时间 t_oneway = L / v + time_acc + time_load # 3) 年产运力 annual_capacity = N * m_payload * 365.0 * 24 / (2 * t_oneway) if annual_capacity < required_demand: return 1e18 # 不满足需求,给大惩罚 # 4) 总成本 total_cost = cable_cost(cable_mass) + N * climber_cost + energy_cost(t_oneway) return total_cost此处的核心是“不满足约束直接给一个极大惩罚值”,比写复杂的约束函数更省事。如果时间充裕,可以用 DEAP 库做多目标遗传算法,同时绘制总成本与总工期的帕累托前沿图。
5.3 敏感性分析:这几张图能救回印象分
敏感性分析不需要复杂,但要覆盖题目最核心的假设。我建议至少做三张:
第一张:材料允许应力从 10 GPa 扫到 100 GPa,观察月面截面积和缆绳总质量的变化。这张图直接回答“太空电梯方案对材料到底有多敏感”。
第二张:爬升器巡航速度从 200 m/s 扫到 2000 m/s,观察年运力和单位运输成本的变化。这张图直接对应交通层优化。
第三张:月面基地人口目标从 50 扫到 500,观察需要的补给速率和运输频次。这张图让题目里“殖民地规模”这个变量真正进入模型。
画 tornado chart 或热力图都可以,我习惯用 matplotlib 画热力图,因为信息密度高,放在论文里显得很专业。注意所有子图必须统一单位,坐标轴注明“月心距 (km)”还是“距月面高度 (km)”,这种细节非常影响阅读体验。
6. 论文写作:图表的自我解释比你想象的更重要
6.1 按 MCM 评审习惯搭论文骨架
MCM 论文的评审速度比想象中快,结构清晰比文采重要得多。我建议按这个顺序:
- Summary Sheet:单独一页,包含问题简述、模型概述、核心结果、图表各一个。
- 1 问题重述与分析
- 2 模型假设与符号说明
- 3 物理模型:月球太空电梯静力学
- 4 运输模型:爬升器与吞吐量
- 5 规划模型:殖民地需求与选址
- 6 优化与敏感性分析
- 7 模型评价与结论
- 附录:代码、数据表
注意每个模型小节内部都按“建模思路-公式推导-参数说明-结果图表”四步走。不要一个段落里又写背景又写公式又写结果。
6.2 必画图表清单
我把最值得花时间做的图表列成了一张清单,照着画就不会漏:
| 图表位置 | 内容 | 说明 |
|---|---|---|
| 摘要页 | 系统方案示意 | 缆绳从月面延伸到末端配重的示意图 |
| 物理模型 | 张力随月心距变化曲线 | 标明同步轨道位置 |
| 物理模型 | 缆绳截面积随月心距变化曲线 | 直观展示锥度比 |
| 运输模型 | 单程时间-吞吐量曲线 | 直观展示速度与运力关系 |
| 优化模型 | 帕累托前沿图 | 总成本 vs 工期 |
| 敏感性 | 材料应力-总质量热力图 | 让评审快速理解风险点 |
| 规划模型 | 基地选址雷达图 | 多准则决策可视化 |
图表尽量导出 PDF 矢量格式,不要用低分辨率截图,这个细节在最终打印评审时很重要。
6.3 摘要页怎么写才能不丢分
摘要页是整个论文被读的唯一保证。我的写法是五段式:
第一段:一句话点明做什么。不要写“本文研究了太空电梯”,要写“本文建立了月球太空电梯系统的静力学-运输-规划联合模型,并给出了支撑 100 人殖民地的可行参数方案”。
第二段:物理层结果。给出关键数字,例如“末端半径 12 万公里、配重 5 万吨时,月面锚点最大张力为 X N,所需缆绳总质量约 Y 万吨”。
第三段:运输层结果。给出爬升器数量、速度、年运力,以及完成建设任务所需时间。
第四段:优化与敏感性结果。说明哪个参数最敏感,方案鲁棒性如何。
第五段:一句话总结可行性与优势。注意不要空喊口号。
摘要页千万不能出现公式,必须全是结论和数据。评审只会花两分钟看摘要,如果摘要里看不到数字,后面内容写得再好也容易被跳过。
7. 备赛时间线与常见坑
7.1 四天时间怎么分配
真实竞赛只有四天,我建议这样切:
- 第一天上午:全面读题,绘制问题地图,完成量级估算。下午开始写静力学模型,确定材料参数,跑通张力分布代码。
- 第二天:完成爬升器动力学与吞吐量模型,画出缆绳张力和截面积图。晚上开始做优化模型,先用网格扫描找可行范围。
- 第三天:补完殖民地需求与选址模型,完成帕累托前沿,做敏感性分析。晚上开始写论文的物理层和运输层。
- 第四天:上午完成剩余章节和摘要页,下午统一术语、核对单位、检查图表编号,最后留 2 小时整体润色。
这个安排的核心原则是:物理模型第一天就必须落地,运输模型第二天必须出数,第三天必须完成所有图表,第四天只做整合,不写新内容。
7.2 常见坑清单
这里列几个我见过或者踩过的具体的坑:
第一,把地球太空电梯的参数直接搬到月球。地球同步轨道高度约 35786 km,月球同步轨道高度约 86700 km,两者差别巨大。直接用地球参数,缆绳锥度比和张力分布会完全错误。
第二,忘记月球表面没有大气。太空电梯爬升器不需要考虑空气阻力,但需要考虑月尘对机械机构和太阳能板的影响,这两个点很多队伍都漏了。
第三,忽略了月球昼夜长度。月球一昼夜约 29.5 个地球日,太阳能供电会出现连续约 14 天的“黑夜”。如果选择太阳能供能,必须在模型里增加储能系统或者改用核能,否则能源约束崩塌。
第四,把“配重”和“末端锚定”混为一谈。当缆绳末端在同步轨道之外时,靠离心力拉紧即可;如果末端在 L1 点附近,就必须额外讨论动态稳定问题,不能只给一个静力学结果。
第五,单位混用。我见过一名队友把所有长度都用 km,但引力常数用 m 制,结果算出来的力差了 1000 倍。建议所有代码里统一用国际单位制,输出到图表时再转换为 km 或 GJ。
7.3 一点个人经验
近几年美赛的题目里,“硬核物理 + 系统规划”的组合越来越常见,太空电梯正是这种出题风格的典型代表。我自己做这类题最大的体会是:不要等到第三天再考虑优化目标。第一天就应该确定好“什么叫好方案”,是成本低,还是时间短,还是两者权衡。只要这个目标定下来,物理、运输、规划三块模型都会围绕它展开,写论文时自然有一条清晰的主线。
另外,团队里最好有一个人专门负责“查单位”和“查图表编号”,这个角色看起来不重要,但往往决定最终成稿能不能让人一眼看懂。每次参赛我都会在第四天下午做一次“模拟评审”:假设自己是评审,只看摘要、每张图、每个结论的数字是否对得上。这一遍花两小时,比多写两个模型都值得。