From 839ad8c95634fcb9d3ca6d347508ea9bf7324e23 Mon Sep 17 00:00:00 2001 From: ntnt Date: Sat, 31 Jan 2026 11:42:20 +0800 Subject: [PATCH] p1 --- .DS_Store | Bin 0 -> 6148 bytes README.md | 357 +++++++++++++++ combined_scenario.py | 705 ++++++++++++++++++++++++++++ combined_scenario_analysis.png | Bin 0 -> 345527 bytes earth_moon_transfer.py | 272 ----------- launch_capacity_analysis.png | Bin 0 -> 253570 bytes launch_capacity_analysis.py | 785 ++++++++++++++++++++++++++++++++ launch_capacity_physical.png | Bin 0 -> 140112 bytes launch_capacity_predictions.png | Bin 0 -> 156010 bytes launch_capacity_results.csv | 13 + launch_distribution_mid.png | Bin 0 -> 83704 bytes launch_distribution_min.png | Bin 0 -> 86503 bytes launch_frequency_analysis.png | Bin 0 -> 81074 bytes launch_sites.csv | 24 + rocket launch counts.txt | 78 ++++ rocket_comprehensive.png | Bin 0 -> 257196 bytes rocket_launch_counts.csv | 73 +++ rocket_launch_scenario.py | 678 +++++++++++++++++++++++++++ rocket_launch_timeline.png | Bin 0 -> 235480 bytes rocket_launch_to_csv.py | 61 +++ scenario_comparison.png | Bin 0 -> 67812 bytes three_scenarios_comparison.png | Bin 0 -> 142422 bytes 22 files changed, 2774 insertions(+), 272 deletions(-) create mode 100644 .DS_Store create mode 100644 README.md create mode 100644 combined_scenario.py create mode 100644 combined_scenario_analysis.png delete mode 100644 earth_moon_transfer.py create mode 100644 launch_capacity_analysis.png create mode 100644 launch_capacity_analysis.py create mode 100644 launch_capacity_physical.png create mode 100644 launch_capacity_predictions.png create mode 100644 launch_capacity_results.csv create mode 100644 launch_distribution_mid.png create mode 100644 launch_distribution_min.png create mode 100644 launch_frequency_analysis.png create mode 100644 launch_sites.csv create mode 100644 rocket launch counts.txt create mode 100644 rocket_comprehensive.png create mode 100644 rocket_launch_counts.csv create mode 100644 rocket_launch_scenario.py create mode 100644 rocket_launch_timeline.png create mode 100644 rocket_launch_to_csv.py create mode 100644 scenario_comparison.png create mode 100644 three_scenarios_comparison.png diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 本项目的“能量”口径: +> - **火箭**:用推进剂化学能近似 \(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`**。 + +
+1) 比能量与纬度效应(地面 vs 电梯、发射场纬度) + +#### `specific_energy_comparison.png` + +![specific_energy_comparison](specific_energy_comparison.png) + +#### `latitude_effects.png` + +![latitude_effects](latitude_effects.png) + +
+ +
+2) 纯火箭方案(排布与敏感性) + +#### `rocket_launch_timeline.png` + +![rocket_launch_timeline](rocket_launch_timeline.png) + +#### `rocket_comprehensive.png` + +![rocket_comprehensive](rocket_comprehensive.png) + +#### `launch_distribution_min.png` + +![launch_distribution_min](launch_distribution_min.png) + +#### `launch_distribution_mid.png` + +![launch_distribution_mid](launch_distribution_mid.png) + +#### `launch_frequency_analysis.png` + +![launch_frequency_analysis](launch_frequency_analysis.png) + +
+ +
+3) 混合方案与三方案对比(核心结论图) + +#### `combined_scenario_analysis.png` + +![combined_scenario_analysis](combined_scenario_analysis.png) + +#### `scenario_comparison.png` + +![scenario_comparison](scenario_comparison.png) + +#### `three_scenarios_comparison.png`(100–300 年折线同图对比) + +![three_scenarios_comparison](three_scenarios_comparison.png) + +
+ +
+4)(可选)火箭发射能力上限/趋势拟合 + +#### `launch_capacity_analysis.png` + +![launch_capacity_analysis](launch_capacity_analysis.png) + +#### `launch_capacity_physical.png` + +![launch_capacity_physical](launch_capacity_physical.png) + +#### `launch_capacity_predictions.png` + +![launch_capacity_predictions](launch_capacity_predictions.png) + +
+ +
+5) 其它历史遗留图 + +本目录还包含 `earth_moon_transfer_analysis.png`(早期“地月转移:载荷–燃料/能量关系”图)。当前目录下未发现对应的 `earth_moon_transfer.py` 源码文件;如果你需要我把该脚本补回并与现有口径统一,我可以再加一个文件。 + +#### `earth_moon_transfer_analysis.png` + +![earth_moon_transfer_analysis](earth_moon_transfer_analysis.png) + +
+ +### 依赖安装 + +建议使用 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° | 高纬,惩罚最大 | + +对应曲线可在下图直观看到: + +![latitude_effects](latitude_effects.png) + +--- + +### 三方案“年份–能量”折线对比(100–300 年) + +下图是你要求的 **100–300 年**区间三条折线同图(不可完成的年份用空缺表示): + +![three_scenarios_comparison](three_scenarios_comparison.png) + +读图要点: +- **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 年**,能耗介于两者之间,并随着工期增加逐步趋近纯电梯能耗。 + diff --git a/combined_scenario.py b/combined_scenario.py new file mode 100644 index 0000000..9b2952c --- /dev/null +++ b/combined_scenario.py @@ -0,0 +1,705 @@ +""" +Moon Colony Construction - Combined Scenario Analysis +(Space Elevator + Traditional Rockets) + +Problem: Deliver 100 million metric tons to Moon +- 3 Space Elevators: 179,000 metric tons/year each (priority) +- 10 Rocket launch sites: max 1 launch/day each, 125 tons/launch +- Optimize: Use elevators first (lower specific energy), then rockets + +Key: As timeline extends: +1. More payload handled by elevators (lower energy) +2. Remaining rocket launches shift to lower-latitude sites +""" + +import numpy as np +import matplotlib +matplotlib.use('Agg') +import matplotlib.pyplot as plt +from matplotlib import rcParams +from dataclasses import dataclass +from typing import List, Tuple, Dict +import pandas as pd + +# 设置字体 +rcParams['font.sans-serif'] = ['Arial Unicode MS', 'DejaVu Sans', 'SimHei'] +rcParams['axes.unicode_minus'] = False + +# ============== 物理常数 ============== +G0 = 9.81 # m/s² +OMEGA_EARTH = 7.27e-5 # rad/s +R_EARTH = 6.371e6 # m + +# ============== 任务参数 ============== +TOTAL_PAYLOAD = 100e6 # 100 million metric tons + +# ============== 太空电梯参数 ============== +NUM_ELEVATORS = 3 +ELEVATOR_CAPACITY_PER_YEAR = 179000 # metric tons per elevator per year +TOTAL_ELEVATOR_CAPACITY = NUM_ELEVATORS * ELEVATOR_CAPACITY_PER_YEAR # 537,000 tons/year + +# 太空电梯能量参数 (从之前分析) +# 电梯提升能量: ~88.7 MJ/kg +# 顶端推进能量: ~68.5 MJ/kg +# 总计: ~157.2 MJ/kg = 157.2 TJ/1000 tons +ELEVATOR_SPECIFIC_ENERGY = 157.2e9 # J per metric ton (157.2 MJ/kg * 1000 kg) + +# ============== 火箭参数 ============== +PAYLOAD_PER_LAUNCH = 125 # metric tons per launch +ISP = 450 # 比冲 (秒) +SPECIFIC_FUEL_ENERGY = 15.5e6 # J/kg +ALPHA = 0.10 # 结构系数 +NUM_STAGES = 3 +DELTA_V_BASE = 13300 # m/s (赤道发射到月球) + +# 火箭比能量 (从之前分析: ~492.7 MJ/kg = 492.7 TJ/1000 tons for equator) +# 实际会因纬度变化 + + +# ============== 发射场定义 ============== +@dataclass +class LaunchSite: + name: str + short_name: str + latitude: float + max_launches_per_day: int = 1 + + @property + def abs_latitude(self) -> float: + return abs(self.latitude) + + @property + def rotation_velocity(self) -> float: + return OMEGA_EARTH * R_EARTH * np.cos(np.radians(self.abs_latitude)) + + @property + def delta_v_loss(self) -> float: + v_equator = OMEGA_EARTH * R_EARTH + return v_equator - self.rotation_velocity + + @property + def total_delta_v(self) -> float: + return DELTA_V_BASE + self.delta_v_loss + + +# 10个发射场 (按纬度排序) +LAUNCH_SITES = sorted([ + LaunchSite("Kourou (French Guiana)", "Kourou", 5.2), + LaunchSite("Satish Dhawan (India)", "SDSC", 13.7), + LaunchSite("Boca Chica (Texas)", "Texas", 26.0), + LaunchSite("Cape Canaveral (Florida)", "Florida", 28.5), + LaunchSite("Vandenberg (California)", "California", 34.7), + LaunchSite("Wallops (Virginia)", "Virginia", 37.8), + LaunchSite("Taiyuan (China)", "Taiyuan", 38.8), + LaunchSite("Mahia (New Zealand)", "Mahia", 39.3), + LaunchSite("Baikonur (Kazakhstan)", "Baikonur", 45.6), + LaunchSite("Kodiak (Alaska)", "Alaska", 57.4), +], key=lambda x: x.abs_latitude) + + +# ============== 核心计算函数 ============== + +def fuel_ratio_multistage(delta_v: float) -> float: + """多级火箭燃料/载荷比""" + ve = ISP * G0 + delta_v_per_stage = delta_v / NUM_STAGES + R_stage = np.exp(delta_v_per_stage / ve) + + denominator = 1 - ALPHA * (R_stage - 1) + if denominator <= 0: + return np.inf + + k_stage = (R_stage - 1) / denominator + + total_fuel_ratio = 0 + remaining_ratio = 1.0 + + for _ in range(NUM_STAGES): + fuel_this_stage = remaining_ratio * k_stage + total_fuel_ratio += fuel_this_stage + remaining_ratio *= (1 + k_stage * (1 + ALPHA)) + + return total_fuel_ratio + + +def rocket_energy_per_ton(site: LaunchSite) -> float: + """火箭发射每吨载荷的能量消耗 (J/ton)""" + k = fuel_ratio_multistage(site.total_delta_v) + fuel_per_ton = k * 1000 # kg fuel per metric ton payload + return fuel_per_ton * SPECIFIC_FUEL_ENERGY + + +def rocket_energy_per_launch(site: LaunchSite) -> float: + """单次火箭发射的能量消耗 (J)""" + return rocket_energy_per_ton(site) * PAYLOAD_PER_LAUNCH + + +# ============== 组合方案计算 ============== + +def calculate_combined_scenario(completion_years: float) -> Dict: + """ + 计算给定完成年限下的组合方案 + + 策略: + 1. 太空电梯满负荷运行 + 2. 剩余载荷由火箭发射,优先低纬度站点 + + 返回: + 方案详情字典 + """ + # 太空电梯运输量 + elevator_payload = min(TOTAL_ELEVATOR_CAPACITY * completion_years, TOTAL_PAYLOAD) + elevator_energy = elevator_payload * ELEVATOR_SPECIFIC_ENERGY + + # 剩余需要火箭运输的载荷 + remaining_payload = TOTAL_PAYLOAD - elevator_payload + + if remaining_payload <= 0: + # 完全由电梯完成 + return { + 'completion_years': completion_years, + 'elevator_payload': elevator_payload, + 'elevator_energy_PJ': elevator_energy / 1e15, + 'rocket_payload': 0, + 'rocket_energy_PJ': 0, + 'total_energy_PJ': elevator_energy / 1e15, + 'rocket_launches': 0, + 'sites_used': 0, + 'elevator_fraction': 1.0, + 'rocket_distribution': [], + } + + # 需要火箭发射 + rocket_launches_needed = int(np.ceil(remaining_payload / PAYLOAD_PER_LAUNCH)) + + # 按纬度优先分配火箭发射 + days_available = completion_years * 365 + max_launches_per_site = int(days_available) + + rocket_distribution = [] + remaining_launches = rocket_launches_needed + rocket_energy = 0 + sites_used = 0 + + for site in LAUNCH_SITES: + if remaining_launches <= 0: + rocket_distribution.append((site, 0)) + else: + allocated = min(remaining_launches, max_launches_per_site) + rocket_distribution.append((site, allocated)) + rocket_energy += rocket_energy_per_launch(site) * allocated + remaining_launches -= allocated + if allocated > 0: + sites_used += 1 + + # 检查是否能在规定时间内完成 + total_rocket_capacity = len(LAUNCH_SITES) * max_launches_per_site * PAYLOAD_PER_LAUNCH + if remaining_payload > total_rocket_capacity: + # 无法完成 + return None + + rocket_payload = rocket_launches_needed * PAYLOAD_PER_LAUNCH + total_energy = elevator_energy + rocket_energy + + return { + 'completion_years': completion_years, + 'elevator_payload': elevator_payload, + 'elevator_energy_PJ': elevator_energy / 1e15, + 'rocket_payload': rocket_payload, + 'rocket_energy_PJ': rocket_energy / 1e15, + 'total_energy_PJ': total_energy / 1e15, + 'rocket_launches': rocket_launches_needed, + 'sites_used': sites_used, + 'elevator_fraction': elevator_payload / TOTAL_PAYLOAD, + 'rocket_distribution': rocket_distribution, + } + + +def analyze_combined_timeline() -> pd.DataFrame: + """ + 分析不同完成年限下的组合方案 + """ + # 计算关键时间点 + # 1. 仅电梯完成所需时间 + elevator_only_years = TOTAL_PAYLOAD / TOTAL_ELEVATOR_CAPACITY + + # 2. 最短时间(电梯+全部火箭站点满负荷) + rocket_capacity_per_year = len(LAUNCH_SITES) * 365 * PAYLOAD_PER_LAUNCH + total_capacity_per_year = TOTAL_ELEVATOR_CAPACITY + rocket_capacity_per_year + min_years = TOTAL_PAYLOAD / total_capacity_per_year + + print(f"Elevator-only completion: {elevator_only_years:.1f} years") + print(f"Minimum completion (all systems): {min_years:.1f} years") + print(f"Elevator capacity: {TOTAL_ELEVATOR_CAPACITY:,} tons/year") + print(f"Rocket capacity: {rocket_capacity_per_year:,} tons/year") + + # 分析范围 + years_range = np.linspace(min_years, elevator_only_years * 1.1, 200) + + results = [] + for years in years_range: + scenario = calculate_combined_scenario(years) + if scenario is not None: + results.append(scenario) + + return pd.DataFrame(results) + + +# ============== 可视化 ============== + +def plot_combined_analysis( + save_path: str = '/Volumes/Files/code/mm/20260130_b/combined_scenario_analysis.png' +): + """ + 绘制组合方案分析图 + """ + df = analyze_combined_timeline() + + # 关键时间点 + elevator_only_years = TOTAL_PAYLOAD / TOTAL_ELEVATOR_CAPACITY + rocket_capacity_per_year = len(LAUNCH_SITES) * 365 * PAYLOAD_PER_LAUNCH + total_capacity_per_year = TOTAL_ELEVATOR_CAPACITY + rocket_capacity_per_year + min_years = TOTAL_PAYLOAD / total_capacity_per_year + + fig, axes = plt.subplots(2, 2, figsize=(16, 14)) + + # ========== 图1: 完成年份 vs 总能量消耗 ========== + ax1 = axes[0, 0] + + ax1.plot(df['completion_years'], df['total_energy_PJ'], 'b-', linewidth=2.5, + label='Total Energy') + ax1.plot(df['completion_years'], df['elevator_energy_PJ'], 'g--', linewidth=2, + label='Elevator Energy') + ax1.plot(df['completion_years'], df['rocket_energy_PJ'], 'r--', linewidth=2, + label='Rocket Energy') + + # 标记关键点 + ax1.axvline(x=min_years, color='orange', linestyle=':', linewidth=1.5, + label=f'Min time: {min_years:.0f} years') + ax1.axvline(x=elevator_only_years, color='purple', linestyle=':', linewidth=1.5, + label=f'Elevator-only: {elevator_only_years:.0f} years') + + ax1.set_xlabel('Completion Time (years)', fontsize=12) + ax1.set_ylabel('Energy Consumption (PJ)', fontsize=12) + ax1.set_title('Combined Scenario: Completion Time vs Energy\n' + '(Space Elevator + Rockets)', fontsize=14) + ax1.legend(loc='upper right') + ax1.grid(True, alpha=0.3) + ax1.set_xlim(min_years * 0.95, elevator_only_years * 1.05) + + # ========== 图2: 电梯 vs 火箭载荷比例 ========== + ax2 = axes[0, 1] + + ax2.fill_between(df['completion_years'], 0, df['elevator_fraction'] * 100, + alpha=0.7, color='green', label='Space Elevator') + ax2.fill_between(df['completion_years'], df['elevator_fraction'] * 100, 100, + alpha=0.7, color='red', label='Rockets') + + ax2.axvline(x=min_years, color='orange', linestyle=':', linewidth=1.5) + ax2.axvline(x=elevator_only_years, color='purple', linestyle=':', linewidth=1.5) + + ax2.set_xlabel('Completion Time (years)', fontsize=12) + ax2.set_ylabel('Payload Share (%)', fontsize=12) + ax2.set_title('Payload Distribution: Elevator vs Rockets', fontsize=14) + ax2.legend(loc='center right') + ax2.set_ylim(0, 100) + ax2.set_xlim(min_years * 0.95, elevator_only_years * 1.05) + ax2.grid(True, alpha=0.3) + + # ========== 图3: 使用的火箭发射场数量 ========== + ax3 = axes[1, 0] + + ax3.plot(df['completion_years'], df['sites_used'], 'r-', linewidth=2) + ax3.fill_between(df['completion_years'], 0, df['sites_used'], alpha=0.3, color='red') + + ax3.axvline(x=min_years, color='orange', linestyle=':', linewidth=1.5) + ax3.axvline(x=elevator_only_years, color='purple', linestyle=':', linewidth=1.5) + + # 标注发射场 + for i, site in enumerate(LAUNCH_SITES): + ax3.axhline(y=i+1, color='gray', linestyle=':', alpha=0.2) + ax3.text(df['completion_years'].max() * 0.99, i+1 + 0.15, + f'{site.short_name} ({site.abs_latitude:.0f}°)', + fontsize=8, ha='right', va='bottom') + + ax3.set_xlabel('Completion Time (years)', fontsize=12) + ax3.set_ylabel('Number of Rocket Sites Used', fontsize=12) + ax3.set_title('Rocket Launch Sites Required\n(Longer timeline → fewer high-lat sites)', fontsize=14) + ax3.set_ylim(0, 11) + ax3.set_xlim(min_years * 0.95, elevator_only_years * 1.05) + ax3.grid(True, alpha=0.3) + + # ========== 图4: 能量效率对比 ========== + ax4 = axes[1, 1] + + # 计算平均比能量 + avg_specific_energy = df['total_energy_PJ'] * 1e15 / TOTAL_PAYLOAD / 1e9 # GJ/ton + + ax4.plot(df['completion_years'], avg_specific_energy, 'b-', linewidth=2) + + # 参考线 + elevator_specific = ELEVATOR_SPECIFIC_ENERGY / 1e9 # GJ/ton + ax4.axhline(y=elevator_specific, color='green', linestyle='--', + label=f'Elevator only: {elevator_specific:.1f} GJ/ton') + + # 平均火箭比能量 (赤道) + rocket_specific_equator = rocket_energy_per_ton(LAUNCH_SITES[0]) / 1e9 + ax4.axhline(y=rocket_specific_equator, color='red', linestyle='--', + label=f'Rocket (equator): {rocket_specific_equator:.1f} GJ/ton') + + ax4.axvline(x=min_years, color='orange', linestyle=':', linewidth=1.5) + ax4.axvline(x=elevator_only_years, color='purple', linestyle=':', linewidth=1.5) + + ax4.set_xlabel('Completion Time (years)', fontsize=12) + ax4.set_ylabel('Average Specific Energy (GJ/ton)', fontsize=12) + ax4.set_title('Energy Efficiency vs Timeline\n(Longer time → more elevator → lower energy)', fontsize=14) + ax4.legend() + ax4.set_xlim(min_years * 0.95, elevator_only_years * 1.05) + ax4.grid(True, alpha=0.3) + + plt.suptitle(f'Combined Scenario: 100M tons to Moon\n' + f'3 Elevators ({TOTAL_ELEVATOR_CAPACITY:,} t/yr) + 10 Rocket Sites', + fontsize=15, y=1.02) + + plt.tight_layout() + plt.savefig(save_path, dpi=150, bbox_inches='tight') + print(f"\n组合方案分析图已保存至: {save_path}") + + return df + + +def plot_scenario_comparison( + save_path: str = '/Volumes/Files/code/mm/20260130_b/scenario_comparison.png' +): + """ + 对比三种方案:仅电梯、仅火箭、组合 + """ + # 关键时间点分析 + elevator_only_years = TOTAL_PAYLOAD / TOTAL_ELEVATOR_CAPACITY + rocket_capacity_per_year = len(LAUNCH_SITES) * 365 * PAYLOAD_PER_LAUNCH + rocket_only_min_years = TOTAL_PAYLOAD / rocket_capacity_per_year + combined_min_years = TOTAL_PAYLOAD / (TOTAL_ELEVATOR_CAPACITY + rocket_capacity_per_year) + + # 各方案能量 + elevator_only_energy = TOTAL_PAYLOAD * ELEVATOR_SPECIFIC_ENERGY / 1e15 # PJ + + # 火箭方案 (平均所有站点) + avg_rocket_energy_per_ton = sum(rocket_energy_per_ton(s) for s in LAUNCH_SITES) / len(LAUNCH_SITES) + rocket_only_energy = TOTAL_PAYLOAD * avg_rocket_energy_per_ton / 1e15 # PJ + + # 组合方案 (最短时间 - 加余量) + combined_scenario = calculate_combined_scenario(combined_min_years * 1.01) + combined_min_energy = combined_scenario['total_energy_PJ'] if combined_scenario else elevator_only_energy + + # 组合方案 (仅电梯时间) + combined_extended = calculate_combined_scenario(elevator_only_years * 0.95) + combined_extended_energy = combined_extended['total_energy_PJ'] if combined_extended else elevator_only_energy + + fig, axes = plt.subplots(1, 2, figsize=(14, 6)) + + # ========== 图1: 完成时间对比 ========== + ax1 = axes[0] + + scenarios = ['Elevator\nOnly', 'Rocket\nOnly', 'Combined\n(Min Time)', 'Combined\n(Extended)'] + times = [elevator_only_years, rocket_only_min_years, combined_min_years, elevator_only_years * 0.99] + colors = ['green', 'red', 'blue', 'purple'] + + bars = ax1.bar(scenarios, times, color=colors, alpha=0.7) + + ax1.set_ylabel('Completion Time (years)', fontsize=12) + ax1.set_title('Completion Time Comparison', fontsize=14) + ax1.grid(True, alpha=0.3, axis='y') + + for bar, t in zip(bars, times): + ax1.text(bar.get_x() + bar.get_width()/2, bar.get_height() + 2, + f'{t:.0f}y', ha='center', fontsize=11, fontweight='bold') + + # ========== 图2: 能量消耗对比 ========== + ax2 = axes[1] + + energies = [elevator_only_energy, rocket_only_energy, combined_min_energy, combined_extended_energy] + + bars = ax2.bar(scenarios, energies, color=colors, alpha=0.7) + + ax2.set_ylabel('Total Energy (PJ)', fontsize=12) + ax2.set_title('Energy Consumption Comparison', fontsize=14) + ax2.grid(True, alpha=0.3, axis='y') + + for bar, e in zip(bars, energies): + ax2.text(bar.get_x() + bar.get_width()/2, bar.get_height() + 500, + f'{e:.0f}', ha='center', fontsize=11, fontweight='bold') + + plt.tight_layout() + plt.savefig(save_path, dpi=150, bbox_inches='tight') + print(f"方案对比图已保存至: {save_path}") + + return { + 'elevator_only': {'years': elevator_only_years, 'energy_PJ': elevator_only_energy}, + 'rocket_only': {'years': rocket_only_min_years, 'energy_PJ': rocket_only_energy}, + 'combined_min': {'years': combined_min_years, 'energy_PJ': combined_min_energy}, + 'combined_extended': {'years': elevator_only_years * 0.99, 'energy_PJ': combined_extended_energy}, + } + + +def print_summary(df: pd.DataFrame): + """打印分析摘要""" + elevator_only_years = TOTAL_PAYLOAD / TOTAL_ELEVATOR_CAPACITY + rocket_capacity_per_year = len(LAUNCH_SITES) * 365 * PAYLOAD_PER_LAUNCH + combined_min_years = TOTAL_PAYLOAD / (TOTAL_ELEVATOR_CAPACITY + rocket_capacity_per_year) + + print("\n" + "=" * 90) + print("COMBINED SCENARIO (SPACE ELEVATOR + ROCKETS) ANALYSIS") + print("=" * 90) + + print(f"\nSystem Capacities:") + print(f" - 3 Space Elevators: {TOTAL_ELEVATOR_CAPACITY:,} tons/year") + print(f" - 10 Rocket Sites: {rocket_capacity_per_year:,} tons/year (@ 1 launch/day each)") + print(f" - Combined: {TOTAL_ELEVATOR_CAPACITY + rocket_capacity_per_year:,} tons/year") + + print(f"\nSpecific Energy:") + print(f" - Elevator: {ELEVATOR_SPECIFIC_ENERGY/1e9:.1f} GJ/ton ({ELEVATOR_SPECIFIC_ENERGY/1e9/rocket_energy_per_ton(LAUNCH_SITES[0])*1e9*100:.1f}% of rocket)") + print(f" - Rocket (Kourou): {rocket_energy_per_ton(LAUNCH_SITES[0])/1e9:.1f} GJ/ton") + print(f" - Rocket (Alaska): {rocket_energy_per_ton(LAUNCH_SITES[-1])/1e9:.1f} GJ/ton") + + print(f"\nKey Scenarios:") + + # 最短时间 (加一点余量确保可以完成) + min_scenario = calculate_combined_scenario(combined_min_years * 1.01) + print(f"\n 1. Minimum Time (~{combined_min_years:.0f} years):") + print(f" - Elevator payload: {min_scenario['elevator_payload']/1e6:.1f}M tons ({min_scenario['elevator_fraction']*100:.1f}%)") + print(f" - Rocket payload: {min_scenario['rocket_payload']/1e6:.1f}M tons") + print(f" - Rocket launches: {min_scenario['rocket_launches']:,}") + print(f" - Sites used: {min_scenario['sites_used']}") + print(f" - Total energy: {min_scenario['total_energy_PJ']:.0f} PJ") + + # 中等时间 + mid_years = (combined_min_years + elevator_only_years) / 2 + mid_scenario = calculate_combined_scenario(mid_years) + print(f"\n 2. Medium Timeline ({mid_years:.0f} years):") + print(f" - Elevator payload: {mid_scenario['elevator_payload']/1e6:.1f}M tons ({mid_scenario['elevator_fraction']*100:.1f}%)") + print(f" - Rocket payload: {mid_scenario['rocket_payload']/1e6:.1f}M tons") + print(f" - Rocket launches: {mid_scenario['rocket_launches']:,}") + print(f" - Sites used: {mid_scenario['sites_used']}") + print(f" - Total energy: {mid_scenario['total_energy_PJ']:.0f} PJ") + + # 接近仅电梯 + extended_years = elevator_only_years * 0.95 + extended_scenario = calculate_combined_scenario(extended_years) + print(f"\n 3. Extended Timeline ({extended_years:.0f} years):") + print(f" - Elevator payload: {extended_scenario['elevator_payload']/1e6:.1f}M tons ({extended_scenario['elevator_fraction']*100:.1f}%)") + print(f" - Rocket payload: {extended_scenario['rocket_payload']/1e6:.1f}M tons") + print(f" - Rocket launches: {extended_scenario['rocket_launches']:,}") + print(f" - Sites used: {extended_scenario['sites_used']}") + print(f" - Total energy: {extended_scenario['total_energy_PJ']:.0f} PJ") + + # 仅电梯 + print(f"\n 4. Elevator Only ({elevator_only_years:.0f} years):") + elevator_energy = TOTAL_PAYLOAD * ELEVATOR_SPECIFIC_ENERGY / 1e15 + print(f" - Elevator payload: 100M tons (100%)") + print(f" - Rocket launches: 0") + print(f" - Total energy: {elevator_energy:.0f} PJ") + + print("\n" + "=" * 90) + print("ENERGY SAVINGS ANALYSIS") + print("=" * 90) + + rocket_only_energy = TOTAL_PAYLOAD * sum(rocket_energy_per_ton(s) for s in LAUNCH_SITES) / len(LAUNCH_SITES) / 1e15 + + print(f"\n Baseline (Rocket Only): {rocket_only_energy:.0f} PJ") + print(f" Combined (Min Time): {min_scenario['total_energy_PJ']:.0f} PJ (saves {(1-min_scenario['total_energy_PJ']/rocket_only_energy)*100:.0f}%)") + print(f" Combined (Extended): {extended_scenario['total_energy_PJ']:.0f} PJ (saves {(1-extended_scenario['total_energy_PJ']/rocket_only_energy)*100:.0f}%)") + print(f" Elevator Only: {elevator_energy:.0f} PJ (saves {(1-elevator_energy/rocket_only_energy)*100:.0f}%)") + + print("=" * 90) + + +def plot_three_scenarios_comparison( + year_min: float = 100, + year_max: float = 300, + save_path: str = '/Volumes/Files/code/mm/20260130_b/three_scenarios_comparison.png' +): + """ + 绘制三种方案在指定年份范围内的能量消耗对比折线图 + + 方案: + 1. 纯火箭方案 (Rocket Only) + 2. 纯电梯方案 (Elevator Only) + 3. 混合方案 (Combined) + """ + years = np.linspace(year_min, year_max, 200) + + # 计算各方案的能量 + rocket_energy = [] + elevator_energy = [] + combined_energy = [] + + # 关键时间点 + elevator_only_min_years = TOTAL_PAYLOAD / TOTAL_ELEVATOR_CAPACITY # ~186 years + rocket_only_min_years = TOTAL_PAYLOAD / (len(LAUNCH_SITES) * 365 * PAYLOAD_PER_LAUNCH) # ~219 years + combined_min_years = TOTAL_PAYLOAD / (TOTAL_ELEVATOR_CAPACITY + len(LAUNCH_SITES) * 365 * PAYLOAD_PER_LAUNCH) # ~101 years + + for y in years: + # ===== 纯火箭方案 ===== + if y >= rocket_only_min_years: + # 可以完成,优先使用低纬度站点 + total_launches = int(TOTAL_PAYLOAD / PAYLOAD_PER_LAUNCH) + days_available = y * 365 + max_per_site = int(days_available) + + energy = 0 + remaining = total_launches + for site in LAUNCH_SITES: + if remaining <= 0: + break + allocated = min(remaining, max_per_site) + energy += rocket_energy_per_launch(site) * allocated + remaining -= allocated + + rocket_energy.append(energy / 1e15) + else: + # 无法完成 + rocket_energy.append(np.nan) + + # ===== 纯电梯方案 ===== + if y >= elevator_only_min_years: + # 可以完成 + energy = TOTAL_PAYLOAD * ELEVATOR_SPECIFIC_ENERGY + elevator_energy.append(energy / 1e15) + else: + # 无法完成 + elevator_energy.append(np.nan) + + # ===== 混合方案 ===== + if y >= combined_min_years: + scenario = calculate_combined_scenario(y) + if scenario: + combined_energy.append(scenario['total_energy_PJ']) + else: + combined_energy.append(np.nan) + else: + combined_energy.append(np.nan) + + # 创建图表 + fig, ax = plt.subplots(figsize=(14, 8)) + + # 绘制三条折线 + ax.plot(years, rocket_energy, 'r-', linewidth=2.5, label='Rocket Only', marker='', markersize=4) + ax.plot(years, elevator_energy, 'g-', linewidth=2.5, label='Elevator Only', marker='', markersize=4) + ax.plot(years, combined_energy, 'b-', linewidth=2.5, label='Combined (Elevator + Rocket)', marker='', markersize=4) + + # 标记关键时间点 + ax.axvline(x=combined_min_years, color='blue', linestyle=':', alpha=0.7, linewidth=1.5) + ax.axvline(x=elevator_only_min_years, color='green', linestyle=':', alpha=0.7, linewidth=1.5) + ax.axvline(x=rocket_only_min_years, color='red', linestyle=':', alpha=0.7, linewidth=1.5) + + # 添加标注 + y_pos = ax.get_ylim()[1] * 0.95 + ax.annotate(f'Combined\nMin: {combined_min_years:.0f}y', + xy=(combined_min_years, y_pos), fontsize=9, ha='center', + bbox=dict(boxstyle='round', facecolor='lightblue', alpha=0.8)) + ax.annotate(f'Elevator\nMin: {elevator_only_min_years:.0f}y', + xy=(elevator_only_min_years, y_pos * 0.85), fontsize=9, ha='center', + bbox=dict(boxstyle='round', facecolor='lightgreen', alpha=0.8)) + ax.annotate(f'Rocket\nMin: {rocket_only_min_years:.0f}y', + xy=(rocket_only_min_years, y_pos * 0.75), fontsize=9, ha='center', + bbox=dict(boxstyle='round', facecolor='lightsalmon', alpha=0.8)) + + # 填充区域表示节能效果 + # Combined比Rocket节省的能量 + rocket_arr = np.array(rocket_energy) + combined_arr = np.array(combined_energy) + valid_mask = ~np.isnan(rocket_arr) & ~np.isnan(combined_arr) + ax.fill_between(years[valid_mask], combined_arr[valid_mask], rocket_arr[valid_mask], + alpha=0.2, color='purple', label='Energy saved by Combined vs Rocket') + + ax.set_xlabel('Completion Time (years)', fontsize=13) + ax.set_ylabel('Total Energy Consumption (PJ)', fontsize=13) + ax.set_title('Moon Colony Construction: Energy vs Completion Time\n' + '(100 Million Metric Tons Payload Comparison)', fontsize=15) + ax.legend(loc='upper right', fontsize=11) + ax.grid(True, alpha=0.3) + ax.set_xlim(year_min, year_max) + + # 添加数据表格 + # 选择几个关键年份的数据 + key_years = [110, 150, 186, 220, 250] + table_data = [] + for ky in key_years: + idx = np.argmin(np.abs(years - ky)) + table_data.append([ + f'{ky}', + f'{combined_energy[idx]:.0f}' if not np.isnan(combined_energy[idx]) else 'N/A', + f'{elevator_energy[idx]:.0f}' if not np.isnan(elevator_energy[idx]) else 'N/A', + f'{rocket_energy[idx]:.0f}' if not np.isnan(rocket_energy[idx]) else 'N/A', + ]) + + # 在图表下方添加表格 + table = ax.table( + cellText=table_data, + colLabels=['Year', 'Combined (PJ)', 'Elevator (PJ)', 'Rocket (PJ)'], + loc='bottom', + bbox=[0.15, -0.25, 0.7, 0.18], + cellLoc='center' + ) + table.auto_set_font_size(False) + table.set_fontsize(10) + table.scale(1, 1.5) + + # 调整布局给表格留空间 + plt.subplots_adjust(bottom=0.25) + + plt.savefig(save_path, dpi=150, bbox_inches='tight') + print(f"\n三方案对比图已保存至: {save_path}") + + # 打印关键数据 + print("\n" + "=" * 70) + print("THREE SCENARIOS ENERGY COMPARISON (100-300 years)") + print("=" * 70) + print(f"\n{'Year':<10} {'Combined':>15} {'Elevator':>15} {'Rocket':>15}") + print(f"{'':10} {'(PJ)':>15} {'(PJ)':>15} {'(PJ)':>15}") + print("-" * 55) + + for ky in [110, 130, 150, 186, 200, 220, 250, 300]: + idx = np.argmin(np.abs(years - ky)) + c = f'{combined_energy[idx]:.0f}' if not np.isnan(combined_energy[idx]) else 'N/A' + e = f'{elevator_energy[idx]:.0f}' if not np.isnan(elevator_energy[idx]) else 'N/A' + r = f'{rocket_energy[idx]:.0f}' if not np.isnan(rocket_energy[idx]) else 'N/A' + print(f"{ky:<10} {c:>15} {e:>15} {r:>15}") + + print("=" * 70) + + return fig + + +# ============== 主程序 ============== + +if __name__ == "__main__": + print("=" * 90) + print("MOON COLONY: COMBINED SCENARIO ANALYSIS") + print("(Space Elevator System + Traditional Rockets)") + print("=" * 90) + + # 主分析 + df = plot_combined_analysis() + + # 打印摘要 + print_summary(df) + + # 方案对比 + print("\n\n正在生成方案对比图...") + comparison = plot_scenario_comparison() + + print("\n" + "=" * 90) + print("FINAL COMPARISON") + print("=" * 90) + print(f"\n{'Scenario':<25} {'Years':>12} {'Energy (PJ)':>15} {'vs Rocket Only':>18}") + print("-" * 70) + for name, data in comparison.items(): + rocket_energy_val = comparison['rocket_only']['energy_PJ'] + savings = (1 - data['energy_PJ'] / rocket_energy_val) * 100 if rocket_energy_val > 0 else 0 + print(f"{name:<25} {data['years']:>12.0f} {data['energy_PJ']:>15.0f} {savings:>17.0f}%") + print("=" * 90) + + # 生成三方案对比折线图 (100-300年) + print("\n\n正在生成三方案对比折线图 (100-300年)...") + plot_three_scenarios_comparison(year_min=100, year_max=300) diff --git a/combined_scenario_analysis.png b/combined_scenario_analysis.png new file mode 100644 index 0000000000000000000000000000000000000000..1d420fcaf43a51bbef0386b760f6bebc70a98018 GIT binary patch literal 345527 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
=jHZ)&UR4~_NKnlYp5M%!v^lh8safnv7c?!{Ui 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