p1
This commit is contained in:
357
README.md
Normal file
357
README.md
Normal file
@@ -0,0 +1,357 @@
|
||||
# Moon Colony Logistics(地月运输建模与对比)
|
||||
|
||||
本目录包含针对 **MCM 2026 Problem B**(见 `prob/en_B.md`)的一组可运行脚本:用**简化的轨道力学 + 火箭方程**估算把 **1 亿吨(100 million metric tons)**物资送到月球轨道/基地的**时间线**与**能量消耗**,并对比:
|
||||
|
||||
- **纯火箭方案**(10 个既有发射场,每站每日 1 发)
|
||||
- **纯太空电梯方案**(3 个电梯港口持续转运)
|
||||
- **混合方案**(电梯优先,剩余由火箭补齐,且随着工期变长更多任务转移到低纬发射场以降低纬度惩罚)
|
||||
|
||||
> 本项目的“能量”口径:
|
||||
> - **火箭**:用推进剂化学能近似 \(E \approx m_\text{fuel}\cdot e_s\)(`e_s` 为燃料比能,默认 LH2/LOX 约 15.5 MJ/kg)。
|
||||
> - **太空电梯**:用“提升能 + 顶端火箭段能量”的**总比能量**近似(默认 157.2 MJ/kg,即 157.2 GJ/吨)。
|
||||
> 这是一种用于**对比量级与趋势**的工程近似,不等同于严格的热力学效率或完整任务能量收支。
|
||||
|
||||
---
|
||||
|
||||
### 目录结构与脚本索引
|
||||
|
||||
#### 核心脚本
|
||||
|
||||
- **`specific_energy_comparison.py`**
|
||||
地面发射 vs 太空电梯:比能量、燃料比、纬度影响(包含指定发射场列表)。
|
||||
- **`rocket_launch_scenario.py`**
|
||||
纯火箭方案(10 发射场 * 每日 1 发)排布与能量-工期曲线;并做发射频率敏感性分析。
|
||||
- **`combined_scenario.py`**
|
||||
混合方案(电梯优先 + 火箭补齐),输出组合方案能量-工期曲线,并生成 **100–300 年**区间三方案同图对比。
|
||||
- **`launch_capacity_analysis.py`**
|
||||
(可选)对历史火箭年发射量做 Logistic / Gompertz / Richards 拟合与预测,生成 `launch_capacity_*.png` 与 `launch_capacity_results.csv`。
|
||||
|
||||
#### 主要输出图表(均在本目录)
|
||||
|
||||
| 图表文件 | 含义 |
|
||||
|---|---|
|
||||
| `specific_energy_comparison.png` | 地面 vs 电梯的比能量/燃料比对比,含 ΔV 敏感性 |
|
||||
| `latitude_effects.png` | 月球任务场景下:纬度→自转速度损失→燃料/能量增加趋势(并标注指定发射场) |
|
||||
| `rocket_launch_timeline.png` | 纯火箭方案:完成年限 vs 总能量(工期变长→更多低纬→能量略降) |
|
||||
| `rocket_comprehensive.png` | 纯火箭方案综合图:能量趋势 + 分配饼图等 |
|
||||
| `launch_frequency_analysis.png` | 发射频率敏感性:每站每日发射数提升→完工年限显著下降 |
|
||||
| `combined_scenario_analysis.png` | 混合方案:总能量/电梯能量/火箭能量随工期变化 + 电梯占比 + 需要启用的火箭站点数 |
|
||||
| `scenario_comparison.png` | elevator-only / rocket-only / combined 的完工时间与能量柱状对比 |
|
||||
| **`three_scenarios_comparison.png`** | **100–300 年区间**:纯火箭、纯电梯、混合方案的“年份-能量”折线同图对比 |
|
||||
| `launch_capacity_analysis.png` `launch_capacity_physical.png` `launch_capacity_predictions.png` | (可选)火箭发射能力上限/趋势拟合与预测 |
|
||||
|
||||
#### 数据文件(如存在)
|
||||
|
||||
- `launch_capacity_results.csv`
|
||||
- `rocket_launch_counts.csv`
|
||||
- `launch_sites.csv`
|
||||
- `rocket launch counts.txt`
|
||||
|
||||
---
|
||||
|
||||
### 图表总览(本目录所有 PNG)
|
||||
|
||||
为便于写报告/插图,这里把当前目录下的所有 PNG 统一列出(按主题分组)。如果你只想看关键结论,优先看 **`three_scenarios_comparison.png`**。
|
||||
|
||||
<details>
|
||||
<summary><strong>1) 比能量与纬度效应(地面 vs 电梯、发射场纬度)</strong></summary>
|
||||
|
||||
#### `specific_energy_comparison.png`
|
||||
|
||||

