12 KiB
12 KiB
Task 2: 系统不确定性与鲁棒性分析 (v2)
本目录实现 MCM 2026 Problem B 任务二:
To what extent does your solution(s) change if the transportation systems are not in perfect working order (e.g., swaying of the tether, rockets fail, elevators break, etc.)?
版本说明 (v2 审计后修正)
| 改进项 | v1 问题 | v2 修正 |
|---|---|---|
| 完成时间分布 | 二分搜索中重复随机采样 | 使用期望值函数保证单调性 |
| 能量口径 | 只报告无条件均值 | 分条件/无条件两种口径 |
| 电梯效率 | 能量÷效率(逻辑错误) | 能量∝交付量(效率影响交付) |
| 失败能量 | 固定 30% | 分阶段加权 44.2%(引用 FAA 数据) |
| 结论表述 | "膝点右移 40 年" | 决策区间 + 风险偏好表 |
一、问题分析与建模思路
1.1 问题本质
任务二要求回答的核心问题是:在系统存在不确定性时,最优解决方案会如何变化?
这不仅仅是计算"能耗增加多少",而是要回答:
- 原来的最优工期(膝点)还适用吗?
- 需要预留多少时间/资源冗余?
- 哪些因素对结果影响最大?
1.2 不确定性来源
| 不确定性 | 物理机制 | 影响 |
|---|---|---|
| 火箭发射失败 | 发动机故障、天气中止、轨道偏差 | 有效发射次数减少 |
| 电梯故障/维护 | 机械故障、缆绳摆动、定期维护 | 运力间歇性中断 |
| 天气/窗口约束 | 恶劣天气、发射窗口限制 | 可发射天数减少 |
| 载荷损失 | 对接失败、运输损坏 | 实际交付量减少 |
1.3 建模方法选择
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 确定性分析 | 简单、快速 | 无法量化风险 | 初步估算 |
| 期望值分析 | 考虑均值影响 | 忽略分布尾部 | 快速敏感性 |
| 蒙特卡洛模拟 | 完整分布、风险量化 | 计算量大 | 本方案 |
| 逐日仿真 | 最真实 | 极慢 | 验证/附录 |
二、数学原理
2.1 二项分布模型(发射成功/失败)
火箭发射是独立的伯努利试验,成功概率为 (p)。在 (n) 次尝试中,成功次数 (X) 服从二项分布:
X \sim \text{Binomial}(n, p)
2.2 Beta 分布(概率参数采样)
对于 ([0,1]) 区间的概率参数,Beta 分布是自然选择:
p \sim \text{Beta}(\alpha, \beta)
给定均值 (\mu) 和标准差 (\sigma),可反解参数。
2.3 完成时间分布(v2 修正:单调性保证)
完成时间定义为首次达到目标的时间:
T^* = \inf\{T: D(T) \ge M\}
其中交付函数 (D(T)) 使用期望值计算:
D(T) = E_{\text{elevator}}(T) + E[\text{rocket}(T)]
这保证了 (D(T)) 单调递增,避免了 v1 中二分搜索每步重新采样导致的非单调问题。
2.4 失败能量分阶段建模(v2 新增)
失败发射的能量损失取决于失败阶段(参考 FAA AST 报告):
| 失败阶段 | 能量损失比例 | 发生概率 |
|---|---|---|
| 发射前中止 | 5% | 15% |
| 一级飞行失败 | 35% | 50% |
| 上面级失败 | 70% | 30% |
| 轨道转移失败 | 100% | 5% |
| 加权平均 | 44.2% | - |
三、算法实现
3.1 核心算法:聚合 MC + 二项分布
def monte_carlo_binomial(target_years, params, n_simulations):
# Step 1: 采样参数(Beta/三角分布)
# Step 2: 计算电梯交付(能量∝交付量)
# Step 3: 成功发射次数(二项分布采样)
# Step 4: 失败能量(分阶段加权)
# Step 5: 返回条件/无条件能量分布
3.2 条件能量 vs 无条件能量(v2 新增)
# 无条件能量(包含未完成的模拟)
energy_mean = np.mean(total_energy)
# 条件能量(只算完成的模拟)
completed_mask = completed.astype(bool)
energy_given_completed = np.mean(total_energy[completed_mask])
四、运行方式
cd p2
python uncertainty_analysis.py
五、不确定性参数
| 参数 | 均值 | 标准差 | 分布 | 物理含义 |
|---|---|---|---|---|
| 火箭成功率 | 97% | 1.5% | Beta | 发射成功概率 |
| 电梯可用率 | 90% | 4% | Beta | 故障/维护导致的有效运行时间 |
| 天气因子 | 80% | 8% | Beta | 可发射天数占比 |
| 损失率 | 1% | 0.5% | 三角 | 运输过程载荷损失 |
| 电梯效率 | 95% | 2% | Beta | 缆绳摆动等效率损失 |
六、程序运行输出 (v2)
================================================================================
MOON COLONY LOGISTICS - UNCERTAINTY ANALYSIS (TASK 2) v2
Revised: Binomial MC + Monotonic Time + Conditional Energy + Decision Table
================================================================================
1. UNCERTAINTY PARAMETERS (Beta/Triangular)
--------------------------------------------------
Rocket Success: 97.0% (σ=1.5%)
Elevator Avail: 90.0% (σ=4.0%)
Weather Factor: 80.0% (σ=8.0%)
Loss Rate: 1.00% (σ=0.50%)
Elevator Efficiency: 95.0% (σ=2.0%)
2. DETERMINISTIC BASELINE (139 years)
--------------------------------------------------
Total Energy: 24343 PJ
Elevator Payload: 74.6 M tons
Rocket Payload: 25.4 M tons
Launches: 202,856
3. MONTE CARLO SIMULATION (Binomial Model)
--------------------------------------------------
Simulations: 2,000
Completion Prob: 98.2%
Energy Mean (all): 28588 PJ (+17.4%)
Energy P95 (all): 30551 PJ
Energy Mean (|completed):28577 PJ (+17.4%)
Energy P95 (|completed): 30517 PJ
Avg Successful Launches: 291,675
Avg Failed Launches: 8,973
Failure Energy Ratio: 44.2% (weighted avg)
4. COMPLETION TIME DISTRIBUTION (Monotonic)
--------------------------------------------------
Mean: 124.2 years
Std: 6.6 years
P5/P50/P95: 114.5 / 123.2 / 135.9
5. DECISION GUIDANCE (ANSWER TO TASK 2)
--------------------------------------------------
Task 1 recommended knee point: 139 years
DECISION TABLE (Risk Preference → Timeline):
┌─────────────────┬──────────┬───────────┐
│ Risk Tolerance │ Timeline │ Energy P95│
├─────────────────┼──────────┼───────────┤
│ Aggressive (P≥90%) │ 133 y │ 31377 PJ│
│ Standard (P≥95%) │ 138 y │ 31002 PJ│
│ Conservative (P≥99%) │ 146 y │ 29673 PJ│
└─────────────────┴──────────┴───────────┘
Knee point in feasible region (P≥95%): 150 years
→ This is the Time-Energy tradeoff optimum within the safe zone
================================================================================
ANSWER TO 'TO WHAT EXTENT DOES YOUR SOLUTION CHANGE?'
--------------------------------------------------
1. Energy penalty: +17% (unconditional mean)
Energy penalty: +17% (given completion)
2. Failed launches: ~8,973 (3.1% of successful)
3. Recommended timeline RANGE: 138-150 years
- 138y: minimum for 95% reliability
- 150y: optimal time-energy tradeoff
4. Most sensitive factor: Elevator Availability
================================================================================
七、核心结果 (v2)
7.1 确定性 vs 不确定性对比(139年膝点)
| 指标 | 确定性模型 | MC模拟 | 变化 |
|---|---|---|---|
| 总能量(无条件) | 24,343 PJ | 28,588 PJ | +17.4% |
| 总能量(条件) | 24,343 PJ | 28,577 PJ | +17.4% |
| 能量 P95 | - | 30,551 PJ | 风险上界 |
| 完成概率 | 100% | 98.2% | - |
| 成功发射 | 202,856 | 291,675 | +43.8% |
| 失败发射 | 0 | 8,973 | 新增 |
v2 说明:条件能量和无条件能量非常接近(因为完成概率高达98%),但当完成概率较低时二者会有显著差异。
7.2 完成时间分布
| 统计量 | 数值 | 物理含义 |
|---|---|---|
| 均值 | 124.2 年 | 平均完成时间 |
| 标准差 | 6.6 年 | 时间不确定性 |
| P5 / P50 / P95 | 114.5 / 123.2 / 135.9 年 | 概率分位数 |
7.3 决策指导表(ANSWER TO TASK 2)
| 风险偏好 | 最短时间线 | 能量 P95 | 说明 |
|---|---|---|---|
| 激进 (P≥90%) | 133 年 | 31,377 PJ | 10%失败风险 |
| 标准 (P≥95%) | 138 年 | 31,002 PJ | 推荐选择 |
| 保守 (P≥99%) | 146 年 | 29,673 PJ | 近乎无风险 |
可行域膝点:150 年(在 P≥95% 区域内的时间-能量权衡最优点)
八、敏感性分析详细数据
| 参数 | 取值 | 完成概率 | 能量均值 (PJ) | vs 确定性 |
|---|---|---|---|---|
| 基准 | - | 97.5% | 28,600 | +17.5% |
| 火箭成功率 | 93%→99% | 96%→98% | 微降 | -1% |
| 电梯可用率 | 80%→95% | 84%→99% | 显著降 | -14% |
| 天气因子 | 70%→90% | 87%→99% | 微变 | ~0% |
最敏感因素:电梯可用率
九、输出图表
9.1 蒙特卡洛模拟结果
9.2 解决方案变化(核心图)
9.3 完成时间分布
9.4 敏感性分析
9.5 情景对比
十、关键结论 (v2)
回答:"To what extent does your solution change?"
1. 能量惩罚:+17%
确定性模型:24,343 PJ
MC 模拟均值:28,588 PJ (+17.4%)
P95 风险上界:30,551 PJ (+25.5%)
2. 时间线建议:决策区间而非单点
| 决策者风险偏好 | 推荐时间线 |
|---|---|
| 激进(接受10%失败) | 133 年 |
| 标准(接受5%失败) | 138 年 |
| 保守(接受1%失败) | 146 年 |
| 时间-能量权衡最优 | 150 年 |
核心结论:任务一推荐 139 年,任务二建议 138-150 年区间,具体取决于决策者的风险偏好。
3. 失败发射约 9,000 次
- 失败率:约 3.1%
- 失败能量:按阶段加权 44.2%
4. 风险缓解策略
| 策略 | 措施 | 预期效果 |
|---|---|---|
| 提升电梯维护 | 可用率90%→95% | 完成概率+2%,能耗-5% |
| 延长工期 | 139年→146年 | 完成概率98%→99% |
| 优先低纬度 | 法属圭亚那优先 | 降低单次发射能耗 |
十一、与任务一的关联
| 对比项 | 任务一(确定性) | 任务二(不确定性) |
|---|---|---|
| 模型类型 | 确定性优化 | 二项分布蒙特卡洛 |
| 能量口径 | 按站点/纬度/ΔV | 同任务一(一致性) |
| 推荐时间线 | 139 年(膝点) | 138-150 年(区间) |
| 能量估算 | 24,343 PJ | 28,588 PJ (+17%) |
| 输出形式 | 单点最优 | 决策表 + 风险分位数 |
十二、方法论改进说明 (v2)
12.1 完成时间单调性修正
v1 问题:
# 二分搜索每步重新采样 → 非单调
n_succ = np.random.binomial(n_try, p_s) # 每次都不同!
v2 修正:
# 使用期望值函数 → 单调递增
expected_success = n_try * p_s
12.2 能量口径分离
v1:只报告 E[Energy]
v2:分开报告
- E[Energy]:无条件均值
- E[Energy | completed]:条件均值
12.3 失败能量文献支持
v1:固定 30%(无来源)
v2:分阶段加权 44.2%(引用 FAA AST 报告)
十三、数据文件
| 文件 | 内容 |
|---|---|
uncertainty_analysis.py |
主程序(~1200行) |
sensitivity_results.csv |
敏感性分析数据 |
pareto_risk_constrained.csv |
风险约束 Pareto 前沿 |
十四、参考文献
- FAA AST (2024). Commercial Space Transportation Year in Review
- Metropolis & Ulam (1949). The Monte Carlo Method
- Satopää et al. (2011). Finding a 'Kneedle' in a Haystack




