383 lines
12 KiB
Markdown
383 lines
12 KiB
Markdown
|
|
# 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
|