|
||||
|
||||
#### `latitude_effects.png`
|
||||
|
||||

|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><strong>2) 纯火箭方案(排布与敏感性)</strong></summary>
|
||||
|
||||
#### `rocket_launch_timeline.png`
|
||||
|
||||

|
||||
|
||||
#### `rocket_comprehensive.png`
|
||||
|
||||

|
||||
|
||||
#### `launch_distribution_min.png`
|
||||
|
||||

|
||||
|
||||
#### `launch_distribution_mid.png`
|
||||
|
||||

|
||||
|
||||
#### `launch_frequency_analysis.png`
|
||||
|
||||

|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><strong>3) 混合方案与三方案对比(核心结论图)</strong></summary>
|
||||
|
||||
#### `combined_scenario_analysis.png`
|
||||
|
||||

|
||||
|
||||
#### `scenario_comparison.png`
|
||||
|
||||

|
||||
|
||||
#### `three_scenarios_comparison.png`(100–300 年折线同图对比)
|
||||
|
||||

|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><strong>4)(可选)火箭发射能力上限/趋势拟合</strong></summary>
|
||||
|
||||
#### `launch_capacity_analysis.png`
|
||||
|
||||

|
||||
|
||||
#### `launch_capacity_physical.png`
|
||||
|
||||

|
||||
|
||||
#### `launch_capacity_predictions.png`
|
||||
|
||||

|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><strong>5) 其它历史遗留图</strong></summary>
|
||||
|
||||
本目录还包含 `earth_moon_transfer_analysis.png`(早期“地月转移:载荷–燃料/能量关系”图)。当前目录下未发现对应的 `earth_moon_transfer.py` 源码文件;如果你需要我把该脚本补回并与现有口径统一,我可以再加一个文件。
|
||||
|
||||
#### `earth_moon_transfer_analysis.png`
|
||||
|
||||

