p2
382
p2/README.md
Normal file
@@ -0,0 +1,382 @@
|
||||
# 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 蒙特卡洛模拟结果
|
||||
|
||||

|
||||
|
||||
### 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 问题**:
|
||||
```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
|
||||
BIN
p2/completion_time_dist.png
Normal file
|
After Width: | Height: | Size: 91 KiB |
BIN
p2/deterministic_vs_uncertain.png
Normal file
|
After Width: | Height: | Size: 106 KiB |
BIN
p2/monte_carlo_results.png
Normal file
|
After Width: | Height: | Size: 268 KiB |
26
p2/pareto_risk_constrained.csv
Normal file
@@ -0,0 +1,26 @@
|
||||
years,prob,feasible,energy_mean_mc,energy_p95_mc,energy_det,energy_increase_pct
|
||||
100.0,0.0,False,25372.033041820563,28072.05031018136,,
|
||||
104.16666666666667,0.0,False,26439.355755837205,29267.49987337852,31022.26249697984,-14.772961003694697
|
||||
108.33333333333333,0.0,False,27483.36708485973,30391.959579786162,30189.152484451704,-8.962773635283517
|
||||
112.5,0.013,False,28492.85598452039,31504.026755271323,29379.644770658626,-3.018378176661518
|
||||
116.66666666666667,0.143,False,29512.20025723855,32107.63269364828,28582.607044590433,3.252303791595712
|
||||
120.83333333333334,0.3665,False,30061.93408877843,32244.13361324691,27786.96843237234,8.187167527623163
|
||||
125.0,0.62,False,30232.899972248288,32028.916165945262,26992.42807071392,12.005114519690796
|
||||
129.16666666666666,0.7965,False,29963.15866612223,31757.888186627566,26199.501339607,14.365377713603799
|
||||
133.33333333333334,0.9045,False,29491.539020149194,31377.418568091212,25411.26664775879,16.056942099540205
|
||||
137.5,0.96,True,28891.787516111122,31002.05216178532,24625.76227157463,17.32342413400434
|
||||
141.66666666666669,0.9855,True,28164.80167362264,30258.555589863852,23848.166944890552,18.10048855623647
|
||||
145.83333333333334,0.997,True,27503.630490981155,29673.38830753458,23074.9546010554,19.192565994141518
|
||||
150.0,0.9995,True,26768.450765527432,28896.02128487065,22303.29589355392,20.020157080299626
|
||||
154.16666666666669,1.0,True,26085.083134632587,28333.974032687096,21534.119669496904,21.13373351213481
|
||||
158.33333333333334,1.0,True,25337.651561865478,27747.060197069248,20764.941930628607,22.021297466245528
|
||||
162.5,1.0,True,24707.204633635283,27089.174803016234,20006.62753947831,23.495099735732584
|
||||
166.66666666666669,1.0,True,23977.757529870985,26326.23453872308,19251.053019212643,24.552966042642275
|
||||
170.83333333333334,1.0,True,23303.60704756015,25881.10234387964,18495.478498946977,25.996237669043907
|
||||
175.0,1.0,True,22598.38386359338,25122.701828406385,17743.284740252642,27.36302321929376
|
||||
179.16666666666669,1.0,True,21896.20673965992,24418.38423442558,16991.898913478322,28.86262360171763
|
||||
183.33333333333334,1.0,True,21233.987221266052,23815.443439396382,16240.513086703999,30.747022017735247
|
||||
187.5,1.0,True,20572.244424940738,23225.842256536464,15720.0,30.866694815144633
|
||||
191.66666666666669,1.0,True,19919.524749093463,22723.356523238544,15720.0,26.714534027312098
|
||||
195.83333333333334,1.0,True,19270.13966362218,22133.939931797722,15720.0,22.58358564645153
|
||||
200.0,1.0,True,18532.850120978102,21359.98437171606,15720.0,17.89344860673092
|
||||
|
BIN
p2/reliability_curve.png
Normal file
|
After Width: | Height: | Size: 126 KiB |
BIN
p2/scenario_comparison.png
Normal file
|
After Width: | Height: | Size: 93 KiB |
BIN
p2/sensitivity_analysis.png
Normal file
|
After Width: | Height: | Size: 302 KiB |
15
p2/sensitivity_results.csv
Normal file
@@ -0,0 +1,15 @@
|
||||
Parameter,Value,Completion Prob,Energy Mean (PJ),Energy P95 (PJ),vs Deterministic
|
||||
Baseline,-,0.97,28596.01710309635,30564.886524529153,+17.5%
|
||||
Rocket Success Rate,93%,0.9575,28878.902643863366,30891.28901266845,+18.6%
|
||||
Rocket Success Rate,95%,0.968,28748.3018651089,30708.888318250705,+18.1%
|
||||
Rocket Success Rate,97%,0.9795,28629.360858451142,30645.327480730295,+17.6%
|
||||
Rocket Success Rate,99%,0.9775,28439.468083358966,30473.625164137902,+16.8%
|
||||
Elevator Availability,80%,0.828,30918.56112676015,32842.19981586814,+27.0%
|
||||
Elevator Availability,85%,0.9185,29821.688216162085,31744.193121079687,+22.5%
|
||||
Elevator Availability,90%,0.965,28611.460729304432,30636.719213453933,+17.5%
|
||||
Elevator Availability,95%,0.9945,27338.025136295357,29606.035821357837,+12.3%
|
||||
Weather Factor,70%,0.863,28472.031748325277,30451.165280990353,+17.0%
|
||||
Weather Factor,75%,0.9335,28568.68030314252,30606.620356883606,+17.4%
|
||||
Weather Factor,80%,0.9775,28529.595755356648,30528.48416862068,+17.2%
|
||||
Weather Factor,85%,0.9845,28615.163139569464,30780.73030967962,+17.5%
|
||||
Weather Factor,90%,0.996,28641.794065098013,30715.86009554269,+17.7%
|
||||
|
BIN
p2/solution_changes.png
Normal file
|
After Width: | Height: | Size: 174 KiB |