p2: rebuild

This commit is contained in:
2026-01-31 18:00:43 +08:00
parent fdec519764
commit e8b7db71c8
21 changed files with 4313 additions and 1586 deletions

View File

@@ -1,382 +1,293 @@
# Task 2: 系统不确定性与鲁棒性分析 (v2)
# 任务二:非完美运行条件下的蒙特卡洛模拟分析
本目录实现 **MCM 2026 Problem B** 任务二:
## Task 2: Monte Carlo Analysis Under Imperfect Operating Conditions
> **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.)?**
本目录包含针对 **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 任务一回顾(完美条件下)
| 方案 | 完成时间 | 总能耗 (PJ) | 特点 |
|------|----------|-------------|------|
| 电梯 | 186.2 年 | 15,720 | 能耗最低 |
| 混合-最短时间 | 100.7 年 | 31,537 | 时间最短 |
| 混合-膝点平衡 | 139 年 | 24,361 | 成本-时间平衡 |
### 1.2 任务二:引入故障因素
现实运输系统不可能完美运行,本任务通过**蒙特卡洛模拟**量化以下故障对方案的影响:
| 故障类型 | 物理机制 | 建模方法 |
|----------|----------|----------|
| **缆索摆动** | 释放点偏差 → 轨道修正ΔV | 正态分布 N(0, σ²),计算修正能量 |
| **火箭发射失败** | 发射失败 → 载荷损失 | 伯努利分布,失败率 2% |
| **电梯故障** | 设备停机维护 | 泊松过程 + 正态停机时间 |
| **天气取消** | 不利天气 → 发射延迟 | 伯努利分布,按发射场差异化 |
---
## 一、问题分析与建模思路
## 二、蒙特卡洛模拟模型
### 1.1 问题本质
### 2.1 故障参数设置(基于历史数据与合理假设)
任务二要求回答的核心问题是:**在系统存在不确定性时,最优解决方案会如何变化?**
```
故障参数:
├── 火箭发射失败率: 2.0% [参考: SpaceX Falcon 9 历史失败率 ~2-3%]
├── 电梯年故障次数: 2.0 次/部/年 [假设值,进行敏感性分析]
├── 电梯平均停机时间: 14 ± 7 天 [正态分布]
├── 缆索摆动角度: σ = 0.5° [考虑潮汐力、月球引力摄动]
└── 天气取消率: 8% ~ 30% [按发射场地理位置差异化]
```
这不仅仅是计算"能耗增加多少",而是要回答
- 原来的最优工期(膝点)还适用吗?
- 需要预留多少时间/资源冗余?
- 哪些因素对结果影响最大?
**天气取消率(分发射场)**
### 1.2 不确定性来源
| 发射场 | 取消率 | 原因 |
|--------|--------|------|
| California | 8% | 气候干燥 |
| Kourou | 10% | 热带,偶有雨季 |
| Taiyuan | 10% | 内陆干燥 |
| Baikonur | 12% | 大陆性气候 |
| Texas | 12% | 风暴偶发 |
| SDSC (India) | 15% | 季风影响 |
| Virginia | 18% | 东海岸天气 |
| Mahia | 20% | 海洋性气候 |
| Florida | 25% | 雷暴频繁 |
| Alaska | 30% | 极端天气 |
| 不确定性 | 物理机制 | 影响 |
|---------|---------|------|
| **火箭发射失败** | 发动机故障、天气中止、轨道偏差 | 有效发射次数减少 |
| **电梯故障/维护** | 机械故障、缆绳摆动、定期维护 | 运力间歇性中断 |
| **天气/窗口约束** | 恶劣天气、发射窗口限制 | 可发射天数减少 |
| **载荷损失** | 对接失败、运输损坏 | 实际交付量减少 |
### 2.2 缆索摆动的物理建模
### 1.3 建模方法选择
**问题**:缆索摆动如何导致能量损失?
| 方法 | 优点 | 缺点 | 适用场景 |
**第一性原理分析**
1. 摆动导致释放点**速度方向偏差** θ
2. 载荷进入非设计轨道,需要**轨道修正**
3. 轨道修正需要额外 ΔV
$$\Delta V_{correction} \approx V_{release} \cdot \sin(\theta) \approx V_{release} \cdot \theta$$
4. 额外燃料消耗(火箭方程):
$$\Delta m_{fuel} = m_{payload} \cdot \left[ \exp\left(\frac{\Delta V}{v_e}\right) - 1 \right]$$
**本模型设置**
- 摆动角度服从正态分布:$\theta \sim N(0, 0.5°)$
- 释放速度7,270 m/s100,000 km 高度)
- 每次释放独立抽取摆动角度
### 2.3 三种方案定义
| 方案 | 代号 | 策略 | 目标年限 |
|------|------|------|----------|
| 确定性分析 | 简单、快速 | 无法量化风险 | 初步估算 |
| 期望值分析 | 考虑均值影响 | 忽略分布尾部 | 快速敏感性 |
| **蒙特卡洛模拟** | 完整分布、风险量化 | 计算量大 | **本方案** |
| 逐日仿真 | 最真实 | 极慢 | 验证/附录 |
| **成本优先** | Scenario A | 仅使用太空电梯 | 186.2 年 |
| **时间优先** | Scenario B | 电梯 + 火箭全开 | 105.7 年 |
| **综合平衡** | Scenario C | 电梯优先 + 低纬火箭 | 139.0 年 |
---
## 二、数学原理
## 三、蒙特卡洛模拟结果
### 2.1 二项分布模型(发射成功/失败)
### 3.1 模拟配置
火箭发射是独立的伯努利试验,成功概率为 \(p\)。在 \(n\) 次尝试中,成功次数 \(X\) 服从二项分布:
- **模拟次数**1,000 次
- **时间步长**:年
- **随机种子**42可复现
$$X \sim \text{Binomial}(n, p)$$
### 3.2 核心结果汇总
### 2.2 Beta 分布(概率参数采样)
| 方案 | 目标年限 | 实际完成年限 | 延迟率 | 总能耗 (PJ) |
|------|----------|--------------|--------|-------------|
| **A: 成本优先** | 186.2 年 | **202.3 ± 0.6 年** | +8.6% | 15,738 ± 0 |
| **B: 时间优先** | 105.7 年 | **120.7 ± 0.4 年** | +14.2% | 30,217 ± 30 |
| **C: 综合平衡** | 139.0 年 | **155.3 ± 0.5 年** | +11.7% | 24,060 ± 26 |
对于 \([0,1]\) 区间的概率参数Beta 分布是自然选择:
### 3.3 故障统计详情
$$p \sim \text{Beta}(\alpha, \beta)$$
#### 方案A纯电梯
给定均值 \(\mu\) 和标准差 \(\sigma\),可反解参数。
| 指标 | 数值 |
|------|------|
| 电梯总停机时间 | 17,073 天 ≈ **46.8 年** |
| 摆动能量惩罚 | 17.9 PJ (占总能耗 0.11%) |
| 火箭失败/天气取消 | N/A |
### 2.3 完成时间分布v2 修正:单调性保证
#### 方案B时间优先混合全速
完成时间定义为**首次达到目标的时间**
| 指标 | 数值 |
|------|------|
| 火箭发射失败 | **6,590 次** |
| 天气取消 | **62,761 次** |
| 电梯总停机时间 | 10,199 天 ≈ 27.9 年 |
| 摆动能量惩罚 | 10.7 PJ (占总能耗 0.04%) |
$$T^* = \inf\{T: D(T) \ge M\}$$
#### 方案C综合平衡
其中交付函数 \(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,788 次** |
| 天气取消 | **36,078 次** |
| 电梯总停机时间 | 13,114 天 ≈ 35.9 年 |
| 摆动能量惩罚 | 13.8 PJ (占总能耗 0.06%) |
---
## 三、算法实现
## 四、结果分析与讨论
### 3.1 核心算法:聚合 MC + 二项分布
### 4.1 关键发现
```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 新增)
各方案的**完成时间均显著延迟**
- 纯电梯方案延迟 **16.1 年**+8.6%
- 时间优先方案延迟 **15.0 年**+14.2%
- 平衡方案延迟 **16.3 年**+11.7%
```python
# 无条件能量(包含未完成的模拟)
energy_mean = np.mean(total_energy)
**原因分析**
- 电梯故障累计停机时间达 **28-47 年**(取决于运行总年限)
- 火箭发射受天气取消和失败双重影响
- 时间优先方案虽然目标年限短,但**相对延迟率最高**14.2%
# 条件能量(只算完成的模拟)
completed_mask = completed.astype(bool)
energy_given_completed = np.mean(total_energy[completed_mask])
```
#### 发现二:缆索摆动的能量惩罚可控
摆动能量惩罚仅占总能耗的 **0.04% - 0.11%**,原因:
- 0.5° 的摆动角度在工程上是可控的
- 电梯释放速度7.27 km/s相对较低
- 轨道修正效率较高
**敏感性提示**:若摆动角度增大到 5°能量惩罚将增加 ~100 倍。
#### 发现三:火箭故障是时间延迟的主要因素
对于使用火箭的方案B、C
- 天气取消是最主要的障碍(取消次数 >> 失败次数)
- 高纬度发射场Alaska 30%)贡献了大量天气取消
- 火箭失败率 2% 导致约 **6,600 次**方案B载荷损失
### 4.2 方案对比:完美 vs 非完美条件
| 指标 | 完美条件 | 非完美条件 | 变化 |
|------|----------|------------|------|
| **方案A 完成时间** | 186.2 年 | 202.3 年 | +8.6% |
| **方案B 完成时间** | 100.7 年 | 120.7 年 | +19.9% |
| **方案C 完成时间** | 139.0 年 | 155.3 年 | +11.7% |
| **方案A 能耗** | 15,720 PJ | 15,738 PJ | +0.1% |
| **方案B 能耗** | 31,537 PJ | 30,217 PJ | -4.2%* |
| **方案C 能耗** | 24,361 PJ | 24,060 PJ | -1.2%* |
*注:能耗略有下降是因为火箭失败后载荷未交付,总运输量略少。
### 4.3 敏感性分析
基于方案C的Spearman相关系数分析
| 因素 | 与完成时间的相关性 |
|------|-------------------|
| 电梯停机时间 | 强正相关 |
| 天气取消次数 | 中等正相关 |
| 火箭失败次数 | 弱正相关 |
| 缆索摆动惩罚 | 极弱相关 |
**结论****电梯可靠性**是影响项目进度的最关键因素。
---
## 四、运行方式
## 五、图表索引
| 图表文件 | 内容描述 |
|----------|----------|
| `completion_time_distribution.png` | 三方案完成时间概率分布直方图 |
| `energy_distribution.png` | 三方案能耗概率分布直方图 |
| `boxplot_comparison.png` | 完成时间与能耗箱线图对比 |
| `failure_analysis.png` | 故障统计分布(火箭失败、天气取消、电梯停机、摆动惩罚) |
| `sensitivity_tornado.png` | 敏感性分析龙卷风图 |
| `comprehensive_comparison.png` | 综合对比图散点图、CDF、统计表、延迟分布 |
### 图表预览
#### 完成时间分布
![completion_time_distribution](completion_time_distribution.png)
#### 能耗分布
![energy_distribution](energy_distribution.png)
#### 箱线图对比
![boxplot_comparison](boxplot_comparison.png)
#### 故障分析
![failure_analysis](failure_analysis.png)
#### 敏感性龙卷风图
![sensitivity_tornado](sensitivity_tornado.png)
#### 综合对比
![comprehensive_comparison](comprehensive_comparison.png)
---
## 六、结论与建议
### 6.1 核心结论
1. **故障对项目进度影响显著**:所有方案均出现 8-14% 的时间延迟
2. **电梯可靠性是关键**:电梯停机累计达 28-47 年,是最主要的延迟源
3. **缆索摆动影响可控**:在 0.5° 摆动范围内,能量惩罚 < 0.2%
4. **方案排序不变**
- 成本优先 → 纯电梯(~202 年15,738 PJ
- 时间优先 → 混合全速(~121 年30,217 PJ
- 综合平衡 → 膝点方案(~155 年24,060 PJ
### 6.2 风险缓解建议
| 风险因素 | 缓解措施 |
|----------|----------|
| 电梯故障 | 增加冗余电梯、提高可维护性设计 |
| 天气取消 | 优先使用低纬度、气候稳定的发射场 |
| 火箭失败 | 提高技术成熟度、建立快速重发机制 |
| 缆索摆动 | 主动阻尼控制、优化释放时机 |
### 6.3 模型局限性
1. **故障参数假设**:电梯故障率基于假设,缺乏实际数据
2. **故障独立性假设**:未考虑级联故障
3. **恢复时间简化**:未建模复杂的维修调度
4. **天气模型简化**:未考虑季节性变化
---
## 七、文件清单
| 文件 | 描述 |
|------|------|
| `monte_carlo_simulation.py` | 蒙特卡洛模拟核心代码 |
| `simulation_results.csv` | 原始模拟数据1000×3方案 |
| `simulation_report.txt` | 统计报告文本版 |
| `*.png` | 可视化图表6张 |
| `README.md` | 本分析报告 |
---
## 八、如何运行
```bash
cd p2
python uncertainty_analysis.py
# 安装依赖
pip install numpy matplotlib pandas scipy tqdm
# 运行模拟约15分钟
cd /Volumes/Files/code/mm/20260130_b/p2
python monte_carlo_simulation.py
```
---
## 五、不确定性参数
| 参数 | 均值 | 标准差 | 分布 | 物理含义 |
|------|------|--------|------|----------|
| 火箭成功率 | 97% | 1.5% | Beta | 发射成功概率 |
| 电梯可用率 | 90% | 4% | Beta | 故障/维护导致的有效运行时间 |
| 天气因子 | 80% | 8% | Beta | 可发射天数占比 |
| 损失率 | 1% | 0.5% | 三角 | 运输过程载荷损失 |
| 电梯效率 | 95% | 2% | Beta | 缆绳摆动等效率损失 |
可在 `monte_carlo_simulation.py` 中修改:
- `n_simulations`:模拟次数(默认 1000
- `FailureParameters`:故障率参数
---
## 六、程序运行输出 (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
*报告生成时间2026-01-31*