|
||||
|
||||
</details>
|
||||
|
||||
### 依赖安装
|
||||
|
||||
建议使用 Python 3.10+。
|
||||
|
||||
```bash
|
||||
pip install numpy matplotlib pandas
|
||||
```
|
||||
|
||||
如需运行 `launch_capacity_analysis.py`(含曲线拟合),还需要:
|
||||
|
||||
```bash
|
||||
pip install scipy
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 数学模型(简化版)概览
|
||||
|
||||
#### 1)火箭方程:燃料-载荷的线性比例(在固定 ΔV 与 Isp 下)
|
||||
|
||||
火箭方程:
|
||||
\[
|
||||
\Delta V = v_e \ln\left(\frac{m_0}{m_f}\right),\quad v_e = I_{sp} g_0
|
||||
\]
|
||||
|
||||
当任务 ΔV、发动机 \(I_{sp}\) 固定时,质量比 \(R=\exp(\Delta V/v_e)\) 为常数。若进一步采用结构系数近似:
|
||||
\[
|
||||
m_s=\alpha m_\text{fuel}
|
||||
\]
|
||||
则可解得燃料与载荷满足:
|
||||
\[
|
||||
\boxed{m_\text{fuel}=k\,m_p}\quad(\text{其中 }k\text{ 为常数,取决于 }\Delta V, I_{sp}, \alpha)
|
||||
\]
|
||||
|
||||
这解释了为什么在同一任务与发动机参数下,“载荷–燃料”是近似**线性**关系。
|
||||
|
||||
#### 2)能量口径(用于对比)
|
||||
|
||||
- 火箭推进剂能量(近似):
|
||||
\[
|
||||
E_\text{rocket}\approx m_\text{fuel}\,e_s
|
||||
\]
|
||||
其中 \(e_s\) 为燃料比能(默认 15.5 MJ/kg)。
|
||||
|
||||
- 太空电梯总比能量(本项目用常数近似):
|
||||
\[
|
||||
E_\text{elevator}\approx \epsilon_\text{elevator}\,m_p
|
||||
\]
|
||||
默认 \(\epsilon_\text{elevator}=157.2\text{ MJ/kg}\)(可在脚本中改)。
|
||||
|
||||
#### 3)纬度导致的自转“损失”近似
|
||||
|
||||
地球表面自转线速度:
|
||||
\[
|
||||
v(\varphi)=\omega R_E\cos(\varphi)
|
||||
\]
|
||||
相对赤道的速度差近似为 ΔV 惩罚:
|
||||
\[
|
||||
\Delta v_\text{loss}=v(0^\circ)-v(\varphi)
|
||||
\]
|
||||
|
||||
在月球任务场景下(允许进入与发射场纬度相匹配的倾角、避免昂贵的纯平面变轨),纬度主要通过该项影响火箭能耗。
|
||||
|
||||
---
|
||||
|
||||
### 如何运行(会生成图片)
|
||||
|
||||
#### 1)比能量与纬度效应
|
||||
|
||||
```bash
|
||||
python specific_energy_comparison.py
|
||||
```
|
||||
|
||||
输出(示例)会包括不同发射场的 ΔV 损失、燃料比、能量(MJ/kg)等,并生成:
|
||||
|
||||
- `specific_energy_comparison.png`
|
||||
- `latitude_effects.png`
|
||||
|
||||
#### 2)纯火箭方案:工期-能量与排布
|
||||
|
||||
```bash
|
||||
python rocket_launch_scenario.py
|
||||
```
|
||||
|
||||
会生成:
|
||||
|
||||
- `rocket_launch_timeline.png`
|
||||
- `rocket_comprehensive.png`
|
||||
- `launch_distribution_min.png`、`launch_distribution_mid.png`
|
||||
- `launch_frequency_analysis.png`
|
||||
|
||||
**部分运行输出(示例)**:
|
||||
|
||||
```text
|
||||
Total payload: 100 million metric tons
|
||||
Payload per launch: 125 metric tons
|
||||
Total launches needed: 800,000
|
||||
Number of launch sites: 10
|
||||
Minimum completion time: 219.2 years
|
||||
|
||||
Energy reduction (Extended vs Minimum time): 2.4%
|
||||
```
|
||||
|
||||
解释:
|
||||
- 由于“每站每日 1 发、载荷 125 吨”的硬约束,纯火箭最短也要约 **219 年**完成。
|
||||
- 工期拉长后,可把更多发射集中到低纬站点,**能量仅小幅下降(约几个百分点)**——纬度惩罚相对火箭整体能耗并不占主导。
|
||||
|
||||
#### 3)混合方案 + 100–300 年三方案同图对比
|
||||
|
||||
```bash
|
||||
python combined_scenario.py
|
||||
```
|
||||
|
||||
会生成:
|
||||
|
||||
- `combined_scenario_analysis.png`
|
||||
- `scenario_comparison.png`
|
||||
- **`three_scenarios_comparison.png`(100–300 年折线同图对比)**
|
||||
|
||||
**部分运行输出(示例)**:
|
||||
|
||||
```text
|
||||
Elevator-only completion: 186.2 years
|
||||
Minimum completion (all systems): 100.7 years
|
||||
|
||||
1. Minimum Time (~101 years): Total energy: 31537 PJ
|
||||
4. Elevator Only (186 years): Total energy: 15720 PJ
|
||||
Rocket Only (219 years): Total energy: 50609 PJ
|
||||
```
|
||||
|
||||
解释:
|
||||
- **混合方案**把最短工期从电梯单独的 ~186 年压缩到 ~101 年(靠火箭补齐),但能量高于纯电梯。
|
||||
- 当工期 ≥ 186 年时,电梯即可独立完成,混合方案会自动退化为纯电梯曲线(能耗趋于同一水平)。
|
||||
- 纯火箭能耗显著更高(本模型下约为纯电梯的 **3×** 量级)。
|
||||
|
||||
---
|
||||
|
||||
### 发射场(10 个)与纬度效应(月球任务场景)
|
||||
|
||||
本项目按纬度从低到高优先分配火箭发射(“低纬优先”贪心策略),站点列表与纬度如下(与题目一致):
|
||||
|
||||
| 发射场 | 近似纬度 | 备注 |
|
||||
|---|---:|---|
|
||||
| French Guiana(Kourou) | 5.2° | 低纬优势明显 |
|
||||
| Satish Dhawan(India) | 13.7° | 低纬 |
|
||||
| Texas(Boca Chica) | 26.0° | 美国 |
|
||||
| Florida(Cape Canaveral) | 28.5° | 美国 |
|
||||
| California(Vandenberg) | 34.7° | 美国 |
|
||||
| Virginia(Wallops) | 37.8° | 美国 |
|
||||
| Taiyuan(China) | 38.8° | 中国 |
|
||||
| Mahia(New Zealand) | 39.3° | 新西兰(南半球,按 \(|\varphi|\) 处理) |
|
||||
| Kazakhstan(Baikonur) | 45.6° | 哈萨克斯坦 |
|
||||
| Alaska(Kodiak) | 57.4° | 高纬,惩罚最大 |
|
||||
|
||||
对应曲线可在下图直观看到:
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
### 三方案“年份–能量”折线对比(100–300 年)
|
||||
|
||||
下图是你要求的 **100–300 年**区间三条折线同图(不可完成的年份用空缺表示):
|
||||
|
||||

|
||||
|
||||
读图要点:
|
||||
- **100–186 年**:只有混合方案可完成(电梯能力不足、火箭也不够快)。
|
||||
- **186–219 年**:电梯可完成;火箭仍无法完成;混合与电梯曲线重合(优先用电梯)。
|
||||
- **≥219 年**:三种方案都可完成,但纯火箭能耗最高。
|
||||
|
||||
为了写报告时更快引用,下面给出几组关键年份的能量读数(与脚本运行输出一致,单位 PJ):
|
||||
|
||||
| 年份 | 混合方案 | 纯电梯 | 纯火箭 |
|
||||
|---:|---:|---:|---:|
|
||||
| 110 | 29852 | N/A | N/A |
|
||||
| 150 | 22257 | N/A | N/A |
|
||||
| 186 | 15720 | 15720 | N/A |
|
||||
| 220 | 15720 | 15720 | 50605 |
|
||||
| 300 | 15720 | 15720 | 50187 |
|
||||
|
||||
---
|
||||
|
||||
### 可调参数(最常改的地方)
|
||||
|
||||
#### 火箭相关(`rocket_launch_scenario.py` / `combined_scenario.py`)
|
||||
|
||||
- `TOTAL_PAYLOAD`:总物资(吨)
|
||||
- `PAYLOAD_PER_LAUNCH`:单次发射载荷(吨,默认 125)
|
||||
- `ISP`、`ALPHA`、`NUM_STAGES`:推进系统与结构参数
|
||||
- `SPECIFIC_FUEL_ENERGY`:燃料比能(J/kg)
|
||||
- `DELTA_V_BASE`:赤道基准 ΔV(m/s)
|
||||
- `LAUNCH_SITES`:发射场纬度列表(可自行替换/增减)
|
||||
|
||||
#### 太空电梯相关(`combined_scenario.py`)
|
||||
|
||||
- `NUM_ELEVATORS`:电梯数量(默认 3)
|
||||
- `ELEVATOR_CAPACITY_PER_YEAR`:**每个电梯年运力(吨/年)**
|
||||
> 题面是 **179,000 t/year**;若你要用 **17,900 t/year**,直接改此值即可。
|
||||
- `ELEVATOR_SPECIFIC_ENERGY`:电梯总比能量(J/吨),默认 157.2 GJ/吨
|
||||
|
||||
---
|
||||
|
||||
### 重要假设与局限(写报告时建议明确)
|
||||
|
||||
- **脉冲变轨/固定 ΔV**:将复杂轨道机动用固定 ΔV 预算概括。
|
||||
- **恒定比冲/结构系数**:忽略发动机工况变化、分级差异、载具设计差异。
|
||||
- **“能量”是工程近似口径**:火箭取推进剂化学能;电梯取提升+顶端段合并比能量。
|
||||
- **完美运行**:未考虑失败率、维护停机、窗口约束、天气/法规等运营因素。
|
||||
- **排布算法为贪心**:火箭发射按“低纬优先”分配以降低纬度惩罚;未做更复杂的成本/容量优化(可扩展为线性规划/整数规划)。
|
||||
|
||||
---
|
||||
|
||||
### 一句话结论(便于写 Summary)
|
||||
|
||||
- **纯火箭**在“10 站 * 每日 1 发 * 125 吨/发”的约束下,最短约 **219 年**,且能耗约 **5×10⁴ PJ** 量级。
|
||||
- **纯电梯**能耗最低(约 **1.57×10⁴ PJ**),但最短约 **186 年**。
|
||||
- **混合方案**能把工期压到约 **101 年**,能耗介于两者之间,并随着工期增加逐步趋近纯电梯能耗。
|
||||
|
||||
Reference in New Issue
Block a user