# 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 + 二项分布 ```python def monte_carlo_binomial(target_years, params, n_simulations): # Step 1: 采样参数(Beta/三角分布) # Step 2: 计算电梯交付(能量∝交付量) # Step 3: 成功发射次数(二项分布采样) # Step 4: 失败能量(分阶段加权) # Step 5: 返回条件/无条件能量分布 ``` ### 3.2 条件能量 vs 无条件能量(v2 新增) ```python # 无条件能量(包含未完成的模拟) energy_mean = np.mean(total_energy) # 条件能量(只算完成的模拟) completed_mask = completed.astype(bool) energy_given_completed = np.mean(total_energy[completed_mask]) ``` --- ## 四、运行方式 ```bash 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 蒙特卡洛模拟结果 ![monte_carlo_results](monte_carlo_results.png) ### 9.2 解决方案变化(核心图) ![solution_changes](solution_changes.png) ### 9.3 完成时间分布 ![completion_time_dist](completion_time_dist.png) ### 9.4 敏感性分析 ![sensitivity_analysis](sensitivity_analysis.png) ### 9.5 情景对比 ![scenario_comparison](scenario_comparison.png) --- ## 十、关键结论 (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 问题**: ```python # 二分搜索每步重新采样 → 非单调 n_succ = np.random.binomial(n_try, p_s) # 每次都不同! ``` **v2 修正**: ```python # 使用期望值函数 → 单调递增 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