This commit is contained in:
2026-02-02 14:32:39 +08:00
parent 2bfb64c855
commit 833b094e58
24 changed files with 2328 additions and 624 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 175 KiB

After

Width:  |  Height:  |  Size: 179 KiB

View File

@@ -46,8 +46,8 @@ ELEVATOR_SPECIFIC_ENERGY = 157.2e9 # J per metric ton (157.2 MJ/kg * 1000 kg)
# ============== 火箭参数 ============== # ============== 火箭参数 ==============
PAYLOAD_PER_LAUNCH = 125 # metric tons per launch PAYLOAD_PER_LAUNCH = 125 # metric tons per launch
ISP = 450 # 比冲 (秒) ISP = 363 # 比冲 (秒) - 液氧甲烷 (LOX/CH4, Raptor-class)
SPECIFIC_FUEL_ENERGY = 15.5e6 # J/kg SPECIFIC_FUEL_ENERGY = 11.9e6 # J/kg
ALPHA = 0.10 # 结构系数 ALPHA = 0.10 # 结构系数
NUM_STAGES = 3 NUM_STAGES = 3
DELTA_V_BASE = 13300 # m/s (赤道发射到月球) DELTA_V_BASE = 13300 # m/s (赤道发射到月球)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 KiB

After

Width:  |  Height:  |  Size: 133 KiB

BIN
p1/lambda_comprehensive.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 350 KiB

BIN
p1/lambda_cost_analysis.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 334 KiB

844
p1/lambda_cost_analysis.py Normal file
View File

@@ -0,0 +1,844 @@
"""
Lambda Time Cost Analysis for Moon Colony Logistics
This module introduces the time opportunity cost (λ) to find the optimal
operating point on the Energy-Time trade-off curve.
Objective Function: J = E_total + λ × T
where:
- E_total: Total energy consumption (PJ)
- T: Construction timeline (years)
- λ: Time opportunity cost (PJ/year)
The optimal point satisfies: dE/dT = -λ (marginal energy saving = time cost)
"""
import numpy as np
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
from matplotlib import rcParams
import pandas as pd
from typing import Dict, List, Tuple, Optional
from dataclasses import dataclass
# Font settings
rcParams['font.sans-serif'] = ['Arial Unicode MS', 'DejaVu Sans', 'SimHei']
rcParams['axes.unicode_minus'] = False
# ============== Physical Constants ==============
G0 = 9.81 # m/s²
OMEGA_EARTH = 7.27e-5 # rad/s
R_EARTH = 6.371e6 # m
# Mission parameters
TOTAL_PAYLOAD = 100e6 # 100 million metric tons
# Space Elevator parameters
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
ELEVATOR_SPECIFIC_ENERGY = 157.2e9 # J per metric ton (157.2 MJ/kg × 1000)
# Rocket parameters - LOX/CH4 (Raptor-class)
PAYLOAD_PER_LAUNCH = 125 # metric tons per launch
ISP = 363 # Specific impulse (s)
SPECIFIC_FUEL_ENERGY = 11.9e6 # J/kg
ALPHA = 0.10 # Structural coefficient
NUM_STAGES = 3
DELTA_V_BASE = 13300 # m/s (LEO + TLI + LOI)
# ============== Launch Site Definition ==============
@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 delta_v_loss(self) -> float:
v_equator = OMEGA_EARTH * R_EARTH
v_site = OMEGA_EARTH * R_EARTH * np.cos(np.radians(self.abs_latitude))
return v_equator - v_site
@property
def total_delta_v(self) -> float:
return DELTA_V_BASE + self.delta_v_loss
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)
# ============== Core Calculation Functions ==============
def fuel_ratio_multistage(delta_v: float) -> float:
"""Multi-stage rocket fuel/payload ratio"""
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:
"""Energy consumption per ton of payload for rocket launch (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 calculate_scenario(completion_years: float) -> Optional[Dict]:
"""
Calculate optimal scenario for given completion timeline
(elevator priority + low-latitude rockets)
"""
# Space elevator transport
elevator_payload = min(TOTAL_ELEVATOR_CAPACITY * completion_years, TOTAL_PAYLOAD)
elevator_energy = elevator_payload * ELEVATOR_SPECIFIC_ENERGY
# Remaining payload for rockets
remaining_payload = TOTAL_PAYLOAD - elevator_payload
if remaining_payload <= 0:
return {
'years': completion_years,
'elevator_payload': elevator_payload,
'rocket_payload': 0,
'elevator_energy_PJ': elevator_energy / 1e15,
'rocket_energy_PJ': 0,
'total_energy_PJ': elevator_energy / 1e15,
'rocket_launches': 0,
'sites_used': 0,
'elevator_fraction': 1.0,
}
# Rocket launches needed
rocket_launches_needed = int(np.ceil(remaining_payload / PAYLOAD_PER_LAUNCH))
# Allocate by latitude priority
days_available = completion_years * 365
max_launches_per_site = int(days_available)
# Check feasibility
total_rocket_capacity = len(LAUNCH_SITES) * max_launches_per_site * PAYLOAD_PER_LAUNCH
if remaining_payload > total_rocket_capacity:
return None
rocket_energy = 0
sites_used = 0
remaining_launches = rocket_launches_needed
for site in LAUNCH_SITES:
if remaining_launches <= 0:
break
allocated = min(remaining_launches, max_launches_per_site)
rocket_energy += rocket_energy_per_ton(site) * PAYLOAD_PER_LAUNCH * allocated
remaining_launches -= allocated
if allocated > 0:
sites_used += 1
rocket_payload = rocket_launches_needed * PAYLOAD_PER_LAUNCH
total_energy = elevator_energy + rocket_energy
return {
'years': completion_years,
'elevator_payload': elevator_payload,
'rocket_payload': rocket_payload,
'elevator_energy_PJ': elevator_energy / 1e15,
'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,
}
# ============== Generate Trade-off Curve ==============
def generate_tradeoff_curve(
year_min: float = 100,
year_max: float = 250,
num_points: int = 500
) -> pd.DataFrame:
"""Generate Energy-Time trade-off curve data"""
years_range = np.linspace(year_min, year_max, num_points)
results = []
for years in years_range:
scenario = calculate_scenario(years)
if scenario is not None:
results.append({
'years': years,
'energy_PJ': scenario['total_energy_PJ'],
'elevator_fraction': scenario['elevator_fraction'],
'sites_used': scenario['sites_used'],
'rocket_launches': scenario['rocket_launches'],
})
return pd.DataFrame(results)
# ============== Lambda Cost Analysis ==============
def calculate_total_cost(df: pd.DataFrame, lambda_cost: float) -> np.ndarray:
"""
Calculate total cost J = E + λ × T
Args:
df: Trade-off curve data
lambda_cost: Time opportunity cost (PJ/year)
Returns:
Total cost array
"""
return df['energy_PJ'].values + lambda_cost * df['years'].values
def find_optimal_point(df: pd.DataFrame, lambda_cost: float) -> Dict:
"""
Find optimal point that minimizes J = E + λ × T
Args:
df: Trade-off curve data
lambda_cost: Time opportunity cost (PJ/year)
Returns:
Optimal point information
"""
total_cost = calculate_total_cost(df, lambda_cost)
opt_idx = np.argmin(total_cost)
return {
'index': opt_idx,
'years': df['years'].iloc[opt_idx],
'energy_PJ': df['energy_PJ'].iloc[opt_idx],
'total_cost': total_cost[opt_idx],
'elevator_fraction': df['elevator_fraction'].iloc[opt_idx],
'lambda': lambda_cost,
}
def calculate_marginal_energy_saving(df: pd.DataFrame) -> np.ndarray:
"""
Calculate marginal energy saving rate: -dE/dT (PJ/year)
This represents how much energy is saved per additional year of timeline.
"""
years = df['years'].values
energy = df['energy_PJ'].values
# Use central difference for interior points
marginal = -np.gradient(energy, years)
return marginal
def sensitivity_analysis(
df: pd.DataFrame,
lambda_range: np.ndarray
) -> pd.DataFrame:
"""
Perform sensitivity analysis on λ parameter
Args:
df: Trade-off curve data
lambda_range: Array of λ values to test
Returns:
DataFrame with optimal points for each λ
"""
results = []
for lam in lambda_range:
opt = find_optimal_point(df, lam)
results.append({
'lambda_PJ_per_year': lam,
'optimal_years': opt['years'],
'optimal_energy_PJ': opt['energy_PJ'],
'total_cost_PJ': opt['total_cost'],
'elevator_fraction': opt['elevator_fraction'],
})
return pd.DataFrame(results)
# ============== Visualization Functions ==============
def plot_lambda_analysis(
df: pd.DataFrame,
save_path: str = '/Volumes/Files/code/mm/20260130_b/p1/lambda_cost_analysis.png'
):
"""
Comprehensive visualization of λ time cost analysis
Focus on critical range λ = 400-600 PJ/year
"""
fig, axes = plt.subplots(2, 2, figsize=(14, 12))
years = df['years'].values
energy = df['energy_PJ'].values
# Key boundaries
T_min = years.min() # ~100.7 years (fastest)
T_elev = TOTAL_PAYLOAD / TOTAL_ELEVATOR_CAPACITY # ~186 years (elevator only)
E_min = energy[years >= T_elev].min() if any(years >= T_elev) else energy.min()
# ========== Plot 1: Trade-off Curve with λ Iso-cost Lines ==========
ax1 = axes[0, 0]
# Main curve
ax1.plot(years, energy, 'b-', linewidth=2.5, label='Energy-Time Trade-off')
# Mark key points
ax1.axvline(x=T_elev, color='green', linestyle='--', alpha=0.7, label=f'Elevator-only: {T_elev:.1f} years')
ax1.axvline(x=T_min, color='red', linestyle='--', alpha=0.7, label=f'Minimum time: {T_min:.1f} years')
# Draw iso-cost lines for different λ (focus on 400-600 range)
lambda_values = [420, 480, 500, 550]
colors = ['#2ecc71', '#e74c3c', '#9b59b6', '#3498db']
for lam, color in zip(lambda_values, colors):
opt = find_optimal_point(df, lam)
# Iso-cost line: E + λT = const → E = const - λT
T_line = np.linspace(80, 220, 100)
E_line = opt['total_cost'] - lam * T_line
valid = (E_line > 0) & (E_line < 70000)
ax1.plot(T_line[valid], E_line[valid], '--', color=color, alpha=0.6, linewidth=1.5)
ax1.plot(opt['years'], opt['energy_PJ'], 'o', color=color, markersize=12,
markeredgecolor='black', markeredgewidth=1.5,
label=f'λ={lam}: T={opt["years"]:.1f}y, E={opt["energy_PJ"]:.0f}PJ')
ax1.set_xlabel('Construction Timeline T (years)', fontsize=12)
ax1.set_ylabel('Total Energy E (PJ)', fontsize=12)
ax1.set_title('Energy-Time Trade-off with λ Iso-cost Lines (λ=400-600)\n$J = E + λT$', fontsize=13)
ax1.legend(loc='upper right', fontsize=9)
ax1.grid(True, alpha=0.3)
ax1.set_xlim(95, 200)
ax1.set_ylim(10000, 65000)
# ========== Plot 2: Marginal Energy Saving Rate ==========
ax2 = axes[0, 1]
marginal = calculate_marginal_energy_saving(df)
ax2.plot(years, marginal, 'r-', linewidth=2, label='Marginal Energy Saving -dE/dT')
ax2.axhline(y=0, color='black', linestyle='-', alpha=0.3)
# Mark critical λ values in 400-600 range
for lam, color in zip([450, 480, 500, 550], ['#2ecc71', '#e74c3c', '#9b59b6', '#3498db']):
ax2.axhline(y=lam, color=color, linestyle='--', alpha=0.7, label=f'λ = {lam} PJ/year')
# Find intersection
intersect_idx = np.argmin(np.abs(marginal - lam))
ax2.plot(years[intersect_idx], marginal[intersect_idx], 'o', color=color, markersize=8)
ax2.set_xlabel('Construction Timeline T (years)', fontsize=12)
ax2.set_ylabel('Marginal Energy Saving -dE/dT (PJ/year)', fontsize=12)
ax2.set_title('Marginal Analysis: Optimal Condition is -dE/dT = λ', fontsize=13)
ax2.legend(loc='upper right', fontsize=9)
ax2.grid(True, alpha=0.3)
ax2.set_xlim(95, 200)
ax2.set_ylim(350, 620)
# ========== Plot 3: Sensitivity Analysis (400-600 range) ==========
ax3 = axes[1, 0]
lambda_range = np.linspace(400, 600, 200)
sensitivity_df = sensitivity_analysis(df, lambda_range)
# Plot optimal years vs λ
ax3.plot(sensitivity_df['lambda_PJ_per_year'], sensitivity_df['optimal_years'],
'b-', linewidth=2.5, label='Optimal Timeline T*')
# Mark key regions
ax3.axhline(y=T_elev, color='green', linestyle='--', alpha=0.7, label=f'Elevator-only: {T_elev:.1f}y')
ax3.axhline(y=T_min, color='red', linestyle='--', alpha=0.7, label=f'Min timeline: {T_min:.1f}y')
ax3.axhline(y=139, color='orange', linestyle=':', linewidth=2, alpha=0.8, label='Original knee: 139y')
# Find λ corresponding to 139 years
idx_139 = np.argmin(np.abs(sensitivity_df['optimal_years'] - 139))
if idx_139 < len(sensitivity_df):
lambda_139 = sensitivity_df['lambda_PJ_per_year'].iloc[idx_139]
ax3.axvline(x=lambda_139, color='orange', linestyle=':', linewidth=2, alpha=0.6)
ax3.scatter([lambda_139], [139], s=150, c='orange', marker='*', zorder=5,
edgecolors='black', linewidths=1.5, label=f'λ≈{lambda_139:.0f} for T*=139y')
# Mark critical transition
ax3.axvline(x=480, color='purple', linestyle='--', alpha=0.5)
ax3.text(482, 175, 'Critical\nTransition', fontsize=9, color='purple')
ax3.set_xlabel('Time Opportunity Cost λ (PJ/year)', fontsize=12)
ax3.set_ylabel('Optimal Timeline T* (years)', fontsize=12)
ax3.set_title('Sensitivity Analysis: Optimal Timeline vs λ (400-600 range)', fontsize=13)
ax3.legend(loc='upper right', fontsize=9)
ax3.grid(True, alpha=0.3)
ax3.set_xlim(400, 600)
ax3.set_ylim(95, 195)
# ========== Plot 4: Total Cost Curves (400-600 range) ==========
ax4 = axes[1, 1]
for lam, color in [(450, '#2ecc71'), (480, '#e74c3c'), (500, '#9b59b6'), (550, '#3498db')]:
total_cost = calculate_total_cost(df, lam)
ax4.plot(years, total_cost / 1000, color=color, linestyle='-',
linewidth=2, label=f'λ={lam} PJ/year')
# Mark minimum
opt = find_optimal_point(df, lam)
ax4.plot(opt['years'], opt['total_cost'] / 1000, 'o', color=color, markersize=10,
markeredgecolor='black', markeredgewidth=1.5)
ax4.set_xlabel('Construction Timeline T (years)', fontsize=12)
ax4.set_ylabel('Total Cost J = E + λT (×10³ PJ)', fontsize=12)
ax4.set_title('Total Cost Function for λ = 400-600 PJ/year', fontsize=13)
ax4.legend(loc='upper right', fontsize=10)
ax4.grid(True, alpha=0.3)
ax4.set_xlim(95, 200)
plt.tight_layout()
plt.savefig(save_path, dpi=150, bbox_inches='tight')
print(f"Lambda analysis plot saved to: {save_path}")
return fig
def plot_decision_recommendation(
df: pd.DataFrame,
save_path: str = '/Volumes/Files/code/mm/20260130_b/p1/lambda_decision_map.png'
):
"""
Decision map showing optimal choice based on λ preference
"""
fig, ax = plt.subplots(figsize=(12, 8))
years = df['years'].values
energy = df['energy_PJ'].values
# Main trade-off curve
ax.plot(years, energy, 'b-', linewidth=3, label='Feasible Trade-off Curve')
# Key boundaries
T_elev = TOTAL_PAYLOAD / TOTAL_ELEVATOR_CAPACITY
T_min = years.min()
# Shade decision regions
# Region 1: Low λ (cost priority) → longer timeline
ax.axvspan(160, 190, alpha=0.2, color='green', label='Low λ (<150): Cost Priority')
# Region 2: Medium λ (balanced) → middle ground
ax.axvspan(130, 160, alpha=0.2, color='yellow', label='Medium λ (150-250): Balanced')
# Region 3: High λ (time priority) → shorter timeline
ax.axvspan(100, 130, alpha=0.2, color='red', label='High λ (>250): Time Priority')
# Mark specific strategy points
strategies = [
{'name': 'A: Cost-Prioritized', 'years': 186, 'lambda': 0, 'color': 'green'},
{'name': 'C: Balanced (λ≈200)', 'years': 139, 'lambda': 200, 'color': 'orange'},
{'name': 'B: Time-Prioritized', 'years': 101, 'lambda': 500, 'color': 'red'},
]
for s in strategies:
idx = np.argmin(np.abs(years - s['years']))
ax.plot(years[idx], energy[idx], 'o', color=s['color'], markersize=15,
markeredgecolor='black', markeredgewidth=2)
ax.annotate(s['name'], (years[idx], energy[idx]),
textcoords="offset points", xytext=(10, 10), fontsize=11,
fontweight='bold', color=s['color'])
# Add decision guidance text
textstr = '\n'.join([
'Decision Guidance:',
'─────────────────',
'λ < 150 PJ/year → Strategy A',
' (Long-term cost efficiency)',
'',
'150 ≤ λ ≤ 250 → Strategy C',
' (Balanced trade-off)',
'',
'λ > 250 PJ/year → Strategy B',
' (Time-critical mission)',
])
props = dict(boxstyle='round', facecolor='wheat', alpha=0.8)
ax.text(0.02, 0.98, textstr, transform=ax.transAxes, fontsize=10,
verticalalignment='top', bbox=props, family='monospace')
ax.set_xlabel('Construction Timeline T (years)', fontsize=13)
ax.set_ylabel('Total Energy E (PJ)', fontsize=13)
ax.set_title('Decision Map: Optimal Strategy Selection Based on Time Opportunity Cost λ', fontsize=14)
ax.legend(loc='upper right', fontsize=10)
ax.grid(True, alpha=0.3)
ax.set_xlim(95, 200)
ax.set_ylim(10000, 65000)
plt.tight_layout()
plt.savefig(save_path, dpi=150, bbox_inches='tight')
print(f"Decision map saved to: {save_path}")
return fig
# ============== Critical Point Analysis ==============
def analyze_curve_structure(df: pd.DataFrame) -> Dict:
"""
Analyze the structure of the trade-off curve to understand
why certain λ values lead to specific optimal points.
"""
years = df['years'].values
energy = df['energy_PJ'].values
# Calculate marginal rates
marginal = -np.gradient(energy, years)
# Find the elevator-only boundary
T_elev = TOTAL_PAYLOAD / TOTAL_ELEVATOR_CAPACITY
idx_elev = np.argmin(np.abs(years - T_elev))
# Analyze marginal rate distribution
# Region 1: T > T_elev (pure elevator, marginal ≈ 0)
# Region 2: T < T_elev (need rockets, marginal > 0)
# Find critical points where marginal rate changes significantly
marginal_near_elev = marginal[idx_elev - 5:idx_elev + 5]
marginal_at_139 = marginal[np.argmin(np.abs(years - 139))]
marginal_at_101 = marginal[np.argmin(np.abs(years - 101))]
return {
'T_elev': T_elev,
'idx_elev': idx_elev,
'marginal_at_elev': marginal[idx_elev],
'marginal_at_139': marginal_at_139,
'marginal_at_101': marginal_at_101,
'energy_at_elev': energy[idx_elev],
'energy_at_139': energy[np.argmin(np.abs(years - 139))],
'energy_at_101': energy[np.argmin(np.abs(years - 101))],
}
def find_critical_lambda(df: pd.DataFrame) -> Dict:
"""
Find the critical λ values where optimal point transitions occur.
"""
years = df['years'].values
energy = df['energy_PJ'].values
# Dense lambda scan
lambda_range = np.linspace(1, 1000, 2000)
transitions = []
prev_years = None
for lam in lambda_range:
opt = find_optimal_point(df, lam)
if prev_years is not None and abs(opt['years'] - prev_years) > 5:
transitions.append({
'lambda': lam,
'from_years': prev_years,
'to_years': opt['years'],
})
prev_years = opt['years']
return transitions
def plot_comprehensive_analysis(
df: pd.DataFrame,
save_path: str = '/Volumes/Files/code/mm/20260130_b/p1/lambda_comprehensive.png'
):
"""
Comprehensive plot showing:
1. Trade-off curve with marginal rates
2. Critical λ transitions
3. Decision regions
"""
fig = plt.figure(figsize=(16, 14))
years = df['years'].values
energy = df['energy_PJ'].values
marginal = calculate_marginal_energy_saving(df)
T_elev = TOTAL_PAYLOAD / TOTAL_ELEVATOR_CAPACITY
T_min = years.min()
# ========== Plot 1: Trade-off curve with annotations ==========
ax1 = fig.add_subplot(2, 2, 1)
ax1.plot(years, energy / 1000, 'b-', linewidth=2.5, label='Trade-off Curve')
# Mark key points
key_points = [
(T_min, 'Minimum Time\n(~101 years)', 'red'),
(139, 'Original Knee\n(139 years)', 'orange'),
(T_elev, 'Elevator-Only\n(~186 years)', 'green'),
]
for t, label, color in key_points:
idx = np.argmin(np.abs(years - t))
ax1.plot(years[idx], energy[idx] / 1000, 'o', color=color, markersize=12,
markeredgecolor='black', markeredgewidth=2, zorder=5)
ax1.annotate(label, (years[idx], energy[idx] / 1000),
textcoords="offset points", xytext=(10, 10), fontsize=10,
color=color, fontweight='bold')
ax1.set_xlabel('Construction Timeline T (years)', fontsize=12)
ax1.set_ylabel('Total Energy E (×10³ PJ)', fontsize=12)
ax1.set_title('Energy-Time Trade-off Curve', fontsize=14)
ax1.grid(True, alpha=0.3)
ax1.set_xlim(95, 200)
ax1.legend(loc='upper right')
# ========== Plot 2: Marginal Rate Analysis ==========
ax2 = fig.add_subplot(2, 2, 2)
ax2.plot(years, marginal, 'r-', linewidth=2, label='Marginal Saving Rate')
ax2.fill_between(years, 0, marginal, alpha=0.3, color='red')
# Mark critical thresholds
ax2.axhline(y=480, color='purple', linestyle='--', linewidth=2,
label='Critical λ ≈ 480 PJ/year')
ax2.axvline(x=T_elev, color='green', linestyle=':', alpha=0.7)
# Annotate the jump at elevator boundary
ax2.annotate('Marginal rate jumps\nat elevator capacity limit',
xy=(T_elev, marginal[np.argmin(np.abs(years - T_elev))]),
xytext=(150, 400), fontsize=10,
arrowprops=dict(arrowstyle='->', color='black'))
ax2.set_xlabel('Construction Timeline T (years)', fontsize=12)
ax2.set_ylabel('Marginal Energy Saving -dE/dT (PJ/year)', fontsize=12)
ax2.set_title('Marginal Analysis: Why 186 years is optimal for most λ', fontsize=14)
ax2.grid(True, alpha=0.3)
ax2.set_xlim(95, 200)
ax2.set_ylim(-50, 600)
ax2.legend(loc='upper right')
# ========== Plot 3: λ Sensitivity with Phase Transitions (400-600 focus) ==========
ax3 = fig.add_subplot(2, 2, 3)
lambda_range = np.linspace(400, 600, 200)
opt_years = []
for lam in lambda_range:
opt = find_optimal_point(df, lam)
opt_years.append(opt['years'])
ax3.plot(lambda_range, opt_years, 'b-', linewidth=2.5)
# Shade phases
ax3.axhspan(180, 190, alpha=0.3, color='green', label='Phase 1: Elevator-Only (λ < 480)')
ax3.axhspan(100, 145, alpha=0.3, color='red', label='Phase 2: Hybrid (λ > 480)')
# Mark critical λ
ax3.axvline(x=480, color='purple', linestyle='--', linewidth=2)
ax3.annotate('Critical Transition\nλ ≈ 480 PJ/year',
xy=(480, 160), fontsize=11, color='purple', fontweight='bold',
ha='center')
# Mark 139 year point
ax3.axhline(y=139, color='orange', linestyle=':', linewidth=2, alpha=0.8)
ax3.scatter([500], [139], s=200, c='orange', marker='*', zorder=5,
edgecolors='black', linewidths=2, label='T*=139y at λ≈500')
ax3.set_xlabel('Time Opportunity Cost λ (PJ/year)', fontsize=12)
ax3.set_ylabel('Optimal Timeline T* (years)', fontsize=12)
ax3.set_title('Phase Transition in Optimal Strategy (λ=400-600)', fontsize=14)
ax3.grid(True, alpha=0.3)
ax3.set_xlim(400, 600)
ax3.set_ylim(95, 195)
ax3.legend(loc='upper right')
# ========== Plot 4: Decision Summary Table ==========
ax4 = fig.add_subplot(2, 2, 4)
ax4.axis('off')
# Create summary table
summary_text = """
┌─────────────────────────────────────────────────────────────────┐
│ KEY FINDINGS FROM λ COST ANALYSIS │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 1. CURVE STRUCTURE │
│ • Sharp discontinuity at T = 186 years (elevator capacity) │
│ • Marginal rate jumps from ~0 to ~480 PJ/year at boundary │
│ │
│ 2. OPTIMAL POINT SELECTION │
│ • λ < 480 PJ/year → T* = 186 years (elevator-only) │
│ • λ ≈ 500 PJ/year → T* = 139 years (original knee) │
│ • λ > 600 PJ/year → T* → 101 years (time-priority) │
│ │
│ 3. IMPLICATIONS FOR THE 139-YEAR KNEE POINT │
│ • Requires implicit assumption: λ ≈ 500 PJ/year │
│ • This means: 1 year delay costs ~500 PJ opportunity cost │
│ • Equivalent to: ~0.5% of total elevator energy per year │
│ │
│ 4. RECOMMENDATION │
│ • Either justify λ ≈ 500 PJ/year with physical reasoning │
│ • Or acknowledge 186 years as cost-optimal baseline │
│ • Present 139 years as a time-constrained scenario │
│ │
└─────────────────────────────────────────────────────────────────┘
"""
ax4.text(0.05, 0.95, summary_text, transform=ax4.transAxes,
fontsize=11, verticalalignment='top', family='monospace',
bbox=dict(boxstyle='round', facecolor='lightyellow', alpha=0.8))
plt.tight_layout()
plt.savefig(save_path, dpi=150, bbox_inches='tight')
print(f"Comprehensive analysis saved to: {save_path}")
return fig
# ============== Main Analysis ==============
def main():
print("=" * 70)
print("Lambda Time Cost Analysis for Moon Colony Logistics")
print("=" * 70)
# Generate trade-off curve
print("\n[1] Generating Energy-Time trade-off curve...")
df = generate_tradeoff_curve(year_min=100, year_max=220, num_points=500)
print(f" Generated {len(df)} data points")
# Key statistics
T_min = df['years'].min()
T_max = df['years'].max()
E_min = df['energy_PJ'].min()
E_max = df['energy_PJ'].max()
T_elev = TOTAL_PAYLOAD / TOTAL_ELEVATOR_CAPACITY
print(f"\n[2] Trade-off Curve Statistics:")
print(f" Timeline range: {T_min:.1f} - {T_max:.1f} years")
print(f" Energy range: {E_min:.0f} - {E_max:.0f} PJ")
print(f" Elevator-only timeline: {T_elev:.1f} years")
# Curve structure analysis
print("\n[3] Curve Structure Analysis:")
structure = analyze_curve_structure(df)
print(f" At elevator boundary (T={structure['T_elev']:.1f}y):")
print(f" - Energy: {structure['energy_at_elev']:.0f} PJ")
print(f" - Marginal rate: {structure['marginal_at_elev']:.1f} PJ/year")
print(f" At T=139 years:")
print(f" - Energy: {structure['energy_at_139']:.0f} PJ")
print(f" - Marginal rate: {structure['marginal_at_139']:.1f} PJ/year")
print(f" At T=101 years:")
print(f" - Energy: {structure['energy_at_101']:.0f} PJ")
print(f" - Marginal rate: {structure['marginal_at_101']:.1f} PJ/year")
# Find critical transitions
print("\n[4] Critical λ Transitions:")
transitions = find_critical_lambda(df)
for t in transitions:
print(f" λ ≈ {t['lambda']:.0f} PJ/year: T* jumps from {t['from_years']:.0f}y to {t['to_years']:.0f}y")
# Sensitivity analysis
print("\n[5] Sensitivity Analysis Results:")
print(" " + "-" * 55)
print(f" {'λ (PJ/year)':<15} {'Optimal T (years)':<20} {'Energy (PJ)':<15}")
print(" " + "-" * 55)
test_lambdas = [100, 200, 300, 400, 450, 480, 500, 550, 600]
sensitivity_results = []
for lam in test_lambdas:
opt = find_optimal_point(df, lam)
print(f" {lam:<15.0f} {opt['years']:<20.1f} {opt['energy_PJ']:<15.0f}")
sensitivity_results.append(opt)
# Find λ that gives 139 years
print("\n[6] Original Knee Point Analysis (139 years):")
lambda_for_139 = None
for lam in np.linspace(400, 600, 1000):
opt = find_optimal_point(df, lam)
if abs(opt['years'] - 139) < 1:
lambda_for_139 = lam
print(f" λ ≈ {lam:.0f} PJ/year corresponds to T* ≈ 139 years")
break
if lambda_for_139:
print(f"\n INTERPRETATION:")
print(f" To justify 139-year knee point, one must argue that:")
print(f" • Each year of delay costs ~{lambda_for_139:.0f} PJ in opportunity")
print(f" • This is {lambda_for_139/E_min*100:.1f}% of minimum total energy per year")
print(f" • Over 47 years (139→186), this amounts to {lambda_for_139*47:.0f} PJ")
# Generate plots
print("\n[7] Generating visualization plots...")
plot_lambda_analysis(df)
plot_decision_recommendation(df)
plot_comprehensive_analysis(df)
# Save sensitivity data
sensitivity_df = sensitivity_analysis(df, np.linspace(50, 600, 120))
sensitivity_df.to_csv('/Volumes/Files/code/mm/20260130_b/p1/lambda_sensitivity.csv', index=False)
print(" Data saved to: lambda_sensitivity.csv")
# Paper modification recommendations
print("\n" + "=" * 70)
print("RECOMMENDATIONS FOR PAPER MODIFICATION")
print("=" * 70)
print("""
1. REFRAME THE OPTIMIZATION PROBLEM
Current: "Multi-objective Pareto optimization"
Suggested: "Constrained optimization with time-cost trade-off"
2. INTRODUCE λ AS DECISION PARAMETER
Add equation: J = E_total + λ × T
where λ represents "time opportunity cost" (PJ/year)
3. JUSTIFY THE KNEE POINT SELECTION
Option A: Argue λ ≈ 480-500 PJ/year is reasonable because:
- Delayed lunar resource extraction
- Extended Earth-side operational costs
- Strategic/geopolitical value of early completion
Option B: Present multiple scenarios:
- "Cost-optimal" (λ < 480): T* = 186 years
- "Balanced" (λ ≈ 500): T* = 139 years
- "Time-critical" (λ > 600): T* → 101 years
4. ADD SENSITIVITY ANALYSIS FIGURE
Show how optimal T* changes with λ (Figure generated)
5. ACKNOWLEDGE THE DISCONTINUITY
Note that the trade-off curve has a sharp transition at
T = 186 years due to elevator capacity constraints
""")
print("=" * 70)
print("Analysis Complete!")
print("=" * 70)
return df, sensitivity_results
if __name__ == "__main__":
df, results = main()

BIN
p1/lambda_decision_map.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

121
p1/lambda_sensitivity.csv Normal file
View File

@@ -0,0 +1,121 @@
lambda_PJ_per_year,optimal_years,optimal_energy_PJ,total_cost_PJ,elevator_fraction
50.0,186.3326653306613,15720.0,25036.633266533066,1.0
54.621848739495796,186.3326653306613,15720.0,25897.834660918474,1.0
59.24369747899159,186.3326653306613,15720.0,26759.036055303884,1.0
63.865546218487395,186.3326653306613,15720.0,27620.237449689295,1.0
68.48739495798318,186.3326653306613,15720.0,28481.438844074703,1.0
73.10924369747899,186.3326653306613,15720.0,29342.64023846011,1.0
77.73109243697479,186.3326653306613,15720.0,30203.84163284552,1.0
82.35294117647058,186.3326653306613,15720.0,31065.04302723093,1.0
86.97478991596638,186.3326653306613,15720.0,31926.244421616342,1.0
91.59663865546219,186.3326653306613,15720.0,32787.44581600175,1.0
96.21848739495798,186.3326653306613,15720.0,33648.647210387164,1.0
100.84033613445378,186.3326653306613,15720.0,34509.84860477257,1.0
105.46218487394958,186.3326653306613,15720.0,35371.04999915798,1.0
110.08403361344537,186.3326653306613,15720.0,36232.25139354338,1.0
114.70588235294117,186.3326653306613,15720.0,37093.45278792879,1.0
119.32773109243696,186.3326653306613,15720.0,37954.6541823142,1.0
123.94957983193277,186.3326653306613,15720.0,38815.855576699614,1.0
128.57142857142856,186.3326653306613,15720.0,39677.056971085025,1.0
133.19327731092437,186.3326653306613,15720.0,40538.258365470436,1.0
137.81512605042016,186.3326653306613,15720.0,41399.45975985585,1.0
142.43697478991595,186.3326653306613,15720.0,42260.66115424125,1.0
147.05882352941177,186.3326653306613,15720.0,43121.86254862667,1.0
151.68067226890756,186.3326653306613,15720.0,43983.06394301207,1.0
156.30252100840335,186.3326653306613,15720.0,44844.265337397475,1.0
160.92436974789916,186.3326653306613,15720.0,45705.46673178289,1.0
165.54621848739495,186.3326653306613,15720.0,46566.6681261683,1.0
170.16806722689074,186.3326653306613,15720.0,47427.86952055371,1.0
174.78991596638656,186.3326653306613,15720.0,48289.07091493912,1.0
179.41176470588235,186.3326653306613,15720.0,49150.27230932453,1.0
184.03361344537814,186.3326653306613,15720.0,50011.47370370993,1.0
188.65546218487393,186.3326653306613,15720.0,50872.675098095344,1.0
193.27731092436974,186.3326653306613,15720.0,51733.876492480755,1.0
197.89915966386553,186.3326653306613,15720.0,52595.077886866165,1.0
202.52100840336132,186.3326653306613,15720.0,53456.279281251576,1.0
207.14285714285714,186.3326653306613,15720.0,54317.48067563699,1.0
211.76470588235293,186.3326653306613,15720.0,55178.68207002239,1.0
216.38655462184872,186.3326653306613,15720.0,56039.8834644078,1.0
221.00840336134453,186.3326653306613,15720.0,56901.08485879321,1.0
225.63025210084032,186.3326653306613,15720.0,57762.28625317862,1.0
230.2521008403361,186.3326653306613,15720.0,58623.48764756403,1.0
234.8739495798319,186.3326653306613,15720.0,59484.68904194944,1.0
239.49579831932772,186.3326653306613,15720.0,60345.89043633485,1.0
244.1176470588235,186.3326653306613,15720.0,61207.09183072026,1.0
248.7394957983193,186.3326653306613,15720.0,62068.29322510566,1.0
253.3613445378151,186.3326653306613,15720.0,62929.49461949108,1.0
257.9831932773109,186.0921843687375,15781.32247955465,63789.97844695162,0.9993150300601203
262.6050420168067,186.0921843687375,15781.32247955465,64650.068374706294,0.9993150300601203
267.2268907563025,186.0921843687375,15781.32247955465,65510.158302460964,0.9993150300601203
271.8487394957983,186.0921843687375,15781.32247955465,66370.24823021564,0.9993150300601203
276.4705882352941,186.0921843687375,15781.32247955465,67230.33815797031,0.9993150300601203
281.0924369747899,186.0921843687375,15781.32247955465,68090.42808572498,0.9993150300601203
285.71428571428567,186.0921843687375,15781.32247955465,68950.51801347964,0.9993150300601203
290.3361344537815,186.0921843687375,15781.32247955465,69810.60794123431,0.9993150300601203
294.9579831932773,186.0921843687375,15781.32247955465,70670.69786898898,0.9993150300601203
299.5798319327731,186.0921843687375,15781.32247955465,71530.78779674367,0.9993150300601203
304.2016806722689,186.0921843687375,15781.32247955465,72390.87772449832,0.9993150300601203
308.8235294117647,186.0921843687375,15781.32247955465,73250.96765225299,0.9993150300601203
313.44537815126046,186.0921843687375,15781.32247955465,74111.05758000766,0.9993150300601203
318.0672268907563,186.0921843687375,15781.32247955465,74971.14750776233,0.9993150300601203
322.6890756302521,186.0921843687375,15781.32247955465,75831.237435517,0.9993150300601203
327.31092436974785,186.0921843687375,15781.32247955465,76691.32736327166,0.9993150300601203
331.93277310924367,186.0921843687375,15781.32247955465,77551.41729102633,0.9993150300601203
336.5546218487395,186.0921843687375,15781.32247955465,78411.50721878101,0.9993150300601203
341.17647058823525,186.0921843687375,15781.32247955465,79271.59714653567,0.9993150300601203
345.79831932773106,186.0921843687375,15781.32247955465,80131.68707429034,0.9993150300601203
350.4201680672269,186.0921843687375,15781.32247955465,80991.77700204501,0.9993150300601203
355.04201680672264,186.0921843687375,15781.32247955465,81851.86692979968,0.9993150300601203
359.66386554621846,186.0921843687375,15781.32247955465,82711.95685755435,0.9993150300601203
364.2857142857143,186.0921843687375,15781.32247955465,83572.04678530902,0.9993150300601203
368.90756302521004,186.0921843687375,15781.32247955465,84432.1367130637,0.9993150300601203
373.52941176470586,186.0921843687375,15781.32247955465,85292.22664081836,0.9993150300601203
378.1512605042017,186.0921843687375,15781.32247955465,86152.31656857303,0.9993150300601203
382.77310924369743,186.0921843687375,15781.32247955465,87012.40649632769,0.9993150300601203
387.39495798319325,186.0921843687375,15781.32247955465,87872.49642408236,0.9993150300601203
392.01680672268907,186.0921843687375,15781.32247955465,88732.58635183705,0.9993150300601203
396.63865546218483,186.0921843687375,15781.32247955465,89592.6762795917,0.9993150300601203
401.26050420168065,186.0921843687375,15781.32247955465,90452.76620734637,0.9993150300601203
405.88235294117646,186.0921843687375,15781.32247955465,91312.85613510104,0.9993150300601203
410.5042016806722,186.0921843687375,15781.32247955465,92172.94606285571,0.9993150300601203
415.12605042016804,186.0921843687375,15781.32247955465,93033.03599061038,0.9993150300601203
419.7478991596638,186.0921843687375,15781.32247955465,93893.12591836504,0.9993150300601203
424.3697478991596,186.0921843687375,15781.32247955465,94753.21584611971,0.9993150300601203
428.99159663865544,186.0921843687375,15781.32247955465,95613.3057738744,0.9993150300601203
433.6134453781512,186.0921843687375,15781.32247955465,96473.39570162905,0.9993150300601203
438.235294117647,186.0921843687375,15781.32247955465,97333.48562938372,0.9993150300601203
442.85714285714283,186.0921843687375,15781.32247955465,98193.57555713839,0.9993150300601203
447.4789915966386,186.0921843687375,15781.32247955465,99053.66548489306,0.9993150300601203
452.1008403361344,186.0921843687375,15781.32247955465,99913.75541264773,0.9993150300601203
456.7226890756302,186.0921843687375,15781.32247955465,100773.8453404024,0.9993150300601203
461.344537815126,186.0921843687375,15781.32247955465,101633.93526815706,0.9993150300601203
465.9663865546218,186.0921843687375,15781.32247955465,102494.02519591174,0.9993150300601203
470.5882352941176,186.0921843687375,15781.32247955465,103354.11512366642,0.9993150300601203
475.2100840336134,186.0921843687375,15781.32247955465,104214.20505142107,0.9993150300601203
479.8319327731092,186.0921843687375,15781.32247955465,105074.29497917574,0.9993150300601203
484.453781512605,159.15831663326654,28765.20501961573,105870.05337178224,0.8546801603206412
489.0756302521008,159.15831663326654,28765.20501961573,106605.65903689398,0.8546801603206412
493.6974789915966,148.33667334669337,34100.021848549404,107333.46352181188,0.7965679358717435
498.3193277310924,138.95791583166334,38749.67677118048,107995.09197132869,0.7462040080160321
502.9411764705882,138.95791583166334,38749.67677118048,108637.33443945821,0.7462040080160321
507.563025210084,130.54108216432866,42994.615930671775,109252.44250819656,0.7010056112224449
512.1848739495798,115.87174348697394,50481.660342457144,109829.41467465094,0.62223126252505
516.8067226890755,110.82164328657315,53069.25828508744,110342.62855503909,0.5951122244488979
521.4285714285713,110.82164328657315,53069.25828508744,110854.829427372,0.5951122244488979
526.0504201680671,110.82164328657315,53069.25828508744,111367.0302997049,0.5951122244488979
530.672268907563,105.53106212424849,55854.79973902723,111857.20791672716,0.5667018036072143
535.2941176470588,105.53106212424849,55854.79973902723,112344.95652318376,0.5667018036072143
539.9159663865546,105.53106212424849,55854.79973902723,112832.70512964038,0.5667018036072143
544.5378151260504,105.53106212424849,55854.79973902723,113320.453736097,0.5667018036072143
549.1596638655462,105.53106212424849,55854.79973902723,113808.20234255362,0.5667018036072143
553.781512605042,105.53106212424849,55854.79973902723,114295.95094901022,0.5667018036072143
558.4033613445378,105.53106212424849,55854.79973902723,114783.69955546682,0.5667018036072143
563.0252100840336,100.72144288577154,58547.47792525526,115256.18946598377,0.5408741482965931
567.6470588235294,100.72144288577154,58547.47792525526,115721.70873982558,0.5408741482965931
572.2689075630252,100.72144288577154,58547.47792525526,116187.22801366738,0.5408741482965931
576.8907563025209,100.72144288577154,58547.47792525526,116652.74728750918,0.5408741482965931
581.5126050420167,100.72144288577154,58547.47792525526,117118.26656135097,0.5408741482965931
586.1344537815125,100.72144288577154,58547.47792525526,117583.78583519277,0.5408741482965931
590.7563025210084,100.72144288577154,58547.47792525526,118049.30510903458,0.5408741482965931
595.3781512605042,100.72144288577154,58547.47792525526,118514.82438287638,0.5408741482965931
600.0,100.72144288577154,58547.47792525526,118980.34365671818,0.5408741482965931
1 lambda_PJ_per_year optimal_years optimal_energy_PJ total_cost_PJ elevator_fraction
2 50.0 186.3326653306613 15720.0 25036.633266533066 1.0
3 54.621848739495796 186.3326653306613 15720.0 25897.834660918474 1.0
4 59.24369747899159 186.3326653306613 15720.0 26759.036055303884 1.0
5 63.865546218487395 186.3326653306613 15720.0 27620.237449689295 1.0
6 68.48739495798318 186.3326653306613 15720.0 28481.438844074703 1.0
7 73.10924369747899 186.3326653306613 15720.0 29342.64023846011 1.0
8 77.73109243697479 186.3326653306613 15720.0 30203.84163284552 1.0
9 82.35294117647058 186.3326653306613 15720.0 31065.04302723093 1.0
10 86.97478991596638 186.3326653306613 15720.0 31926.244421616342 1.0
11 91.59663865546219 186.3326653306613 15720.0 32787.44581600175 1.0
12 96.21848739495798 186.3326653306613 15720.0 33648.647210387164 1.0
13 100.84033613445378 186.3326653306613 15720.0 34509.84860477257 1.0
14 105.46218487394958 186.3326653306613 15720.0 35371.04999915798 1.0
15 110.08403361344537 186.3326653306613 15720.0 36232.25139354338 1.0
16 114.70588235294117 186.3326653306613 15720.0 37093.45278792879 1.0
17 119.32773109243696 186.3326653306613 15720.0 37954.6541823142 1.0
18 123.94957983193277 186.3326653306613 15720.0 38815.855576699614 1.0
19 128.57142857142856 186.3326653306613 15720.0 39677.056971085025 1.0
20 133.19327731092437 186.3326653306613 15720.0 40538.258365470436 1.0
21 137.81512605042016 186.3326653306613 15720.0 41399.45975985585 1.0
22 142.43697478991595 186.3326653306613 15720.0 42260.66115424125 1.0
23 147.05882352941177 186.3326653306613 15720.0 43121.86254862667 1.0
24 151.68067226890756 186.3326653306613 15720.0 43983.06394301207 1.0
25 156.30252100840335 186.3326653306613 15720.0 44844.265337397475 1.0
26 160.92436974789916 186.3326653306613 15720.0 45705.46673178289 1.0
27 165.54621848739495 186.3326653306613 15720.0 46566.6681261683 1.0
28 170.16806722689074 186.3326653306613 15720.0 47427.86952055371 1.0
29 174.78991596638656 186.3326653306613 15720.0 48289.07091493912 1.0
30 179.41176470588235 186.3326653306613 15720.0 49150.27230932453 1.0
31 184.03361344537814 186.3326653306613 15720.0 50011.47370370993 1.0
32 188.65546218487393 186.3326653306613 15720.0 50872.675098095344 1.0
33 193.27731092436974 186.3326653306613 15720.0 51733.876492480755 1.0
34 197.89915966386553 186.3326653306613 15720.0 52595.077886866165 1.0
35 202.52100840336132 186.3326653306613 15720.0 53456.279281251576 1.0
36 207.14285714285714 186.3326653306613 15720.0 54317.48067563699 1.0
37 211.76470588235293 186.3326653306613 15720.0 55178.68207002239 1.0
38 216.38655462184872 186.3326653306613 15720.0 56039.8834644078 1.0
39 221.00840336134453 186.3326653306613 15720.0 56901.08485879321 1.0
40 225.63025210084032 186.3326653306613 15720.0 57762.28625317862 1.0
41 230.2521008403361 186.3326653306613 15720.0 58623.48764756403 1.0
42 234.8739495798319 186.3326653306613 15720.0 59484.68904194944 1.0
43 239.49579831932772 186.3326653306613 15720.0 60345.89043633485 1.0
44 244.1176470588235 186.3326653306613 15720.0 61207.09183072026 1.0
45 248.7394957983193 186.3326653306613 15720.0 62068.29322510566 1.0
46 253.3613445378151 186.3326653306613 15720.0 62929.49461949108 1.0
47 257.9831932773109 186.0921843687375 15781.32247955465 63789.97844695162 0.9993150300601203
48 262.6050420168067 186.0921843687375 15781.32247955465 64650.068374706294 0.9993150300601203
49 267.2268907563025 186.0921843687375 15781.32247955465 65510.158302460964 0.9993150300601203
50 271.8487394957983 186.0921843687375 15781.32247955465 66370.24823021564 0.9993150300601203
51 276.4705882352941 186.0921843687375 15781.32247955465 67230.33815797031 0.9993150300601203
52 281.0924369747899 186.0921843687375 15781.32247955465 68090.42808572498 0.9993150300601203
53 285.71428571428567 186.0921843687375 15781.32247955465 68950.51801347964 0.9993150300601203
54 290.3361344537815 186.0921843687375 15781.32247955465 69810.60794123431 0.9993150300601203
55 294.9579831932773 186.0921843687375 15781.32247955465 70670.69786898898 0.9993150300601203
56 299.5798319327731 186.0921843687375 15781.32247955465 71530.78779674367 0.9993150300601203
57 304.2016806722689 186.0921843687375 15781.32247955465 72390.87772449832 0.9993150300601203
58 308.8235294117647 186.0921843687375 15781.32247955465 73250.96765225299 0.9993150300601203
59 313.44537815126046 186.0921843687375 15781.32247955465 74111.05758000766 0.9993150300601203
60 318.0672268907563 186.0921843687375 15781.32247955465 74971.14750776233 0.9993150300601203
61 322.6890756302521 186.0921843687375 15781.32247955465 75831.237435517 0.9993150300601203
62 327.31092436974785 186.0921843687375 15781.32247955465 76691.32736327166 0.9993150300601203
63 331.93277310924367 186.0921843687375 15781.32247955465 77551.41729102633 0.9993150300601203
64 336.5546218487395 186.0921843687375 15781.32247955465 78411.50721878101 0.9993150300601203
65 341.17647058823525 186.0921843687375 15781.32247955465 79271.59714653567 0.9993150300601203
66 345.79831932773106 186.0921843687375 15781.32247955465 80131.68707429034 0.9993150300601203
67 350.4201680672269 186.0921843687375 15781.32247955465 80991.77700204501 0.9993150300601203
68 355.04201680672264 186.0921843687375 15781.32247955465 81851.86692979968 0.9993150300601203
69 359.66386554621846 186.0921843687375 15781.32247955465 82711.95685755435 0.9993150300601203
70 364.2857142857143 186.0921843687375 15781.32247955465 83572.04678530902 0.9993150300601203
71 368.90756302521004 186.0921843687375 15781.32247955465 84432.1367130637 0.9993150300601203
72 373.52941176470586 186.0921843687375 15781.32247955465 85292.22664081836 0.9993150300601203
73 378.1512605042017 186.0921843687375 15781.32247955465 86152.31656857303 0.9993150300601203
74 382.77310924369743 186.0921843687375 15781.32247955465 87012.40649632769 0.9993150300601203
75 387.39495798319325 186.0921843687375 15781.32247955465 87872.49642408236 0.9993150300601203
76 392.01680672268907 186.0921843687375 15781.32247955465 88732.58635183705 0.9993150300601203
77 396.63865546218483 186.0921843687375 15781.32247955465 89592.6762795917 0.9993150300601203
78 401.26050420168065 186.0921843687375 15781.32247955465 90452.76620734637 0.9993150300601203
79 405.88235294117646 186.0921843687375 15781.32247955465 91312.85613510104 0.9993150300601203
80 410.5042016806722 186.0921843687375 15781.32247955465 92172.94606285571 0.9993150300601203
81 415.12605042016804 186.0921843687375 15781.32247955465 93033.03599061038 0.9993150300601203
82 419.7478991596638 186.0921843687375 15781.32247955465 93893.12591836504 0.9993150300601203
83 424.3697478991596 186.0921843687375 15781.32247955465 94753.21584611971 0.9993150300601203
84 428.99159663865544 186.0921843687375 15781.32247955465 95613.3057738744 0.9993150300601203
85 433.6134453781512 186.0921843687375 15781.32247955465 96473.39570162905 0.9993150300601203
86 438.235294117647 186.0921843687375 15781.32247955465 97333.48562938372 0.9993150300601203
87 442.85714285714283 186.0921843687375 15781.32247955465 98193.57555713839 0.9993150300601203
88 447.4789915966386 186.0921843687375 15781.32247955465 99053.66548489306 0.9993150300601203
89 452.1008403361344 186.0921843687375 15781.32247955465 99913.75541264773 0.9993150300601203
90 456.7226890756302 186.0921843687375 15781.32247955465 100773.8453404024 0.9993150300601203
91 461.344537815126 186.0921843687375 15781.32247955465 101633.93526815706 0.9993150300601203
92 465.9663865546218 186.0921843687375 15781.32247955465 102494.02519591174 0.9993150300601203
93 470.5882352941176 186.0921843687375 15781.32247955465 103354.11512366642 0.9993150300601203
94 475.2100840336134 186.0921843687375 15781.32247955465 104214.20505142107 0.9993150300601203
95 479.8319327731092 186.0921843687375 15781.32247955465 105074.29497917574 0.9993150300601203
96 484.453781512605 159.15831663326654 28765.20501961573 105870.05337178224 0.8546801603206412
97 489.0756302521008 159.15831663326654 28765.20501961573 106605.65903689398 0.8546801603206412
98 493.6974789915966 148.33667334669337 34100.021848549404 107333.46352181188 0.7965679358717435
99 498.3193277310924 138.95791583166334 38749.67677118048 107995.09197132869 0.7462040080160321
100 502.9411764705882 138.95791583166334 38749.67677118048 108637.33443945821 0.7462040080160321
101 507.563025210084 130.54108216432866 42994.615930671775 109252.44250819656 0.7010056112224449
102 512.1848739495798 115.87174348697394 50481.660342457144 109829.41467465094 0.62223126252505
103 516.8067226890755 110.82164328657315 53069.25828508744 110342.62855503909 0.5951122244488979
104 521.4285714285713 110.82164328657315 53069.25828508744 110854.829427372 0.5951122244488979
105 526.0504201680671 110.82164328657315 53069.25828508744 111367.0302997049 0.5951122244488979
106 530.672268907563 105.53106212424849 55854.79973902723 111857.20791672716 0.5667018036072143
107 535.2941176470588 105.53106212424849 55854.79973902723 112344.95652318376 0.5667018036072143
108 539.9159663865546 105.53106212424849 55854.79973902723 112832.70512964038 0.5667018036072143
109 544.5378151260504 105.53106212424849 55854.79973902723 113320.453736097 0.5667018036072143
110 549.1596638655462 105.53106212424849 55854.79973902723 113808.20234255362 0.5667018036072143
111 553.781512605042 105.53106212424849 55854.79973902723 114295.95094901022 0.5667018036072143
112 558.4033613445378 105.53106212424849 55854.79973902723 114783.69955546682 0.5667018036072143
113 563.0252100840336 100.72144288577154 58547.47792525526 115256.18946598377 0.5408741482965931
114 567.6470588235294 100.72144288577154 58547.47792525526 115721.70873982558 0.5408741482965931
115 572.2689075630252 100.72144288577154 58547.47792525526 116187.22801366738 0.5408741482965931
116 576.8907563025209 100.72144288577154 58547.47792525526 116652.74728750918 0.5408741482965931
117 581.5126050420167 100.72144288577154 58547.47792525526 117118.26656135097 0.5408741482965931
118 586.1344537815125 100.72144288577154 58547.47792525526 117583.78583519277 0.5408741482965931
119 590.7563025210084 100.72144288577154 58547.47792525526 118049.30510903458 0.5408741482965931
120 595.3781512605042 100.72144288577154 58547.47792525526 118514.82438287638 0.5408741482965931
121 600.0 100.72144288577154 58547.47792525526 118980.34365671818 0.5408741482965931

Binary file not shown.

Before

Width:  |  Height:  |  Size: 298 KiB

After

Width:  |  Height:  |  Size: 80 KiB

View File

@@ -1,301 +1,301 @@
years,energy_PJ,elevator_fraction,sites_used,rocket_launches years,energy_PJ,elevator_fraction,sites_used,rocket_launches
101.0,31679.76095710881,0.54237,10,366104 101.0,58391.44787772048,0.54237,10,366104
101.28501585047614,31620.609850415538,0.5439005351170569,10,364880 101.28501585047614,58231.93547882414,0.5439005351170569,10,364880
101.57003170095227,31561.45874372226,0.5454310702341137,10,363656 101.57003170095227,58072.423079927816,0.5454310702341137,10,363656
101.85504755142841,31502.241823054243,0.5469616053511706,10,362431 101.85504755142841,57912.767006200826,0.5469616053511706,10,362431
102.14006340190454,31443.090716360963,0.5484921404682274,10,361207 102.14006340190454,57753.254607304494,0.5484921404682274,10,361207
102.42507925238068,31383.87379569294,0.5500226755852843,10,359982 102.42507925238068,57593.598533577504,0.5500226755852843,10,359982
102.71009510285683,31324.722688999667,0.5515532107023411,10,358758 102.71009510285683,57434.086134681165,0.5515532107023411,10,358758
102.99511095333295,31265.571582306387,0.5530837458193979,10,357534 102.99511095333295,57274.573735784834,0.5530837458193979,10,357534
103.2801268038091,31206.354661638365,0.5546142809364548,10,356309 103.2801268038091,57114.91766205785,0.5546142809364548,10,356309
103.56514265428524,31147.203554945085,0.5561448160535117,10,355085 103.56514265428524,56955.40526316152,0.5561448160535117,10,355085
103.85015850476137,31087.98663427707,0.5576753511705685,10,353860 103.85015850476137,56795.74918943452,0.5576753511705685,10,353860
104.13517435523751,31028.835527583797,0.5592058862876255,10,352636 104.13517435523751,56636.2367905382,0.5592058862876255,10,352636
104.42019020571364,30969.618606915767,0.5607364214046823,10,351411 104.42019020571364,56476.58071681121,0.5607364214046823,10,351411
104.70520605618978,30910.467500222494,0.5622669565217392,10,350187 104.70520605618978,56317.06831791488,0.5622669565217392,10,350187
104.99022190666592,30851.316393529218,0.563797491638796,10,348963 104.99022190666592,56157.55591901855,0.563797491638796,10,348963
105.27523775714205,30792.09947286119,0.5653280267558528,10,347738 105.27523775714205,55997.89984529155,0.5653280267558528,10,347738
105.5602536076182,30733.320588222938,0.5668585618729096,9,346514 105.5602536076182,55839.474575619024,0.5668585618729096,9,346514
105.84526945809434,30677.360233793443,0.5683890969899665,9,345289 105.84526945809434,55689.32978226716,0.5683890969899665,9,345289
106.13028530857046,30621.464186366808,0.5699196321070233,9,344065 106.13028530857046,55539.32426241306,0.5699196321070233,9,344065
106.4153011590466,30565.5038319373,0.5714501672240803,9,342840 106.4153011590466,55389.17946906119,0.5714501672240803,9,342840
106.70031700952273,30509.60778451066,0.5729807023411371,9,341616 106.70031700952273,55239.17394920709,0.5729807023411371,9,341616
106.98533285999888,30453.711737084028,0.574511237458194,9,340392 106.98533285999888,55089.16842935299,0.574511237458194,9,340392
107.27034871047502,30397.751382654526,0.5760417725752509,9,339167 107.27034871047502,54939.023636001126,0.5760417725752509,9,339167
107.55536456095115,30341.855335227887,0.5775723076923077,9,337943 107.55536456095115,54789.01811614702,0.5775723076923077,9,337943
107.84038041142729,30285.894980798384,0.5791028428093645,9,336718 107.84038041142729,54638.873322795174,0.5791028428093645,9,336718
108.12539626190343,30229.99893337175,0.5806333779264214,9,335494 108.12539626190343,54488.86780294106,0.5806333779264214,9,335494
108.41041211237956,30174.038578942243,0.5821639130434783,9,334269 108.41041211237956,54338.7230095892,0.5821639130434783,9,334269
108.6954279628557,30118.14253151561,0.5836944481605351,9,333045 108.6954279628557,54188.71748973509,0.5836944481605351,9,333045
108.98044381333183,30062.24648408897,0.5852249832775919,9,331821 108.98044381333183,54038.71196988099,0.5852249832775919,9,331821
109.26545966380797,30006.28612965946,0.5867555183946488,9,330596 109.26545966380797,53888.56717652913,0.5867555183946488,9,330596
109.55047551428412,29950.39008223283,0.5882860535117057,9,329372 109.55047551428412,53738.561656675025,0.5882860535117057,9,329372
109.83549136476024,29894.429727803326,0.5898165886287625,9,328147 109.83549136476024,53588.41686332315,0.5898165886287625,9,328147
110.12050721523639,29838.53368037669,0.5913471237458194,9,326923 110.12050721523639,53438.411343469066,0.5913471237458194,9,326923
110.40552306571252,29782.561361639895,0.5928776588628762,9,325698 110.40552306571252,53288.231985014994,0.5928776588628762,9,325698
110.69053891618866,29726.665314213256,0.5944081939799332,9,324474 110.69053891618866,53138.226465160915,0.5944081939799332,9,324474
110.9755547666648,29671.31387329956,0.59593872909699,8,323250 110.9755547666648,52989.80034951309,0.59593872909699,8,323250
111.26057061714093,29616.757347939132,0.5974692642140468,8,322025 111.26057061714093,52843.726777279415,0.5974692642140468,8,322025
111.54558646761707,29562.264447117264,0.5989997993311036,8,320801 111.54558646761707,52697.79049934024,0.5989997993311036,8,320801
111.83060231809321,29507.707921756835,0.6005303344481605,8,319576 111.83060231809321,52551.71692710657,0.6005303344481605,8,319576
112.11561816856934,29453.21502093497,0.6020608695652173,8,318352 112.11561816856934,52405.78064916739,0.6020608695652173,8,318352
112.40063401904548,29398.658495574542,0.6035914046822742,8,317127 112.40063401904548,52259.70707693372,0.6035914046822742,8,317127
112.68564986952163,29344.16559475267,0.6051219397993312,8,315903 112.68564986952163,52113.77079899455,0.6051219397993312,8,315903
112.97066571999775,29289.672693930803,0.606652474916388,8,314679 112.97066571999775,51967.83452105538,0.606652474916388,8,314679
113.2556815704739,29235.116168570374,0.6081830100334449,8,313454 113.2556815704739,51821.760948821706,0.6081830100334449,8,313454
113.54069742095002,29180.623267748502,0.6097135451505017,8,312230 113.54069742095002,51675.82467088253,0.6097135451505017,8,312230
113.82571327142617,29126.066742388073,0.6112440802675585,8,311005 113.82571327142617,51529.751098648856,0.6112440802675585,8,311005
114.11072912190231,29071.573841566213,0.6127746153846154,8,309781 114.11072912190231,51383.81482070968,0.6127746153846154,8,309781
114.39574497237844,29017.017316205773,0.6143051505016722,8,308556 114.39574497237844,51237.74124847601,0.6143051505016722,8,308556
114.68076082285458,28962.524415383912,0.615835685618729,8,307332 114.68076082285458,51091.80497053684,0.615835685618729,8,307332
114.96577667333071,28908.031514562044,0.6173662207357858,8,306108 114.96577667333071,50945.86869259767,0.6173662207357858,8,306108
115.25079252380685,28853.474989201608,0.6188967558528428,8,304883 115.25079252380685,50799.795120364,0.6188967558528428,8,304883
115.535808374283,28798.982088379744,0.6204272909698997,8,303659 115.535808374283,50653.85884242482,0.6204272909698997,8,303659
115.82082422475912,28744.425563019315,0.6219578260869565,8,302434 115.82082422475912,50507.78527019114,0.6219578260869565,8,302434
116.10584007523526,28689.932662197443,0.6234883612040134,8,301210 116.10584007523526,50361.84899225197,0.6234883612040134,8,301210
116.3908559257114,28635.376136837014,0.6250188963210702,8,299985 116.3908559257114,50215.7754200183,0.6250188963210702,8,299985
116.67587177618753,28580.88323601515,0.6265494314381271,8,298761 116.67587177618753,50069.83914207913,0.6265494314381271,8,298761
116.96088762666368,28526.45534360956,0.6280799665551839,7,297537 116.96088762666368,49924.09094506062,0.6280799665551839,7,297537
117.24590347713982,28471.997009615712,0.6296105016722408,7,296312 117.24590347713982,49778.30145792985,0.6296105016722408,7,296312
117.53091932761595,28417.60224988323,0.6311410367892976,7,295088 117.53091932761595,49632.649119632704,0.6311410367892976,7,295088
117.81593517809209,28363.14391588938,0.6326715719063545,7,293863 117.81593517809209,49486.85963250194,0.6326715719063545,7,293863
118.10095102856822,28308.7491561569,0.6342021070234113,7,292639 118.10095102856822,49341.20729420479,0.6342021070234113,7,292639
118.38596687904436,28254.290822163046,0.6357326421404682,7,291414 118.38596687904436,49195.417807074016,0.6357326421404682,7,291414
118.67098272952049,28199.896062430566,0.637263177257525,7,290190 118.67098272952049,49049.765468776866,0.637263177257525,7,290190
118.95599857999663,28145.50130269808,0.6387937123745819,7,288966 118.95599857999663,48904.11313047972,0.6387937123745819,7,288966
119.24101443047277,28091.042968704238,0.6403242474916389,7,287741 119.24101443047277,48758.32364334895,0.6403242474916389,7,287741
119.5260302809489,28036.64205631926,0.6418547826086957,7,286517 119.5260302809489,48612.65359180193,0.6418547826086957,7,286517
119.81104613142504,27982.18372232541,0.6433853177257525,7,285292 119.81104613142504,48466.86410467116,0.6433853177257525,7,285292
120.09606198190119,27927.78896259293,0.6449158528428094,7,284068 120.09606198190119,48321.211766374014,0.6449158528428094,7,284068
120.38107783237731,27873.330628599077,0.6464463879598662,7,282843 120.38107783237731,48175.422279243234,0.6464463879598662,7,282843
120.66609368285346,27818.935868866593,0.647976923076923,7,281619 120.66609368285346,48029.76994094609,0.647976923076923,7,281619
120.9511095333296,27764.541109134116,0.6495074581939799,7,280395 120.9511095333296,47884.11760264895,0.6495074581939799,7,280395
121.23612538380573,27710.08277514026,0.6510379933110367,7,279170 121.23612538380573,47738.32811551818,0.6510379933110367,7,279170
121.52114123428187,27655.68801540778,0.6525685284280937,7,277946 121.52114123428187,47592.675777221026,0.6525685284280937,7,277946
121.806157084758,27601.22968141393,0.6540990635451505,7,276721 121.806157084758,47446.88629009026,0.6540990635451505,7,276721
122.09117293523414,27546.834921681453,0.6556295986622074,7,275497 122.09117293523414,47301.23395179312,0.6556295986622074,7,275497
122.37618878571027,27492.3765876876,0.6571601337792642,7,274272 122.37618878571027,47155.444464662345,0.6571601337792642,7,274272
122.66120463618641,27437.981827955115,0.6586906688963211,7,273048 122.66120463618641,47009.792126365195,0.6586906688963211,7,273048
122.94622048666255,27383.587068222638,0.6602212040133779,7,271824 122.94622048666255,46864.13978806805,0.6602212040133779,7,271824
123.23123633713868,27329.128734228783,0.6617517391304347,7,270599 123.23123633713868,46718.35030093729,0.6617517391304347,7,270599
123.51625218761482,27274.84492702738,0.6632822742474915,6,269375 123.51625218761482,46573.01881199241,0.6632822742474915,6,269375
123.80126803809097,27220.569274449346,0.6648128093645485,6,268150 123.80126803809097,46427.75759774886,0.6648128093645485,6,268150
124.0862838885671,27166.357097332555,0.6663433444816053,6,266926 124.0862838885671,46282.63324663159,0.6663433444816053,6,266926
124.37129973904324,27112.081444754524,0.6678738795986622,6,265701 124.37129973904324,46137.37203238804,0.6678738795986622,6,265701
124.65631558951938,27057.869267637732,0.6694044147157191,6,264477 124.65631558951938,45992.24768127076,0.6694044147157191,6,264477
124.94133143999551,27003.65709052094,0.6709349498327759,6,263253 124.94133143999551,45847.12333015348,0.6709349498327759,6,263253
125.22634729047165,26949.381437942906,0.6724654849498327,6,262028 125.22634729047165,45701.862115909935,0.6724654849498327,6,262028
125.5113631409478,26895.169260826126,0.6739960200668896,6,260804 125.5113631409478,45556.73776479266,0.6739960200668896,6,260804
125.79637899142392,26840.893608248083,0.6755265551839464,6,259579 125.79637899142392,45411.47655054911,0.6755265551839464,6,259579
126.08139484190006,26786.681431131296,0.6770570903010034,6,258355 126.08139484190006,45266.35219943183,0.6770570903010034,6,258355
126.36641069237619,26732.405778553257,0.6785876254180602,6,257130 126.36641069237619,45121.09098518829,0.6785876254180602,6,257130
126.65142654285233,26678.193601436476,0.6801181605351171,6,255906 126.65142654285233,44975.96663407102,0.6801181605351171,6,255906
126.93644239332846,26623.981424319685,0.6816486956521739,6,254682 126.93644239332846,44830.84228295374,0.6816486956521739,6,254682
127.2214582438046,26569.705771741646,0.6831792307692307,6,253457 127.2214582438046,44685.581068710184,0.6831792307692307,6,253457
127.50647409428075,26515.49359462486,0.6847097658862875,6,252233 127.50647409428075,44540.45671759291,0.6847097658862875,6,252233
127.79148994475688,26461.21794204682,0.6862403010033443,6,251008 127.79148994475688,44395.19550334936,0.6862403010033443,6,251008
128.076505795233,26407.005764930036,0.6877708361204011,6,249784 128.076505795233,44250.07115223208,0.6877708361204011,6,249784
128.36152164570916,26352.730112351997,0.6893013712374582,6,248559 128.36152164570916,44104.80993798853,0.6893013712374582,6,248559
128.6465374961853,26298.51793523521,0.690831906354515,6,247335 128.6465374961853,43959.68558687125,0.690831906354515,6,247335
128.93155334666142,26244.300198266632,0.6923624414715718,6,246111 128.93155334666142,43814.545236748185,0.6923624414715718,6,246111
129.21656919713757,26190.024545688593,0.6938929765886287,6,244886 129.21656919713757,43669.28402250464,0.6938929765886287,6,244886
129.5015850476137,26135.81236857181,0.6954235117056855,6,243662 129.5015850476137,43524.15967138736,0.6954235117056855,6,243662
129.78660089808983,26081.536715993767,0.6969540468227424,6,242437 129.78660089808983,43378.89845714381,0.6969540468227424,6,242437
130.071616748566,26027.324538876983,0.6984845819397993,6,241213 130.071616748566,43233.77410602654,0.6984845819397993,6,241213
130.35663259904211,25973.048886298948,0.7000151170568562,6,239988 130.35663259904211,43088.512891782986,0.7000151170568562,6,239988
130.64164844951824,25918.836709182156,0.701545652173913,6,238764 130.64164844951824,42943.38854066571,0.701545652173913,6,238764
130.9266642999944,25865.032259204538,0.70307618729097,5,237540 130.9266642999944,42799.441741669325,0.70307618729097,5,237540
131.21168015047053,25811.2648093821,0.7046067224080268,5,236315 131.21168015047053,42655.64826203361,0.7046067224080268,5,236315
131.49669600094666,25757.56054378724,0.7061372575250836,5,235091 131.49669600094666,42511.990804415494,0.7061372575250836,5,235091
131.7817118514228,25703.793093964807,0.7076677926421405,5,233866 131.7817118514228,42368.19732477978,0.7076677926421405,5,233866
132.06672770189894,25650.088828369953,0.7091983277591973,5,232642 132.06672770189894,42224.53986716167,0.7091983277591973,5,232642
132.35174355237507,25596.321378547516,0.7107288628762541,5,231417 132.35174355237507,42080.74638752595,0.7107288628762541,5,231417
132.63675940285123,25542.61711295266,0.7122593979933112,5,230193 132.63675940285123,41937.08892990785,0.7122593979933112,5,230193
132.92177525332735,25488.912847357806,0.713789933110368,5,228969 132.92177525332735,41793.43147228974,0.713789933110368,5,228969
133.20679110380348,25435.14539753536,0.7153204682274248,5,227744 133.20679110380348,41649.63799265402,0.7153204682274248,5,227744
133.49180695427964,25381.441131940504,0.7168510033444816,5,226520 133.49180695427964,41505.98053503591,0.7168510033444816,5,226520
133.77682280475577,25327.673682118068,0.7183815384615384,5,225295 133.77682280475577,41362.18705540019,0.7183815384615384,5,225295
134.0618386552319,25273.96941652321,0.7199120735785952,5,224071 134.0618386552319,41218.52959778208,0.7199120735785952,5,224071
134.34685450570802,25220.201966700773,0.721442608695652,5,222846 134.34685450570802,41074.736118146364,0.721442608695652,5,222846
134.63187035618418,25166.497701105916,0.722973143812709,5,221622 134.63187035618418,40931.078660528256,0.722973143812709,5,221622
134.9168862066603,25112.793435511063,0.7245036789297659,5,220398 134.9168862066603,40787.42120291016,0.7245036789297659,5,220398
135.20190205713644,25059.025985688626,0.7260342140468227,5,219173 135.20190205713644,40643.62772327444,0.7260342140468227,5,219173
135.48691790761256,25005.321720093765,0.7275647491638795,5,217949 135.48691790761256,40499.97026565633,0.7275647491638795,5,217949
135.77193375808872,24951.554270271332,0.7290952842809364,5,216724 135.77193375808872,40356.17678602062,0.7290952842809364,5,216724
136.05694960856485,24897.85000467648,0.7306258193979932,5,215500 136.05694960856485,40212.5193284025,0.7306258193979932,5,215500
136.34196545904098,24844.082554854034,0.73215635451505,5,214275 136.34196545904098,40068.72584876678,0.73215635451505,5,214275
136.62698130951713,24790.378289259184,0.733686889632107,5,213051 136.62698130951713,39925.06839114867,0.733686889632107,5,213051
136.91199715999326,24736.67402366432,0.7352174247491639,5,211827 136.91199715999326,39781.41093353057,0.7352174247491639,5,211827
137.1970130104694,24682.906573841883,0.7367479598662207,5,210602 137.1970130104694,39637.61745389485,0.7367479598662207,5,210602
137.48202886094555,24629.202308247033,0.7382784949832776,5,209378 137.48202886094555,39493.959996276746,0.7382784949832776,5,209378
137.76704471142168,24575.434858424593,0.7398090301003344,5,208153 137.76704471142168,39350.166516641024,0.7398090301003344,5,208153
138.0520605618978,24521.726489146295,0.7413395652173913,5,206929 138.0520605618978,39206.49726556041,0.7413395652173913,5,206929
138.33707641237396,24467.95903932386,0.7428701003344482,5,205704 138.33707641237396,39062.70378592469,0.7428701003344482,5,205704
138.6220922628501,24414.254773729,0.744400635451505,5,204480 138.6220922628501,38919.046328306584,0.744400635451505,5,204480
138.90710811332622,24360.550508134147,0.7459311705685618,5,203256 138.90710811332622,38775.388870688475,0.7459311705685618,5,203256
139.19212396380237,24307.39243233035,0.7474617056856189,4,202031 139.19212396380237,38633.35068627388,0.7474617056856189,4,202031
139.4771398142785,24254.528682623262,0.7489922408026755,4,200807 139.4771398142785,38492.11432551249,0.7489922408026755,4,200807
139.76215566475463,24201.602261198288,0.7505227759197323,4,199582 139.76215566475463,38350.74341901207,0.7505227759197323,4,199582
140.0471715152308,24148.738511491203,0.7520533110367893,4,198358 140.0471715152308,38209.50705825069,0.7520533110367893,4,198358
140.33218736570691,24095.812090066232,0.7535838461538461,4,197133 140.33218736570691,38068.13615175026,0.7535838461538461,4,197133
140.61720321618304,24042.948340359148,0.7551143812709029,4,195909 140.61720321618304,37926.899790988886,0.7551143812709029,4,195909
140.9022190666592,23990.084590652063,0.7566449163879598,4,194685 140.9022190666592,37785.6634302275,0.7566449163879598,4,194685
141.18723491713533,23937.158169227092,0.7581754515050166,4,193460 141.18723491713533,37644.292523727076,0.7581754515050166,4,193460
141.47225076761146,23884.29441952001,0.7597059866220734,4,192236 141.47225076761146,37503.056162965695,0.7597059866220734,4,192236
141.7572666180876,23831.367998095036,0.7612365217391305,4,191011 141.7572666180876,37361.685256465265,0.7612365217391305,4,191011
142.04228246856374,23778.50424838795,0.7627670568561873,4,189787 142.04228246856374,37220.44889570389,0.7627670568561873,4,189787
142.32729831903987,23725.577826962977,0.7642975919732441,4,188562 142.32729831903987,37079.07798920346,0.7642975919732441,4,188562
142.612314169516,23672.714077255892,0.7658281270903009,4,187338 142.612314169516,36937.841628442075,0.7658281270903009,4,187338
142.89733001999215,23619.850327548815,0.7673586622073579,4,186114 142.89733001999215,36796.6052676807,0.7673586622073579,4,186114
143.18234587046828,23566.92390612384,0.7688891973244147,4,184889 143.18234587046828,36655.23436118027,0.7688891973244147,4,184889
143.4673617209444,23514.060156416752,0.7704197324414715,4,183665 143.4673617209444,36513.998000418884,0.7704197324414715,4,183665
143.75237757142054,23461.133734991778,0.7719502675585284,4,182440 143.75237757142054,36372.62709391846,0.7719502675585284,4,182440
144.0373934218967,23408.269985284693,0.7734808026755853,4,181216 144.0373934218967,36231.39073315708,0.7734808026755853,4,181216
144.32240927237282,23355.343563859722,0.7750113377926421,4,179991 144.32240927237282,36090.01982665666,0.7750113377926421,4,179991
144.60742512284895,23302.479814152637,0.7765418729096989,4,178767 144.60742512284895,35948.78346589527,0.7765418729096989,4,178767
144.8924409733251,23249.616064445556,0.7780724080267559,4,177543 144.8924409733251,35807.54710513389,0.7780724080267559,4,177543
145.17745682380124,23196.68964302058,0.7796029431438126,4,176318 145.17745682380124,35666.17619863346,0.7796029431438126,4,176318
145.46247267427736,23143.825893313497,0.7811334782608694,4,175094 145.46247267427736,35524.93983787208,0.7811334782608694,4,175094
145.74748852475352,23090.899471888522,0.7826640133779263,4,173869 145.74748852475352,35383.56893137166,0.7826640133779263,4,173869
146.03250437522965,23038.035722181445,0.7841945484949832,4,172645 146.03250437522965,35242.33257061028,0.7841945484949832,4,172645
146.31752022570578,22985.109300756463,0.78572508361204,4,171420 146.31752022570578,35100.96166410985,0.78572508361204,4,171420
146.60253607618193,22932.245551049386,0.787255618729097,4,170196 146.60253607618193,34959.72530334846,0.787255618729097,4,170196
146.88755192665806,22879.3818013423,0.7887861538461538,4,168972 146.88755192665806,34818.488942587086,0.7887861538461538,4,168972
147.1725677771342,22826.455379917323,0.7903166889632106,4,167747 147.1725677771342,34677.118036086664,0.7903166889632106,4,167747
147.45758362761035,22773.589576565555,0.7918472240802675,4,166523 147.45758362761035,34535.875786977056,0.7918472240802675,4,166523
147.74259947808648,22720.66315514058,0.7933777591973243,4,165298 147.74259947808648,34394.504880476634,0.7933777591973243,4,165298
148.0276153285626,22667.799405433496,0.7949082943143811,4,164074 148.0276153285626,34253.26851971525,0.7949082943143811,4,164074
148.31263117903876,22614.872984008525,0.7964388294314382,4,162849 148.31263117903876,34111.897613214824,0.7964388294314382,4,162849
148.5976470295149,22562.204830829458,0.797969364548495,3,161625 148.5976470295149,33971.223384159865,0.797969364548495,3,161625
148.88266287999102,22509.616963828565,0.7994998996655518,3,160401 148.88266287999102,33830.77989236181,0.7994998996655518,3,160401
149.16767873046717,22456.966604720914,0.8010304347826087,3,159176 149.16767873046717,33690.20237101544,0.8010304347826087,3,159176
149.4526945809433,22404.378737720017,0.8025609698996655,3,157952 149.4526945809433,33549.758879217385,0.8025609698996655,3,157952
149.73771043141943,22351.728378612366,0.8040915050167223,3,156727 149.73771043141943,33409.18135787102,0.8040915050167223,3,156727
150.0227262818956,22299.140511611473,0.8056220401337794,3,155503 150.0227262818956,33268.73786607297,0.8056220401337794,3,155503
150.30774213237171,22246.490152503826,0.8071525752508362,3,154278 150.30774213237171,33128.1603447266,0.8071525752508362,3,154278
150.59275798284784,22193.902285502925,0.808683110367893,3,153054 150.59275798284784,32987.71685292855,0.808683110367893,3,153054
150.87777383332397,22141.314418502032,0.8102136454849498,3,151830 150.87777383332397,32847.27336113049,0.8102136454849498,3,151830
151.16278968380013,22088.66405939438,0.8117441806020066,3,150605 151.16278968380013,32706.69583978412,0.8117441806020066,3,150605
151.44780553427626,22036.076192393488,0.8132747157190634,3,149381 151.44780553427626,32566.25234798607,0.8132747157190634,3,149381
151.73282138475238,21983.425833285837,0.8148052508361202,3,148156 151.73282138475238,32425.674826639704,0.8148052508361202,3,148156
152.0178372352285,21930.83796628494,0.816335785953177,3,146932 152.0178372352285,32285.231334841643,0.816335785953177,3,146932
152.30285308570467,21878.18760717729,0.817866321070234,3,145707 152.30285308570467,32144.65381349528,0.817866321070234,3,145707
152.5878689361808,21825.599740176393,0.8193968561872909,3,144483 152.5878689361808,32004.21032169723,0.8193968561872909,3,144483
152.87288478665693,21773.011873175496,0.8209273913043477,3,143259 152.87288478665693,31863.76682989917,0.8209273913043477,3,143259
153.15790063713308,21720.36151406785,0.8224579264214046,3,142034 153.15790063713308,31723.189308552806,0.8224579264214046,3,142034
153.4429164876092,21667.77364706695,0.8239884615384614,3,140810 153.4429164876092,31582.74581675475,0.8239884615384614,3,140810
153.72793233808534,21615.1232879593,0.8255189966555183,3,139585 153.72793233808534,31442.16829540838,0.8255189966555183,3,139585
154.0129481885615,21562.535420958407,0.8270495317725752,3,138361 154.0129481885615,31301.724803610326,0.8270495317725752,3,138361
154.29796403903762,21509.885061850757,0.828580066889632,3,137136 154.29796403903762,31161.14728226396,0.828580066889632,3,137136
154.58297988951375,21457.297194849863,0.8301106020066888,3,135912 154.58297988951375,31020.70379046591,0.8301106020066888,3,135912
154.8679957399899,21404.709327848966,0.8316411371237459,3,134688 154.8679957399899,30880.26029866785,0.8316411371237459,3,134688
155.15301159046604,21352.058968741316,0.8331716722408027,3,133463 155.15301159046604,30739.682777321483,0.8331716722408027,3,133463
155.43802744094216,21299.471101740422,0.8347022073578595,3,132239 155.43802744094216,30599.239285523432,0.8347022073578595,3,132239
155.72304329141832,21246.82074263277,0.8362327424749164,3,131014 155.72304329141832,30458.661764177064,0.8362327424749164,3,131014
156.00805914189445,21194.232875631875,0.8377632775919732,3,129790 156.00805914189445,30318.218272379007,0.8377632775919732,3,129790
156.29307499237058,21141.582516524224,0.83929381270903,3,128565 156.29307499237058,30177.640751032643,0.83929381270903,3,128565
156.57809084284673,21088.993134712055,0.8408243478260871,3,127341 156.57809084284673,30037.19291945856,0.8408243478260871,3,127341
156.86310669332286,21036.405267711158,0.8423548829431439,3,126117 156.86310669332286,29896.749427660507,0.8423548829431439,3,126117
157.148122543799,20983.754908603503,0.8438854180602006,3,124892 157.148122543799,29756.17190631414,0.8438854180602006,3,124892
157.43313839427515,20931.16704160261,0.8454159531772575,3,123668 157.43313839427515,29615.728414516085,0.8454159531772575,3,123668
157.71815424475128,20878.51668249496,0.8469464882943143,3,122443 157.71815424475128,29475.150893169714,0.8469464882943143,3,122443
158.0031700952274,20825.928815494062,0.8484770234113711,3,121219 158.0031700952274,29334.707401371656,0.8484770234113711,3,121219
158.28818594570356,20773.27845638641,0.8500075585284281,3,119994 158.28818594570356,29194.129880025295,0.8500075585284281,3,119994
158.5732017961797,20720.69058938552,0.8515380936454849,3,118770 158.5732017961797,29053.68638822724,0.8515380936454849,3,118770
158.85821764665582,20668.10272238462,0.8530686287625417,3,117546 158.85821764665582,28913.242896429183,0.8530686287625417,3,117546
159.14323349713194,20615.45236327697,0.8545991638795986,3,116321 159.14323349713194,28772.66537508282,0.8545991638795986,3,116321
159.4282493476081,20563.69918904202,0.8561296989966555,2,115097 159.4282493476081,28634.614168249944,0.8561296989966555,2,115097
159.71326519808423,20511.979658520824,0.8576602341137123,2,113872 159.71326519808423,28496.704463522325,0.8576602341137123,2,113872
159.99828104856036,20460.321970540033,0.8591907692307691,2,112648 159.99828104856036,28358.92692664266,0.8591907692307691,2,112648
160.2832968990365,20408.602440018836,0.8607213043478259,2,111423 160.2832968990365,28221.017221915045,0.8607213043478259,2,111423
160.56831274951264,20356.944752038045,0.8622518394648829,2,110199 160.56831274951264,28083.239685035383,0.8622518394648829,2,110199
160.85332859998877,20305.28706405725,0.8637823745819397,2,108975 160.85332859998877,27945.46214815572,0.8637823745819397,2,108975
161.1383444504649,20253.567533536054,0.8653129096989965,2,107750 161.1383444504649,27807.552443428103,0.8653129096989965,2,107750
161.42336030094106,20201.909845555263,0.8668434448160535,2,106526 161.42336030094106,27669.774906548442,0.8668434448160535,2,106526
161.70837615141718,20150.190315034066,0.8683739799331103,2,105301 161.70837615141718,27531.865201820827,0.8683739799331103,2,105301
161.9933920018933,20098.53262705327,0.8699045150501672,2,104077 161.9933920018933,27394.087664941162,0.8699045150501672,2,104077
162.27840785236947,20046.81309653208,0.8714350501672241,2,102852 162.27840785236947,27256.17796021355,0.8714350501672241,2,102852
162.5634237028456,19995.155408551283,0.8729655852842809,2,101628 162.5634237028456,27118.400423333886,0.8729655852842809,2,101628
162.84843955332173,19943.497720570493,0.8744961204013376,2,100404 162.84843955332173,26980.622886454217,0.8744961204013376,2,100404
163.13345540379788,19891.778190049296,0.8760266555183945,2,99179 163.13345540379788,26842.713181726605,0.8760266555183945,2,99179
163.418471254274,19840.1205020685,0.8775571906354513,2,97955 163.418471254274,26704.93564484694,0.8775571906354513,2,97955
163.70348710475014,19788.400971547308,0.8790877257525082,2,96730 163.70348710475014,26567.025940119333,0.8790877257525082,2,96730
163.9885029552263,19736.743283566517,0.8806182608695652,2,95506 163.9885029552263,26429.248403239664,0.8806182608695652,2,95506
164.27351880570242,19685.02375304532,0.882148795986622,2,94281 164.27351880570242,26291.33869851205,0.882148795986622,2,94281
164.55853465617855,19633.366065064525,0.8836793311036788,2,93057 164.55853465617855,26153.561161632384,0.8836793311036788,2,93057
164.8435505066547,19581.708377083734,0.8852098662207357,2,91833 164.8435505066547,26015.783624752723,0.8852098662207357,2,91833
165.12856635713084,19529.98884656254,0.8867404013377925,2,90608 165.12856635713084,25877.873920025108,0.8867404013377925,2,90608
165.41358220760696,19478.331158581743,0.8882709364548494,2,89384 165.41358220760696,25740.096383145443,0.8882709364548494,2,89384
165.69859805808312,19426.611628060553,0.8898014715719064,2,88159 165.69859805808312,25602.186678417835,0.8898014715719064,2,88159
165.98361390855925,19374.953724401188,0.8913320066889632,2,86935 165.98361390855925,25464.408525162864,0.8913320066889632,2,86935
166.26862975903538,19323.234193879995,0.89286254180602,2,85710 166.26862975903538,25326.49882043525,0.89286254180602,2,85710
166.55364560951153,19271.576505899204,0.894393076923077,2,84486 166.55364560951153,25188.721283555587,0.894393076923077,2,84486
166.83866145998763,19219.918817918406,0.8959236120401336,2,83262 166.83866145998763,25050.943746675915,0.8959236120401336,2,83262
167.1236773104638,19168.199287397212,0.8974541471571906,2,82037 167.1236773104638,24913.034041948307,0.8974541471571906,2,82037
167.40869316093995,19116.54159941642,0.8989846822742475,2,80813 167.40869316093995,24775.256505068643,0.8989846822742475,2,80813
167.69370901141605,19064.822068895224,0.9005152173913042,2,79588 167.69370901141605,24637.346800341023,0.9005152173913042,2,79588
167.9787248618922,19013.16438091443,0.9020457525083612,2,78364 167.9787248618922,24499.569263461362,0.9020457525083612,2,78364
168.26374071236836,18961.44485039324,0.9035762876254182,2,77139 168.26374071236836,24361.659558733754,0.9035762876254182,2,77139
168.54875656284446,18909.787162412442,0.9051068227424748,2,75915 168.54875656284446,24223.882021854086,0.9051068227424748,2,75915
168.83377241332062,18858.129474431647,0.9066373578595316,2,74691 168.83377241332062,24086.10448497442,0.9066373578595316,2,74691
169.11878826379674,18806.409943910454,0.9081678929765885,2,73466 169.11878826379674,23948.194780246802,0.9081678929765885,2,73466
169.40380411427287,18754.75225592966,0.9096984280936453,2,72242 169.40380411427287,23810.41724336714,0.9096984280936453,2,72242
169.68881996474903,18703.032725408466,0.9112289632107022,2,71017 169.68881996474903,23672.50753863953,0.9112289632107022,2,71017
169.97383581522516,18651.37503742767,0.912759498327759,2,69793 169.97383581522516,23534.730001759865,0.912759498327759,2,69793
170.2588516657013,18599.655506906478,0.9142900334448159,2,68568 170.2588516657013,23396.82029703225,0.9142900334448159,2,68568
170.54386751617744,18547.997818925687,0.9158205685618729,2,67344 170.54386751617744,23259.042760152588,0.9158205685618729,2,67344
170.82888336665357,18496.34013094489,0.9173511036789297,2,66120 170.82888336665357,23121.26522327292,0.9173511036789297,2,66120
171.1138992171297,18444.620600423696,0.9188816387959865,2,64895 171.1138992171297,22983.355518545304,0.9188816387959865,2,64895
171.39891506760586,18392.962912442905,0.9204121739130434,2,63671 171.39891506760586,22845.577981665643,0.9204121739130434,2,63671
171.68393091808198,18341.290399849782,0.9219427090301002,1,62446 171.68393091808198,22707.802646754037,0.9219427090301002,1,62446
171.9689467685581,18289.91913300881,0.923473244147157,1,61222 171.9689467685581,22570.843656276473,0.923473244147157,1,61222
172.25396261903427,18238.48623930601,0.9250037792642141,1,59997 172.25396261903427,22433.75311432626,0.9250037792642141,1,59997
172.5389784695104,18187.11497246504,0.9265343143812709,1,58773 172.5389784695104,22296.794123848696,0.9265343143812709,1,58773
172.82399431998653,18135.743705624067,0.9280648494983277,1,57549 172.82399431998653,22159.83513337113,0.9280648494983277,1,57549
173.10901017046268,18084.31081192127,0.9295953846153846,1,56324 173.10901017046268,22022.74459142092,0.9295953846153846,1,56324
173.3940260209388,18032.9395450803,0.9311259197324414,1,55100 173.3940260209388,21885.785600943353,0.9311259197324414,1,55100
173.67904187141494,17981.506651377495,0.9326564548494982,1,53875 173.67904187141494,21748.695058993144,0.9326564548494982,1,53875
173.9640577218911,17930.135384536527,0.9341869899665552,1,52651 173.9640577218911,21611.736068515576,0.9341869899665552,1,52651
174.24907357236722,17878.702490833723,0.9357175250836121,1,51426 174.24907357236722,21474.645526565368,0.9357175250836121,1,51426
174.53408942284335,17827.33122399275,0.9372480602006688,1,50202 174.53408942284335,21337.686536087796,0.9372480602006688,1,50202
174.8191052733195,17775.959957151783,0.9387785953177257,1,48978 174.8191052733195,21200.727545610236,0.9387785953177257,1,48978
175.1041211237956,17724.52706344898,0.9403091304347824,1,47753 175.1041211237956,21063.63700366002,0.9403091304347824,1,47753
175.38913697427176,17673.155796608007,0.9418396655518393,1,46529 175.38913697427176,20926.67801318246,0.9418396655518393,1,46529
175.67415282474792,17621.72290290521,0.9433702006688963,1,45304 175.67415282474792,20789.58747123225,0.9433702006688963,1,45304
175.95916867522402,17570.351636064235,0.9449007357859529,1,44080 175.95916867522402,20652.62848075468,0.9449007357859529,1,44080
176.24418452570018,17518.918742361435,0.9464312709030099,1,42855 176.24418452570018,20515.53793880447,0.9464312709030099,1,42855
176.52920037617633,17467.547475520467,0.9479618060200669,1,41631 176.52920037617633,20378.578948326907,0.9479618060200669,1,41631
176.81421622665243,17416.176208679495,0.9494923411371236,1,40407 176.81421622665243,20241.619957849343,0.9494923411371236,1,40407
177.0992320771286,17364.74331497669,0.9510228762541805,1,39182 177.0992320771286,20104.529415899127,0.9510228762541805,1,39182
177.38424792760472,17313.37204813572,0.9525534113712374,1,37958 177.38424792760472,19967.570425421563,0.9525534113712374,1,37958
177.66926377808085,17261.93915443292,0.9540839464882942,1,36733 177.66926377808085,19830.47988347135,0.9540839464882942,1,36733
177.954279628557,17210.56788759195,0.9556144816053511,1,35509 177.954279628557,19693.52089299379,0.9556144816053511,1,35509
178.23929547903313,17159.134993889147,0.9571450167224079,1,34284 178.23929547903313,19556.430351043575,0.9571450167224079,1,34284
178.52431132950926,17107.76372704818,0.9586755518394647,1,33060 178.52431132950926,19419.47136056601,0.9586755518394647,1,33060
178.80932717998542,17056.392460207207,0.9602060869565218,1,31836 178.80932717998542,19282.512370088447,0.9602060869565218,1,31836
179.09434303046154,17004.959566504403,0.9617366220735786,1,30611 179.09434303046154,19145.421828138235,0.9617366220735786,1,30611
179.37935888093767,16953.588299663435,0.9632671571906354,1,29387 179.37935888093767,19008.46283766067,0.9632671571906354,1,29387
179.66437473141383,16902.155405960635,0.9647976923076923,1,28162 179.66437473141383,18871.372295710462,0.9647976923076923,1,28162
179.94939058188996,16850.784139119663,0.9663282274247491,1,26938 179.94939058188996,18734.41330523289,0.9663282274247491,1,26938
180.2344064323661,16799.35124541686,0.9678587625418059,1,25713 180.2344064323661,18597.322763282682,0.9678587625418059,1,25713
180.51942228284224,16747.97997857589,0.9693892976588627,1,24489 180.51942228284224,18460.363772805114,0.9693892976588627,1,24489
180.80443813331837,16696.60871173492,0.9709198327759195,1,23265 180.80443813331837,18323.40478232755,0.9709198327759195,1,23265
181.0894539837945,16645.175818032116,0.9724503678929765,1,22040 181.0894539837945,18186.314240377338,0.9724503678929765,1,22040
181.37446983427066,16593.804551191148,0.9739809030100334,1,20816 181.37446983427066,18049.355249899774,0.9739809030100334,1,20816
181.65948568474678,16542.371657488344,0.9755114381270902,1,19591 181.65948568474678,17912.264707949565,0.9755114381270902,1,19591
181.9445015352229,16491.000390647372,0.977041973244147,1,18367 181.9445015352229,17775.305717471998,0.977041973244147,1,18367
182.22951738569907,16439.567496944575,0.978572508361204,1,17142 182.22951738569907,17638.21517552179,0.978572508361204,1,17142
182.5145332361752,16388.196230103604,0.9801030434782608,1,15918 182.5145332361752,17501.25618504422,0.9801030434782608,1,15918
182.79954908665133,16336.824963262632,0.9816335785953176,1,14694 182.79954908665133,17364.297194566658,0.9816335785953176,1,14694
183.08456493712748,16285.392069559832,0.9831641137123746,1,13469 183.08456493712748,17227.20665261645,0.9831641137123746,1,13469
183.36958078760358,16234.02080271886,0.9846946488294313,1,12245 183.36958078760358,17090.24766213888,0.9846946488294313,1,12245
183.65459663807974,16182.587909016058,0.9862251839464882,1,11020 183.65459663807974,16953.15712018867,0.9862251839464882,1,11020
183.9396124885559,16131.21664217509,0.9877557190635452,1,9796 183.9396124885559,16816.198129711105,0.9877557190635452,1,9796
184.224628339032,16079.783748472286,0.9892862541806018,1,8571 184.224628339032,16679.107587760893,0.9892862541806018,1,8571
184.50964418950815,16028.412481631316,0.9908167892976588,1,7347 184.50964418950815,16542.14859728333,0.9908167892976588,1,7347
184.7946600399843,15977.041214790348,0.9923473244147157,1,6123 184.7946600399843,16405.189606805765,0.9923473244147157,1,6123
185.0796758904604,15925.608321087544,0.9938778595317724,1,4898 185.0796758904604,16268.099064855553,0.9938778595317724,1,4898
185.36469174093656,15874.237054246574,0.9954083946488294,1,3674 185.36469174093656,16131.140074377987,0.9954083946488294,1,3674
185.6497075914127,15822.80416054377,0.9969389297658863,1,2449 185.6497075914127,15994.049532427774,0.9969389297658863,1,2449
185.93472344188882,15771.432893702802,0.9984694648829431,1,1225 185.93472344188882,15857.09054195021,0.9984694648829431,1,1225
186.21973929236498,15720.0,1.0,0,0 186.21973929236498,15720.0,1.0,0,0
1 years energy_PJ elevator_fraction sites_used rocket_launches
2 101.0 31679.76095710881 58391.44787772048 0.54237 10 366104
3 101.28501585047614 31620.609850415538 58231.93547882414 0.5439005351170569 10 364880
4 101.57003170095227 31561.45874372226 58072.423079927816 0.5454310702341137 10 363656
5 101.85504755142841 31502.241823054243 57912.767006200826 0.5469616053511706 10 362431
6 102.14006340190454 31443.090716360963 57753.254607304494 0.5484921404682274 10 361207
7 102.42507925238068 31383.87379569294 57593.598533577504 0.5500226755852843 10 359982
8 102.71009510285683 31324.722688999667 57434.086134681165 0.5515532107023411 10 358758
9 102.99511095333295 31265.571582306387 57274.573735784834 0.5530837458193979 10 357534
10 103.2801268038091 31206.354661638365 57114.91766205785 0.5546142809364548 10 356309
11 103.56514265428524 31147.203554945085 56955.40526316152 0.5561448160535117 10 355085
12 103.85015850476137 31087.98663427707 56795.74918943452 0.5576753511705685 10 353860
13 104.13517435523751 31028.835527583797 56636.2367905382 0.5592058862876255 10 352636
14 104.42019020571364 30969.618606915767 56476.58071681121 0.5607364214046823 10 351411
15 104.70520605618978 30910.467500222494 56317.06831791488 0.5622669565217392 10 350187
16 104.99022190666592 30851.316393529218 56157.55591901855 0.563797491638796 10 348963
17 105.27523775714205 30792.09947286119 55997.89984529155 0.5653280267558528 10 347738
18 105.5602536076182 30733.320588222938 55839.474575619024 0.5668585618729096 9 346514
19 105.84526945809434 30677.360233793443 55689.32978226716 0.5683890969899665 9 345289
20 106.13028530857046 30621.464186366808 55539.32426241306 0.5699196321070233 9 344065
21 106.4153011590466 30565.5038319373 55389.17946906119 0.5714501672240803 9 342840
22 106.70031700952273 30509.60778451066 55239.17394920709 0.5729807023411371 9 341616
23 106.98533285999888 30453.711737084028 55089.16842935299 0.574511237458194 9 340392
24 107.27034871047502 30397.751382654526 54939.023636001126 0.5760417725752509 9 339167
25 107.55536456095115 30341.855335227887 54789.01811614702 0.5775723076923077 9 337943
26 107.84038041142729 30285.894980798384 54638.873322795174 0.5791028428093645 9 336718
27 108.12539626190343 30229.99893337175 54488.86780294106 0.5806333779264214 9 335494
28 108.41041211237956 30174.038578942243 54338.7230095892 0.5821639130434783 9 334269
29 108.6954279628557 30118.14253151561 54188.71748973509 0.5836944481605351 9 333045
30 108.98044381333183 30062.24648408897 54038.71196988099 0.5852249832775919 9 331821
31 109.26545966380797 30006.28612965946 53888.56717652913 0.5867555183946488 9 330596
32 109.55047551428412 29950.39008223283 53738.561656675025 0.5882860535117057 9 329372
33 109.83549136476024 29894.429727803326 53588.41686332315 0.5898165886287625 9 328147
34 110.12050721523639 29838.53368037669 53438.411343469066 0.5913471237458194 9 326923
35 110.40552306571252 29782.561361639895 53288.231985014994 0.5928776588628762 9 325698
36 110.69053891618866 29726.665314213256 53138.226465160915 0.5944081939799332 9 324474
37 110.9755547666648 29671.31387329956 52989.80034951309 0.59593872909699 8 323250
38 111.26057061714093 29616.757347939132 52843.726777279415 0.5974692642140468 8 322025
39 111.54558646761707 29562.264447117264 52697.79049934024 0.5989997993311036 8 320801
40 111.83060231809321 29507.707921756835 52551.71692710657 0.6005303344481605 8 319576
41 112.11561816856934 29453.21502093497 52405.78064916739 0.6020608695652173 8 318352
42 112.40063401904548 29398.658495574542 52259.70707693372 0.6035914046822742 8 317127
43 112.68564986952163 29344.16559475267 52113.77079899455 0.6051219397993312 8 315903
44 112.97066571999775 29289.672693930803 51967.83452105538 0.606652474916388 8 314679
45 113.2556815704739 29235.116168570374 51821.760948821706 0.6081830100334449 8 313454
46 113.54069742095002 29180.623267748502 51675.82467088253 0.6097135451505017 8 312230
47 113.82571327142617 29126.066742388073 51529.751098648856 0.6112440802675585 8 311005
48 114.11072912190231 29071.573841566213 51383.81482070968 0.6127746153846154 8 309781
49 114.39574497237844 29017.017316205773 51237.74124847601 0.6143051505016722 8 308556
50 114.68076082285458 28962.524415383912 51091.80497053684 0.615835685618729 8 307332
51 114.96577667333071 28908.031514562044 50945.86869259767 0.6173662207357858 8 306108
52 115.25079252380685 28853.474989201608 50799.795120364 0.6188967558528428 8 304883
53 115.535808374283 28798.982088379744 50653.85884242482 0.6204272909698997 8 303659
54 115.82082422475912 28744.425563019315 50507.78527019114 0.6219578260869565 8 302434
55 116.10584007523526 28689.932662197443 50361.84899225197 0.6234883612040134 8 301210
56 116.3908559257114 28635.376136837014 50215.7754200183 0.6250188963210702 8 299985
57 116.67587177618753 28580.88323601515 50069.83914207913 0.6265494314381271 8 298761
58 116.96088762666368 28526.45534360956 49924.09094506062 0.6280799665551839 7 297537
59 117.24590347713982 28471.997009615712 49778.30145792985 0.6296105016722408 7 296312
60 117.53091932761595 28417.60224988323 49632.649119632704 0.6311410367892976 7 295088
61 117.81593517809209 28363.14391588938 49486.85963250194 0.6326715719063545 7 293863
62 118.10095102856822 28308.7491561569 49341.20729420479 0.6342021070234113 7 292639
63 118.38596687904436 28254.290822163046 49195.417807074016 0.6357326421404682 7 291414
64 118.67098272952049 28199.896062430566 49049.765468776866 0.637263177257525 7 290190
65 118.95599857999663 28145.50130269808 48904.11313047972 0.6387937123745819 7 288966
66 119.24101443047277 28091.042968704238 48758.32364334895 0.6403242474916389 7 287741
67 119.5260302809489 28036.64205631926 48612.65359180193 0.6418547826086957 7 286517
68 119.81104613142504 27982.18372232541 48466.86410467116 0.6433853177257525 7 285292
69 120.09606198190119 27927.78896259293 48321.211766374014 0.6449158528428094 7 284068
70 120.38107783237731 27873.330628599077 48175.422279243234 0.6464463879598662 7 282843
71 120.66609368285346 27818.935868866593 48029.76994094609 0.647976923076923 7 281619
72 120.9511095333296 27764.541109134116 47884.11760264895 0.6495074581939799 7 280395
73 121.23612538380573 27710.08277514026 47738.32811551818 0.6510379933110367 7 279170
74 121.52114123428187 27655.68801540778 47592.675777221026 0.6525685284280937 7 277946
75 121.806157084758 27601.22968141393 47446.88629009026 0.6540990635451505 7 276721
76 122.09117293523414 27546.834921681453 47301.23395179312 0.6556295986622074 7 275497
77 122.37618878571027 27492.3765876876 47155.444464662345 0.6571601337792642 7 274272
78 122.66120463618641 27437.981827955115 47009.792126365195 0.6586906688963211 7 273048
79 122.94622048666255 27383.587068222638 46864.13978806805 0.6602212040133779 7 271824
80 123.23123633713868 27329.128734228783 46718.35030093729 0.6617517391304347 7 270599
81 123.51625218761482 27274.84492702738 46573.01881199241 0.6632822742474915 6 269375
82 123.80126803809097 27220.569274449346 46427.75759774886 0.6648128093645485 6 268150
83 124.0862838885671 27166.357097332555 46282.63324663159 0.6663433444816053 6 266926
84 124.37129973904324 27112.081444754524 46137.37203238804 0.6678738795986622 6 265701
85 124.65631558951938 27057.869267637732 45992.24768127076 0.6694044147157191 6 264477
86 124.94133143999551 27003.65709052094 45847.12333015348 0.6709349498327759 6 263253
87 125.22634729047165 26949.381437942906 45701.862115909935 0.6724654849498327 6 262028
88 125.5113631409478 26895.169260826126 45556.73776479266 0.6739960200668896 6 260804
89 125.79637899142392 26840.893608248083 45411.47655054911 0.6755265551839464 6 259579
90 126.08139484190006 26786.681431131296 45266.35219943183 0.6770570903010034 6 258355
91 126.36641069237619 26732.405778553257 45121.09098518829 0.6785876254180602 6 257130
92 126.65142654285233 26678.193601436476 44975.96663407102 0.6801181605351171 6 255906
93 126.93644239332846 26623.981424319685 44830.84228295374 0.6816486956521739 6 254682
94 127.2214582438046 26569.705771741646 44685.581068710184 0.6831792307692307 6 253457
95 127.50647409428075 26515.49359462486 44540.45671759291 0.6847097658862875 6 252233
96 127.79148994475688 26461.21794204682 44395.19550334936 0.6862403010033443 6 251008
97 128.076505795233 26407.005764930036 44250.07115223208 0.6877708361204011 6 249784
98 128.36152164570916 26352.730112351997 44104.80993798853 0.6893013712374582 6 248559
99 128.6465374961853 26298.51793523521 43959.68558687125 0.690831906354515 6 247335
100 128.93155334666142 26244.300198266632 43814.545236748185 0.6923624414715718 6 246111
101 129.21656919713757 26190.024545688593 43669.28402250464 0.6938929765886287 6 244886
102 129.5015850476137 26135.81236857181 43524.15967138736 0.6954235117056855 6 243662
103 129.78660089808983 26081.536715993767 43378.89845714381 0.6969540468227424 6 242437
104 130.071616748566 26027.324538876983 43233.77410602654 0.6984845819397993 6 241213
105 130.35663259904211 25973.048886298948 43088.512891782986 0.7000151170568562 6 239988
106 130.64164844951824 25918.836709182156 42943.38854066571 0.701545652173913 6 238764
107 130.9266642999944 25865.032259204538 42799.441741669325 0.70307618729097 5 237540
108 131.21168015047053 25811.2648093821 42655.64826203361 0.7046067224080268 5 236315
109 131.49669600094666 25757.56054378724 42511.990804415494 0.7061372575250836 5 235091
110 131.7817118514228 25703.793093964807 42368.19732477978 0.7076677926421405 5 233866
111 132.06672770189894 25650.088828369953 42224.53986716167 0.7091983277591973 5 232642
112 132.35174355237507 25596.321378547516 42080.74638752595 0.7107288628762541 5 231417
113 132.63675940285123 25542.61711295266 41937.08892990785 0.7122593979933112 5 230193
114 132.92177525332735 25488.912847357806 41793.43147228974 0.713789933110368 5 228969
115 133.20679110380348 25435.14539753536 41649.63799265402 0.7153204682274248 5 227744
116 133.49180695427964 25381.441131940504 41505.98053503591 0.7168510033444816 5 226520
117 133.77682280475577 25327.673682118068 41362.18705540019 0.7183815384615384 5 225295
118 134.0618386552319 25273.96941652321 41218.52959778208 0.7199120735785952 5 224071
119 134.34685450570802 25220.201966700773 41074.736118146364 0.721442608695652 5 222846
120 134.63187035618418 25166.497701105916 40931.078660528256 0.722973143812709 5 221622
121 134.9168862066603 25112.793435511063 40787.42120291016 0.7245036789297659 5 220398
122 135.20190205713644 25059.025985688626 40643.62772327444 0.7260342140468227 5 219173
123 135.48691790761256 25005.321720093765 40499.97026565633 0.7275647491638795 5 217949
124 135.77193375808872 24951.554270271332 40356.17678602062 0.7290952842809364 5 216724
125 136.05694960856485 24897.85000467648 40212.5193284025 0.7306258193979932 5 215500
126 136.34196545904098 24844.082554854034 40068.72584876678 0.73215635451505 5 214275
127 136.62698130951713 24790.378289259184 39925.06839114867 0.733686889632107 5 213051
128 136.91199715999326 24736.67402366432 39781.41093353057 0.7352174247491639 5 211827
129 137.1970130104694 24682.906573841883 39637.61745389485 0.7367479598662207 5 210602
130 137.48202886094555 24629.202308247033 39493.959996276746 0.7382784949832776 5 209378
131 137.76704471142168 24575.434858424593 39350.166516641024 0.7398090301003344 5 208153
132 138.0520605618978 24521.726489146295 39206.49726556041 0.7413395652173913 5 206929
133 138.33707641237396 24467.95903932386 39062.70378592469 0.7428701003344482 5 205704
134 138.6220922628501 24414.254773729 38919.046328306584 0.744400635451505 5 204480
135 138.90710811332622 24360.550508134147 38775.388870688475 0.7459311705685618 5 203256
136 139.19212396380237 24307.39243233035 38633.35068627388 0.7474617056856189 4 202031
137 139.4771398142785 24254.528682623262 38492.11432551249 0.7489922408026755 4 200807
138 139.76215566475463 24201.602261198288 38350.74341901207 0.7505227759197323 4 199582
139 140.0471715152308 24148.738511491203 38209.50705825069 0.7520533110367893 4 198358
140 140.33218736570691 24095.812090066232 38068.13615175026 0.7535838461538461 4 197133
141 140.61720321618304 24042.948340359148 37926.899790988886 0.7551143812709029 4 195909
142 140.9022190666592 23990.084590652063 37785.6634302275 0.7566449163879598 4 194685
143 141.18723491713533 23937.158169227092 37644.292523727076 0.7581754515050166 4 193460
144 141.47225076761146 23884.29441952001 37503.056162965695 0.7597059866220734 4 192236
145 141.7572666180876 23831.367998095036 37361.685256465265 0.7612365217391305 4 191011
146 142.04228246856374 23778.50424838795 37220.44889570389 0.7627670568561873 4 189787
147 142.32729831903987 23725.577826962977 37079.07798920346 0.7642975919732441 4 188562
148 142.612314169516 23672.714077255892 36937.841628442075 0.7658281270903009 4 187338
149 142.89733001999215 23619.850327548815 36796.6052676807 0.7673586622073579 4 186114
150 143.18234587046828 23566.92390612384 36655.23436118027 0.7688891973244147 4 184889
151 143.4673617209444 23514.060156416752 36513.998000418884 0.7704197324414715 4 183665
152 143.75237757142054 23461.133734991778 36372.62709391846 0.7719502675585284 4 182440
153 144.0373934218967 23408.269985284693 36231.39073315708 0.7734808026755853 4 181216
154 144.32240927237282 23355.343563859722 36090.01982665666 0.7750113377926421 4 179991
155 144.60742512284895 23302.479814152637 35948.78346589527 0.7765418729096989 4 178767
156 144.8924409733251 23249.616064445556 35807.54710513389 0.7780724080267559 4 177543
157 145.17745682380124 23196.68964302058 35666.17619863346 0.7796029431438126 4 176318
158 145.46247267427736 23143.825893313497 35524.93983787208 0.7811334782608694 4 175094
159 145.74748852475352 23090.899471888522 35383.56893137166 0.7826640133779263 4 173869
160 146.03250437522965 23038.035722181445 35242.33257061028 0.7841945484949832 4 172645
161 146.31752022570578 22985.109300756463 35100.96166410985 0.78572508361204 4 171420
162 146.60253607618193 22932.245551049386 34959.72530334846 0.787255618729097 4 170196
163 146.88755192665806 22879.3818013423 34818.488942587086 0.7887861538461538 4 168972
164 147.1725677771342 22826.455379917323 34677.118036086664 0.7903166889632106 4 167747
165 147.45758362761035 22773.589576565555 34535.875786977056 0.7918472240802675 4 166523
166 147.74259947808648 22720.66315514058 34394.504880476634 0.7933777591973243 4 165298
167 148.0276153285626 22667.799405433496 34253.26851971525 0.7949082943143811 4 164074
168 148.31263117903876 22614.872984008525 34111.897613214824 0.7964388294314382 4 162849
169 148.5976470295149 22562.204830829458 33971.223384159865 0.797969364548495 3 161625
170 148.88266287999102 22509.616963828565 33830.77989236181 0.7994998996655518 3 160401
171 149.16767873046717 22456.966604720914 33690.20237101544 0.8010304347826087 3 159176
172 149.4526945809433 22404.378737720017 33549.758879217385 0.8025609698996655 3 157952
173 149.73771043141943 22351.728378612366 33409.18135787102 0.8040915050167223 3 156727
174 150.0227262818956 22299.140511611473 33268.73786607297 0.8056220401337794 3 155503
175 150.30774213237171 22246.490152503826 33128.1603447266 0.8071525752508362 3 154278
176 150.59275798284784 22193.902285502925 32987.71685292855 0.808683110367893 3 153054
177 150.87777383332397 22141.314418502032 32847.27336113049 0.8102136454849498 3 151830
178 151.16278968380013 22088.66405939438 32706.69583978412 0.8117441806020066 3 150605
179 151.44780553427626 22036.076192393488 32566.25234798607 0.8132747157190634 3 149381
180 151.73282138475238 21983.425833285837 32425.674826639704 0.8148052508361202 3 148156
181 152.0178372352285 21930.83796628494 32285.231334841643 0.816335785953177 3 146932
182 152.30285308570467 21878.18760717729 32144.65381349528 0.817866321070234 3 145707
183 152.5878689361808 21825.599740176393 32004.21032169723 0.8193968561872909 3 144483
184 152.87288478665693 21773.011873175496 31863.76682989917 0.8209273913043477 3 143259
185 153.15790063713308 21720.36151406785 31723.189308552806 0.8224579264214046 3 142034
186 153.4429164876092 21667.77364706695 31582.74581675475 0.8239884615384614 3 140810
187 153.72793233808534 21615.1232879593 31442.16829540838 0.8255189966555183 3 139585
188 154.0129481885615 21562.535420958407 31301.724803610326 0.8270495317725752 3 138361
189 154.29796403903762 21509.885061850757 31161.14728226396 0.828580066889632 3 137136
190 154.58297988951375 21457.297194849863 31020.70379046591 0.8301106020066888 3 135912
191 154.8679957399899 21404.709327848966 30880.26029866785 0.8316411371237459 3 134688
192 155.15301159046604 21352.058968741316 30739.682777321483 0.8331716722408027 3 133463
193 155.43802744094216 21299.471101740422 30599.239285523432 0.8347022073578595 3 132239
194 155.72304329141832 21246.82074263277 30458.661764177064 0.8362327424749164 3 131014
195 156.00805914189445 21194.232875631875 30318.218272379007 0.8377632775919732 3 129790
196 156.29307499237058 21141.582516524224 30177.640751032643 0.83929381270903 3 128565
197 156.57809084284673 21088.993134712055 30037.19291945856 0.8408243478260871 3 127341
198 156.86310669332286 21036.405267711158 29896.749427660507 0.8423548829431439 3 126117
199 157.148122543799 20983.754908603503 29756.17190631414 0.8438854180602006 3 124892
200 157.43313839427515 20931.16704160261 29615.728414516085 0.8454159531772575 3 123668
201 157.71815424475128 20878.51668249496 29475.150893169714 0.8469464882943143 3 122443
202 158.0031700952274 20825.928815494062 29334.707401371656 0.8484770234113711 3 121219
203 158.28818594570356 20773.27845638641 29194.129880025295 0.8500075585284281 3 119994
204 158.5732017961797 20720.69058938552 29053.68638822724 0.8515380936454849 3 118770
205 158.85821764665582 20668.10272238462 28913.242896429183 0.8530686287625417 3 117546
206 159.14323349713194 20615.45236327697 28772.66537508282 0.8545991638795986 3 116321
207 159.4282493476081 20563.69918904202 28634.614168249944 0.8561296989966555 2 115097
208 159.71326519808423 20511.979658520824 28496.704463522325 0.8576602341137123 2 113872
209 159.99828104856036 20460.321970540033 28358.92692664266 0.8591907692307691 2 112648
210 160.2832968990365 20408.602440018836 28221.017221915045 0.8607213043478259 2 111423
211 160.56831274951264 20356.944752038045 28083.239685035383 0.8622518394648829 2 110199
212 160.85332859998877 20305.28706405725 27945.46214815572 0.8637823745819397 2 108975
213 161.1383444504649 20253.567533536054 27807.552443428103 0.8653129096989965 2 107750
214 161.42336030094106 20201.909845555263 27669.774906548442 0.8668434448160535 2 106526
215 161.70837615141718 20150.190315034066 27531.865201820827 0.8683739799331103 2 105301
216 161.9933920018933 20098.53262705327 27394.087664941162 0.8699045150501672 2 104077
217 162.27840785236947 20046.81309653208 27256.17796021355 0.8714350501672241 2 102852
218 162.5634237028456 19995.155408551283 27118.400423333886 0.8729655852842809 2 101628
219 162.84843955332173 19943.497720570493 26980.622886454217 0.8744961204013376 2 100404
220 163.13345540379788 19891.778190049296 26842.713181726605 0.8760266555183945 2 99179
221 163.418471254274 19840.1205020685 26704.93564484694 0.8775571906354513 2 97955
222 163.70348710475014 19788.400971547308 26567.025940119333 0.8790877257525082 2 96730
223 163.9885029552263 19736.743283566517 26429.248403239664 0.8806182608695652 2 95506
224 164.27351880570242 19685.02375304532 26291.33869851205 0.882148795986622 2 94281
225 164.55853465617855 19633.366065064525 26153.561161632384 0.8836793311036788 2 93057
226 164.8435505066547 19581.708377083734 26015.783624752723 0.8852098662207357 2 91833
227 165.12856635713084 19529.98884656254 25877.873920025108 0.8867404013377925 2 90608
228 165.41358220760696 19478.331158581743 25740.096383145443 0.8882709364548494 2 89384
229 165.69859805808312 19426.611628060553 25602.186678417835 0.8898014715719064 2 88159
230 165.98361390855925 19374.953724401188 25464.408525162864 0.8913320066889632 2 86935
231 166.26862975903538 19323.234193879995 25326.49882043525 0.89286254180602 2 85710
232 166.55364560951153 19271.576505899204 25188.721283555587 0.894393076923077 2 84486
233 166.83866145998763 19219.918817918406 25050.943746675915 0.8959236120401336 2 83262
234 167.1236773104638 19168.199287397212 24913.034041948307 0.8974541471571906 2 82037
235 167.40869316093995 19116.54159941642 24775.256505068643 0.8989846822742475 2 80813
236 167.69370901141605 19064.822068895224 24637.346800341023 0.9005152173913042 2 79588
237 167.9787248618922 19013.16438091443 24499.569263461362 0.9020457525083612 2 78364
238 168.26374071236836 18961.44485039324 24361.659558733754 0.9035762876254182 2 77139
239 168.54875656284446 18909.787162412442 24223.882021854086 0.9051068227424748 2 75915
240 168.83377241332062 18858.129474431647 24086.10448497442 0.9066373578595316 2 74691
241 169.11878826379674 18806.409943910454 23948.194780246802 0.9081678929765885 2 73466
242 169.40380411427287 18754.75225592966 23810.41724336714 0.9096984280936453 2 72242
243 169.68881996474903 18703.032725408466 23672.50753863953 0.9112289632107022 2 71017
244 169.97383581522516 18651.37503742767 23534.730001759865 0.912759498327759 2 69793
245 170.2588516657013 18599.655506906478 23396.82029703225 0.9142900334448159 2 68568
246 170.54386751617744 18547.997818925687 23259.042760152588 0.9158205685618729 2 67344
247 170.82888336665357 18496.34013094489 23121.26522327292 0.9173511036789297 2 66120
248 171.1138992171297 18444.620600423696 22983.355518545304 0.9188816387959865 2 64895
249 171.39891506760586 18392.962912442905 22845.577981665643 0.9204121739130434 2 63671
250 171.68393091808198 18341.290399849782 22707.802646754037 0.9219427090301002 1 62446
251 171.9689467685581 18289.91913300881 22570.843656276473 0.923473244147157 1 61222
252 172.25396261903427 18238.48623930601 22433.75311432626 0.9250037792642141 1 59997
253 172.5389784695104 18187.11497246504 22296.794123848696 0.9265343143812709 1 58773
254 172.82399431998653 18135.743705624067 22159.83513337113 0.9280648494983277 1 57549
255 173.10901017046268 18084.31081192127 22022.74459142092 0.9295953846153846 1 56324
256 173.3940260209388 18032.9395450803 21885.785600943353 0.9311259197324414 1 55100
257 173.67904187141494 17981.506651377495 21748.695058993144 0.9326564548494982 1 53875
258 173.9640577218911 17930.135384536527 21611.736068515576 0.9341869899665552 1 52651
259 174.24907357236722 17878.702490833723 21474.645526565368 0.9357175250836121 1 51426
260 174.53408942284335 17827.33122399275 21337.686536087796 0.9372480602006688 1 50202
261 174.8191052733195 17775.959957151783 21200.727545610236 0.9387785953177257 1 48978
262 175.1041211237956 17724.52706344898 21063.63700366002 0.9403091304347824 1 47753
263 175.38913697427176 17673.155796608007 20926.67801318246 0.9418396655518393 1 46529
264 175.67415282474792 17621.72290290521 20789.58747123225 0.9433702006688963 1 45304
265 175.95916867522402 17570.351636064235 20652.62848075468 0.9449007357859529 1 44080
266 176.24418452570018 17518.918742361435 20515.53793880447 0.9464312709030099 1 42855
267 176.52920037617633 17467.547475520467 20378.578948326907 0.9479618060200669 1 41631
268 176.81421622665243 17416.176208679495 20241.619957849343 0.9494923411371236 1 40407
269 177.0992320771286 17364.74331497669 20104.529415899127 0.9510228762541805 1 39182
270 177.38424792760472 17313.37204813572 19967.570425421563 0.9525534113712374 1 37958
271 177.66926377808085 17261.93915443292 19830.47988347135 0.9540839464882942 1 36733
272 177.954279628557 17210.56788759195 19693.52089299379 0.9556144816053511 1 35509
273 178.23929547903313 17159.134993889147 19556.430351043575 0.9571450167224079 1 34284
274 178.52431132950926 17107.76372704818 19419.47136056601 0.9586755518394647 1 33060
275 178.80932717998542 17056.392460207207 19282.512370088447 0.9602060869565218 1 31836
276 179.09434303046154 17004.959566504403 19145.421828138235 0.9617366220735786 1 30611
277 179.37935888093767 16953.588299663435 19008.46283766067 0.9632671571906354 1 29387
278 179.66437473141383 16902.155405960635 18871.372295710462 0.9647976923076923 1 28162
279 179.94939058188996 16850.784139119663 18734.41330523289 0.9663282274247491 1 26938
280 180.2344064323661 16799.35124541686 18597.322763282682 0.9678587625418059 1 25713
281 180.51942228284224 16747.97997857589 18460.363772805114 0.9693892976588627 1 24489
282 180.80443813331837 16696.60871173492 18323.40478232755 0.9709198327759195 1 23265
283 181.0894539837945 16645.175818032116 18186.314240377338 0.9724503678929765 1 22040
284 181.37446983427066 16593.804551191148 18049.355249899774 0.9739809030100334 1 20816
285 181.65948568474678 16542.371657488344 17912.264707949565 0.9755114381270902 1 19591
286 181.9445015352229 16491.000390647372 17775.305717471998 0.977041973244147 1 18367
287 182.22951738569907 16439.567496944575 17638.21517552179 0.978572508361204 1 17142
288 182.5145332361752 16388.196230103604 17501.25618504422 0.9801030434782608 1 15918
289 182.79954908665133 16336.824963262632 17364.297194566658 0.9816335785953176 1 14694
290 183.08456493712748 16285.392069559832 17227.20665261645 0.9831641137123746 1 13469
291 183.36958078760358 16234.02080271886 17090.24766213888 0.9846946488294313 1 12245
292 183.65459663807974 16182.587909016058 16953.15712018867 0.9862251839464882 1 11020
293 183.9396124885559 16131.21664217509 16816.198129711105 0.9877557190635452 1 9796
294 184.224628339032 16079.783748472286 16679.107587760893 0.9892862541806018 1 8571
295 184.50964418950815 16028.412481631316 16542.14859728333 0.9908167892976588 1 7347
296 184.7946600399843 15977.041214790348 16405.189606805765 0.9923473244147157 1 6123
297 185.0796758904604 15925.608321087544 16268.099064855553 0.9938778595317724 1 4898
298 185.36469174093656 15874.237054246574 16131.140074377987 0.9954083946488294 1 3674
299 185.6497075914127 15822.80416054377 15994.049532427774 0.9969389297658863 1 2449
300 185.93472344188882 15771.432893702802 15857.09054195021 0.9984694648829431 1 1225
301 186.21973929236498 15720.0 1.0 0 0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 324 KiB

After

Width:  |  Height:  |  Size: 329 KiB

View File

@@ -1,218 +1,218 @@
years,energy_PJ,elevator_fraction,sites_used,rocket_launches years,energy_PJ,elevator_fraction,sites_used,rocket_launches
100.80160320641282,31721.015809442823,0.5413046092184368,10,366957 100.80160320641282,58502.66949335297,0.5413046092184368,10,366957
101.20240480961924,31637.791423463375,0.5434569138276553,10,365235 101.20240480961924,58278.265807082054,0.5434569138276553,10,365235
101.60320641282566,31554.5415104297,0.5456092184368738,10,363513 101.60320641282566,58053.7879437129,0.5456092184368738,10,363513
102.00400801603206,31471.317124450256,0.5477615230460922,10,361791 102.00400801603206,57829.38425744196,0.5477615230460922,10,361791
102.40480961923848,31388.092738470812,0.5499138276553106,10,360069 102.40480961923848,57604.980571171036,0.5499138276553106,10,360069
102.8056112224449,31304.908639411875,0.552066132264529,10,358348 102.8056112224449,57380.64638263256,0.552066132264529,10,358348
103.2064128256513,31221.684253432435,0.5542184368737475,10,356626 103.2064128256513,57156.24269636164,0.5542184368737475,10,356626
103.60721442885772,31138.459867452988,0.556370741482966,10,354904 103.60721442885772,56931.8390100907,0.556370741482966,10,354904
104.00801603206413,31055.235481473548,0.5585230460921844,10,353182 104.00801603206413,56707.43532381976,0.5585230460921844,10,353182
104.40881763527054,30971.98556843986,0.5606753507014028,10,351460 104.40881763527054,56482.95746045063,0.5606753507014028,10,351460
104.80961923847696,30888.761182460417,0.5628276553106213,10,349738 104.80961923847696,56258.55377417968,0.5628276553106213,10,349738
105.21042084168337,30805.602610455724,0.5649799599198397,10,348017 105.21042084168337,56034.29376273941,0.5649799599198397,10,348017
105.61122244488978,30723.31263851132,0.5671322645290581,9,346295 105.61122244488978,55812.61954842115,0.5671322645290581,9,346295
106.0120240480962,30644.663419167766,0.5692845691382766,9,344573 106.0120240480962,55601.578308804026,0.5692845691382766,9,344573
106.41282565130261,30566.014199824203,0.5714368737474951,9,342851 106.41282565130261,55390.53706918689,0.5714368737474951,9,342851
106.81362725450902,30487.364980480637,0.5735891783567134,9,341129 106.81362725450902,55179.495829569765,0.5735891783567134,9,341129
107.21442885771543,30408.703796829792,0.5757414829659319,9,339407 107.21442885771543,54968.42002485045,0.5757414829659319,9,339407
107.61523046092185,30330.054577486233,0.5778937875751503,9,337685 107.61523046092185,54757.378785233304,0.5778937875751503,9,337685
108.01603206412825,30251.469665145545,0.5800460921843688,9,335964 108.01603206412825,54546.47681911395,0.5800460921843688,9,335964
108.41683366733467,30172.808481494696,0.5821983967935872,9,334242 108.41683366733467,54335.401014394636,0.5821983967935872,9,334242
108.81763527054107,30094.15926215113,0.5843507014028057,9,332520 108.81763527054107,54124.3597747775,0.5843507014028057,9,332520
109.21843687374749,30015.510042807575,0.5865030060120241,9,330798 109.21843687374749,53913.31853516038,0.5865030060120241,9,330798
109.61923847695391,29936.84885915672,0.5886553106212425,9,329076 109.61923847695391,53702.24273044106,0.5886553106212425,9,329076
110.02004008016033,29858.19963981316,0.590807615230461,9,327354 110.02004008016033,53491.20149082393,0.590807615230461,9,327354
110.42084168336673,29779.614727472468,0.5929599198396793,9,325633 110.42084168336673,53280.29952470457,0.5929599198396793,9,325633
110.82164328657315,29700.965508128913,0.5951122244488979,9,323911 110.82164328657315,53069.25828508744,0.5951122244488979,9,323911
111.22244488977955,29624.06439991274,0.5972645290581162,8,322189 111.22244488977955,52863.28684559116,0.5972645290581162,8,322189
111.62324649298597,29547.38750240176,0.5994168336673347,8,320467 111.62324649298597,52657.96550341282,0.5994168336673347,8,320467
112.02404809619239,29470.710604890784,0.6015691382765531,8,318745 112.02404809619239,52452.64416123447,0.6015691382765531,8,318745
112.4248496993988,29394.027202786925,0.6037214428857716,8,317023 112.4248496993988,52247.304087580065,0.6037214428857716,8,317023
112.82565130260521,29317.41392981451,0.60587374749499,8,315302 112.82565130260521,52042.12003969622,0.60587374749499,8,315302
113.22645290581163,29240.73703230353,0.6080260521042085,8,313580 113.22645290581163,51836.79869751787,0.6080260521042085,8,313580
113.62725450901803,29164.060134792555,0.6101783567134269,8,311858 113.62725450901803,51631.47735533953,0.6101783567134269,8,311858
114.02805611222445,29087.376732688695,0.6123306613226454,8,310136 114.02805611222445,51426.13728168512,0.6123306613226454,8,310136
114.42885771543087,29010.699835177722,0.6144829659318638,8,308414 114.42885771543087,51220.815939506785,0.6144829659318638,8,308414
114.82965931863727,28934.02293766674,0.6166352705410821,8,306692 114.82965931863727,51015.49459732843,0.6166352705410821,8,306692
115.23046092184369,28857.33953556288,0.6187875751503006,8,304970 115.23046092184369,50810.15452367403,0.6187875751503006,8,304970
115.6312625250501,28780.726262590473,0.620939879759519,8,303249 115.6312625250501,50604.97047579018,0.620939879759519,8,303249
116.03206412825651,28704.049365079496,0.6230921843687374,8,301527 116.03206412825651,50399.64913361183,0.6230921843687374,8,301527
116.43286573146293,28627.37246756852,0.6252444889779559,8,299805 116.43286573146293,50194.32779143348,0.6252444889779559,8,299805
116.83366733466934,28550.71043327357,0.6273967935871744,7,298083 116.83366733466934,49989.04953865401,0.6273967935871744,7,298083
117.23446893787576,28474.171496392344,0.6295490981963928,7,296361 117.23446893787576,49784.12734113637,0.6295490981963928,7,296361
117.63527054108216,28397.63255951111,0.6317014028056112,7,294639 117.63527054108216,49579.20514361874,0.6317014028056112,7,294639
118.03607214428858,28321.151044238755,0.6338537074148296,7,292918 118.03607214428858,49374.40238168484,0.6338537074148296,7,292918
118.43687374749499,28244.612107357527,0.636006012024048,7,291196 118.43687374749499,49169.48018416721,0.636006012024048,7,291196
118.8376753507014,28168.073170476295,0.6381583166332665,7,289474 118.8376753507014,48964.55798664957,0.6381583166332665,7,289474
119.23847695390782,28091.52808094257,0.640310621242485,7,287752 119.23847695390782,48759.61807588206,0.640310621242485,7,287752
119.63927855711422,28014.989144061346,0.6424629258517034,7,286030 119.63927855711422,48554.69587836443,0.6424629258517034,7,286030
120.04008016032064,27938.45020718012,0.6446152304609218,7,284308 120.04008016032064,48349.773680846796,0.6446152304609218,7,284308
120.44088176352706,27861.911270298886,0.6467675350701403,7,282586 120.44088176352706,48144.85148332917,0.6467675350701403,7,282586
120.84168336673346,27785.429755026526,0.6489198396793586,7,280865 120.84168336673346,47940.04872139528,0.6489198396793586,7,280865
121.24248496993988,27708.890818145297,0.6510721442885772,7,279143 121.24248496993988,47735.12652387765,0.6510721442885772,7,279143
121.6432865731463,27632.351881264072,0.6532244488977956,7,277421 121.6432865731463,47530.20432636001,0.6532244488977956,7,277421
122.0440881763527,27555.80679173035,0.655376753507014,7,275699 122.0440881763527,47325.26441559249,0.655376753507014,7,275699
122.44488977955912,27479.267854849113,0.6575290581162324,7,273977 122.44488977955912,47120.34221807486,0.6575290581162324,7,273977
122.84569138276554,27402.72891796789,0.659681362725451,7,272255 122.84569138276554,46915.420020557234,0.659681362725451,7,272255
123.24649298597194,27326.25355534803,0.6618336673346693,7,270534 123.24649298597194,46710.634971873216,0.6618336673346693,7,270534
123.64729458917836,27249.903497244704,0.6639859719438878,6,268812 123.64729458917836,46506.25904741148,0.6639859719438878,6,268812
124.04809619238478,27173.62124306671,0.6661382765531062,6,267090 124.04809619238478,46302.079117585025,0.6661382765531062,6,267090
124.44889779559118,27097.338988888714,0.6682905811623246,6,265368 124.44889779559118,46097.89918775857,0.6682905811623246,6,265368
124.8496993987976,27021.051174858923,0.6704428857715431,6,263646 124.8496993987976,45893.70325892633,0.6704428857715431,6,263646
125.250501002004,26944.76892068093,0.6725951903807614,6,261924 125.250501002004,45689.52332909988,0.6725951903807614,6,261924
125.65130260521042,26868.55014196419,0.67474749498998,6,260203 125.65130260521042,45485.4802623997,0.67474749498998,6,260203
126.05210420841684,26792.262327934397,0.6768997995991984,6,258481 126.05210420841684,45281.28433356746,0.6768997995991984,6,258481
126.45290581162325,26715.980073756407,0.6790521042084169,6,256759 126.45290581162325,45077.10440374101,0.6790521042084169,6,256759
126.85370741482966,26639.69781957841,0.6812044088176353,6,255037 126.85370741482966,44872.92447391456,0.6812044088176353,6,255037
127.25450901803607,26563.415565400413,0.6833567134268537,6,253315 127.25450901803607,44668.744544088106,0.6833567134268537,6,253315
127.65531062124248,26487.127751370626,0.6855090180360721,6,251593 127.65531062124248,44464.548615255866,0.6855090180360721,6,251593
128.0561122244489,26410.84549719263,0.6876613226452907,6,249871 128.0561122244489,44260.36868542941,0.6876613226452907,6,249871
128.4569138276553,26334.626718475887,0.689813627254509,6,248150 128.4569138276553,44056.32561872923,0.689813627254509,6,248150
128.85771543086173,26258.3389044461,0.6919659318637276,6,246428 128.85771543086173,43852.129689896996,0.6919659318637276,6,246428
129.25851703406815,26182.0566502681,0.6941182364729459,6,244706 129.25851703406815,43647.94976007055,0.6941182364729459,6,244706
129.65931863727454,26105.774396090103,0.6962705410821642,6,242984 129.65931863727454,43443.7698302441,0.6962705410821642,6,242984
130.06012024048096,26029.49214191211,0.6984228456913827,6,241262 130.06012024048096,43239.589900417646,0.6984228456913827,6,241262
130.46092184368737,25953.20432788232,0.7005751503006011,6,239540 130.46092184368737,43035.3939715854,0.7005751503006011,6,239540
130.8617234468938,25877.277074070076,0.7027274549098197,5,237819 130.8617234468938,42832.192854651665,0.7027274549098197,5,237819
131.2625250501002,25801.708924852963,0.704879759519038,5,236097 131.2625250501002,42630.07532325409,0.704879759519038,5,236097
131.66332665330663,25726.13667195241,0.7070320641282566,5,234375 131.66332665330663,42427.94599839402,0.7070320641282566,5,234375
132.06412825651302,25650.568522735288,0.7091843687374748,5,232653 132.06412825651302,42225.82846699645,0.7091843687374748,5,232653
132.46492985971943,25575.00037351817,0.7113366733466934,5,230931 132.46492985971943,42023.71093559887,0.7113366733466934,5,230931
132.86573146292585,25499.432224301057,0.7134889779559117,5,229209 132.86573146292585,41821.5934042013,0.7134889779559117,5,229209
133.26653306613227,25423.8599714005,0.7156412825651303,5,227487 133.26653306613227,41619.46407934123,0.7156412825651303,5,227487
133.6673346693387,25348.355006410962,0.7177935871743487,5,225766 133.6673346693387,41417.482569961256,0.7177935871743487,5,225766
134.06813627254508,25272.78685719384,0.719945891783567,5,224044 134.06813627254508,41215.365038563694,0.719945891783567,5,224044
134.46893787575152,25197.214604293287,0.7220981963927856,5,222322 134.46893787575152,41013.23571370362,0.7220981963927856,5,222322
134.8697394789579,25121.646455076167,0.7242505010020039,5,220600 134.8697394789579,40811.118182306054,0.7242505010020039,5,220600
135.27054108216433,25046.078305859057,0.7264028056112224,5,218878 135.27054108216433,40609.000650908485,0.7264028056112224,5,218878
135.67134268537075,24970.506052958503,0.728555110220441,5,217156 135.67134268537075,40406.8713260484,0.728555110220441,5,217156
136.07214428857716,24895.00108796896,0.7307074148296593,5,215435 136.07214428857716,40204.889816668445,0.7307074148296593,5,215435
136.47294589178358,24819.432938751845,0.7328597194388778,5,213713 136.47294589178358,40002.772285270876,0.7328597194388778,5,213713
136.87374749498997,24743.864789534724,0.7350120240480961,5,211991 136.87374749498997,39800.65475387331,0.7350120240480961,5,211991
137.2745490981964,24668.29253663417,0.7371643286573146,5,210269 137.2745490981964,39598.525429013236,0.7371643286573146,5,210269
137.6753507014028,24592.724387417056,0.739316633266533,5,208547 137.6753507014028,39396.40789761566,0.739316633266533,5,208547
138.07615230460922,24517.15623819994,0.7414689378757515,5,206825 138.07615230460922,39194.29036621809,0.7414689378757515,5,206825
138.47695390781564,24441.647169526965,0.74362124248497,5,205104 138.47695390781564,38992.29706337563,0.74362124248497,5,205104
138.87775551102203,24366.079020309848,0.7457735470941883,5,203382 138.87775551102203,38790.17953197806,0.7457735470941883,5,203382
139.27855711422845,24291.37393740676,0.7479258517034068,4,201660 139.27855711422845,38590.54805369434,0.7479258517034068,4,201660
139.67935871743487,24216.987635529404,0.7500781563126253,4,199938 139.67935871743487,38391.83482068189,0.7500781563126253,4,199938
140.08016032064128,24142.599280007358,0.7522304609218436,4,198216 140.08016032064128,38193.11569932123,0.7522304609218436,4,198216
140.4809619238477,24068.212978130003,0.7543827655310622,4,196494 140.4809619238477,37994.402466308784,0.7543827655310622,4,196494
140.88176352705412,23993.826676252647,0.7565350701402805,4,194772 140.88176352705412,37795.68923329634,0.7565350701402805,4,194772
141.28256513026054,23919.500992448495,0.7586873747494991,4,193051 141.28256513026054,37597.10465767472,0.7586873747494991,4,193051
141.68336673346693,23845.114690571136,0.7608396793587173,4,191329 141.68336673346693,37398.39142466227,0.7608396793587173,4,191329
142.08416833667334,23770.728388693777,0.7629919839679359,4,189607 142.08416833667334,37199.67819164982,0.7629919839679359,4,189607
142.48496993987976,23696.340033171735,0.7651442885771543,4,187885 142.48496993987976,37000.959070289166,0.7651442885771543,4,187885
142.88577154308618,23621.95373129438,0.7672965931863728,4,186163 142.88577154308618,36802.245837276714,0.7672965931863728,4,186163
143.2865731462926,23547.567429417024,0.7694488977955912,4,184441 143.2865731462926,36603.53260426427,0.7694488977955912,4,184441
143.68737474949899,23473.243799257554,0.7716012024048096,4,182720 143.68737474949899,36404.95391699087,0.7716012024048096,4,182720
144.0881763527054,23398.855443735512,0.773753507014028,4,180998 144.0881763527054,36206.2347956302,0.773753507014028,4,180998
144.48897795591182,23324.469141858157,0.7759058116232466,4,179276 144.48897795591182,36007.52156261776,0.7759058116232466,4,179276
144.88977955911824,23250.0828399808,0.7780581162324649,4,177554 144.88977955911824,35808.808329605316,0.7780581162324649,4,177554
145.29058116232466,23175.69448445876,0.7802104208416835,4,175832 145.29058116232466,35610.08920824465,0.7802104208416835,4,175832
145.69138276553107,23101.308182581404,0.7823627254509018,4,174110 145.69138276553107,35411.3759752322,0.7823627254509018,4,174110
146.0921843687375,23026.92188070405,0.7845150300601204,4,172388 146.0921843687375,35212.662742219756,0.7845150300601204,4,172388
146.49298597194388,22952.59825054458,0.7866673346693386,4,170667 146.49298597194388,35014.084054946354,0.7866673346693386,4,170667
146.8937875751503,22878.209895022537,0.7888196392785571,4,168945 146.8937875751503,34815.36493358569,0.7888196392785571,4,168945
147.29458917835672,22803.82359314518,0.7909719438877756,4,167223 147.29458917835672,34616.65170057324,0.7909719438877756,4,167223
147.69539078156313,22729.437291267826,0.793124248496994,4,165501 147.69539078156313,34417.938467560794,0.793124248496994,4,165501
148.09619238476955,22655.04893574578,0.7952765531062125,4,163779 148.09619238476955,34219.21934620013,0.7952765531062125,4,163779
148.49699398797594,22580.760701549138,0.7974288577154308,3,162057 148.49699398797594,34020.787953326995,0.7974288577154308,3,162057
148.89779559118236,22506.82485183411,0.7995811623246493,3,160336 148.89779559118236,33823.32372184254,0.7995811623246493,3,160336
149.29859719438878,22432.826510012335,0.8017334669338678,3,158614 149.29859719438878,33625.72546080977,0.8017334669338678,3,158614
149.6993987975952,22358.826653379274,0.8038857715430862,3,156892 149.6993987975952,33428.12286000098,0.8038857715430862,3,156892
150.1002004008016,22284.828311557496,0.8060380761523047,3,155170 150.1002004008016,33230.524598968215,0.8060380761523047,3,155170
150.501002004008,22210.829969735714,0.8081903807615229,3,153448 150.501002004008,33032.92633793545,0.8081903807615229,3,153448
150.90180360721445,22136.83011310266,0.8103426853707416,3,151726 150.90180360721445,32835.32373712666,0.8103426853707416,3,151726
151.30260521042084,22062.894263387632,0.8124949899799598,3,150005 151.30260521042084,32637.859505642202,0.8124949899799598,3,150005
151.70340681362725,21988.89592156585,0.8146472945891784,3,148283 151.70340681362725,32440.261244609435,0.8146472945891784,3,148283
152.10420841683367,21914.89606493279,0.8167995991983968,3,146561 152.10420841683367,32242.658643800638,0.8167995991983968,3,146561
152.5050100200401,21840.897723111015,0.8189519038076153,3,144839 152.5050100200401,32045.060382767875,0.8189519038076153,3,144839
152.9058116232465,21766.899381289233,0.8211042084168337,3,143117 152.9058116232465,31847.462121735112,0.8211042084168337,3,143117
153.3066132264529,21692.901039467455,0.8232565130260521,3,141395 153.3066132264529,31649.863860702346,0.8232565130260521,3,141395
153.7074148296593,21618.901182834394,0.8254088176352705,3,139673 153.7074148296593,31452.261259893556,0.8254088176352705,3,139673
154.10821643286573,21544.96533311937,0.8275611222444891,3,137952 154.10821643286573,31254.7970284091,0.8275611222444891,3,137952
154.50901803607215,21470.966991297588,0.8297134268537074,3,136230 154.50901803607215,31057.198767376332,0.8297134268537074,3,136230
154.90981963927857,21396.967134664534,0.831865731462926,3,134508 154.90981963927857,30859.59616656754,0.831865731462926,3,134508
155.31062124248496,21322.96879284275,0.8340180360721442,3,132786 155.31062124248496,30661.997905534772,0.8340180360721442,3,132786
155.7114228456914,21248.97045102097,0.8361703406813629,3,131064 155.7114228456914,30464.39964450201,0.8361703406813629,3,131064
156.1122244488978,21174.97210919919,0.8383226452905811,3,129342 156.1122244488978,30266.801383469236,0.8383226452905811,3,129342
156.5130260521042,21101.03474467289,0.8404749498997997,3,127621 156.5130260521042,30069.33281220876,0.8404749498997997,3,127621
156.91382765531063,21027.036402851107,0.8426272545090181,3,125899 156.91382765531063,29871.734551175996,0.8426272545090181,3,125899
157.31462925851704,20953.038061029325,0.8447795591182367,3,124177 157.31462925851704,29674.13629014323,0.8447795591182367,3,124177
157.71543086172346,20879.03820439627,0.846931863727455,3,122455 157.71543086172346,29476.533689334432,0.846931863727455,3,122455
158.11623246492985,20805.039862574486,0.8490841683366732,3,120733 158.11623246492985,29278.93542830167,0.8490841683366732,3,120733
158.51703406813627,20731.041520752704,0.8512364729458918,3,119011 158.51703406813627,29081.3371672689,0.8512364729458918,3,119011
158.9178356713427,20657.04166411965,0.8533887775551101,3,117289 158.9178356713427,28883.734566460105,0.8533887775551101,3,117289
159.3186372745491,20583.582596109063,0.8555410821643287,2,115568 159.3186372745491,28687.63682304137,0.8555410821643287,2,115568
159.71943887775552,20510.89248092589,0.8576933867735471,2,113846 159.71943887775552,28493.788026537677,0.8576933867735471,2,113846
160.1202404809619,20438.202365742713,0.8598456913827655,2,112124 160.1202404809619,28299.939230033986,0.8598456913827655,2,112124
160.52104208416833,20365.512034880972,0.8619979959919839,2,110402 160.52104208416833,28106.089817154992,0.8619979959919839,2,110402
160.92184368737475,20292.8219196978,0.8641503006012023,2,108680 160.92184368737475,27912.24102065131,0.8641503006012023,2,108680
161.32264529058116,20220.13180451462,0.8663026052104208,2,106958 161.32264529058116,27718.39222414762,0.8663026052104208,2,106958
161.72344689378758,20147.50331619328,0.8684549098196394,2,105237 161.72344689378758,27524.67497911658,0.8684549098196394,2,105237
162.124248496994,20074.813201010107,0.8706072144288577,2,103515 162.124248496994,27330.826182612884,0.8706072144288577,2,103515
162.52505010020042,20002.123085826937,0.8727595190380762,2,101793 162.52505010020042,27136.977386109204,0.8727595190380762,2,101793
162.9258517034068,19929.43297064376,0.8749118236472945,2,100071 162.9258517034068,26943.128589605512,0.8749118236472945,2,100071
163.32665330661322,19856.74263978202,0.877064128256513,2,98349 163.32665330661322,26749.27917672652,0.877064128256513,2,98349
163.72745490981964,19784.052524598847,0.8792164328657314,2,96627 163.72745490981964,26555.43038022283,0.8792164328657314,2,96627
164.12825651302606,19711.424251956072,0.8813687374749499,2,94906 164.12825651302606,26361.71375156709,0.8813687374749499,2,94906
164.52905811623248,19638.73392109433,0.8835210420841684,2,93184 164.52905811623248,26167.864338688098,0.8835210420841684,2,93184
164.92985971943887,19566.043805911155,0.8856733466933867,2,91462 164.92985971943887,25974.01554218441,0.8856733466933867,2,91462
165.3306613226453,19493.35369072798,0.8878256513026053,2,89740 165.3306613226453,25780.166745680723,0.8878256513026053,2,89740
165.7314629258517,19420.663575544808,0.8899779559118237,2,88018 165.7314629258517,25586.317949177035,0.8899779559118237,2,88018
166.13226452905812,19347.973244683064,0.892130260521042,2,86296 166.13226452905812,25392.468536298045,0.892130260521042,2,86296
166.53306613226454,19275.283129499894,0.8942825651302606,2,84574 166.53306613226454,25198.619739794354,0.8942825651302606,2,84574
166.93386773547093,19202.654856857116,0.8964348697394788,2,82853 166.93386773547093,25004.90311113861,0.8964348697394788,2,82853
167.33466933867737,19129.964525995376,0.8985871743486975,2,81131 167.33466933867737,24811.053698259624,0.8985871743486975,2,81131
167.73547094188376,19057.2744108122,0.9007394789579157,2,79409 167.73547094188376,24617.204901755933,0.9007394789579157,2,79409
168.13627254509018,18984.58429562903,0.9028917835671343,2,77687 168.13627254509018,24423.35610525225,0.9028917835671343,2,77687
168.5370741482966,18911.893964767285,0.9050440881763527,2,75965 168.5370741482966,24229.50669237326,0.9050440881763527,2,75965
168.93787575150301,18839.20384958411,0.9071963927855712,2,74243 168.93787575150301,24035.657895869568,0.9071963927855712,2,74243
169.33867735470943,18766.575576941337,0.9093486973947896,2,72522 169.33867735470943,23841.941267213828,0.9093486973947896,2,72522
169.73947895791582,18693.885461758164,0.911501002004008,2,70800 169.73947895791582,23648.092470710137,0.911501002004008,2,70800
170.14028056112227,18621.19513089642,0.9136533066132265,2,69078 170.14028056112227,23454.243057831147,0.9136533066132265,2,69078
170.54108216432866,18548.505015713246,0.915805611222445,2,67356 170.54108216432866,23260.39426132746,0.915805611222445,2,67356
170.94188376753507,18475.814900530073,0.9179579158316633,2,65634 170.94188376753507,23066.54546482377,0.9179579158316633,2,65634
171.3426853707415,18403.124569668333,0.9201102204408819,2,63912 171.3426853707415,22872.69605194478,0.9201102204408819,2,63912
171.74348697394788,18330.54143105545,0.9222625250501001,1,62190 171.74348697394788,22679.15297759127,0.9222625250501001,1,62190
172.14428857715433,18258.315830301275,0.9244148296593188,1,60469 172.14428857715433,22486.587121625835,0.9244148296593188,1,60469
172.54509018036072,18186.02860268526,0.926567134268537,1,58747 172.54509018036072,22293.889714187746,0.926567134268537,1,58747
172.94589178356713,18113.741375069247,0.9287194388777555,1,57025 172.94589178356713,22101.19230674966,0.9287194388777555,1,57025
173.34669338677355,18041.454147453234,0.930871743486974,1,55303 173.34669338677355,21908.494899311576,0.930871743486974,1,55303
173.74749498997994,17969.166919837222,0.9330240480961923,1,53581 173.74749498997994,21715.797491873487,0.9330240480961923,1,53581
174.1482965931864,17896.87969222121,0.9351763527054109,1,51859 174.1482965931864,21523.10008443541,0.9351763527054109,1,51859
174.54909819639278,17824.65409146703,0.9373286573146292,1,50138 174.54909819639278,21330.53422846997,0.9373286573146292,1,50138
174.9498997995992,17752.366863851017,0.9394809619238477,1,48416 174.9498997995992,21137.836821031884,0.9394809619238477,1,48416
175.3507014028056,17680.079636235005,0.9416332665330662,1,46694 175.3507014028056,20945.1394135938,0.9416332665330662,1,46694
175.75150300601203,17607.792408618992,0.9437855711422846,1,44972 175.75150300601203,20752.442006155714,0.9437855711422846,1,44972
176.15230460921845,17535.50518100298,0.9459378757515031,1,43250 176.15230460921845,20559.74459871763,0.9459378757515031,1,43250
176.55310621242484,17463.217953386964,0.9480901803607213,1,41528 176.55310621242484,20367.047191279544,0.9480901803607213,1,41528
176.95390781563128,17390.992352632788,0.95024248496994,1,39807 176.95390781563128,20174.481335314107,0.95024248496994,1,39807
177.35470941883767,17318.70512501677,0.9523947895791582,1,38085 177.35470941883767,19981.78392787602,0.9523947895791582,1,38085
177.7555110220441,17246.41789740076,0.9545470941883768,1,36363 177.7555110220441,19789.086520437937,0.9545470941883768,1,36363
178.1563126252505,17174.130669784747,0.9566993987975952,1,34641 178.1563126252505,19596.38911299985,0.9566993987975952,1,34641
178.5571142284569,17101.843442168734,0.9588517034068136,1,32919 178.5571142284569,19403.691705561763,0.9588517034068136,1,32919
178.95791583166334,17029.556214552722,0.9610040080160321,1,31197 178.95791583166334,19210.99429812368,0.9610040080160321,1,31197
179.35871743486973,16957.26898693671,0.9631563126252505,1,29475 179.35871743486973,19018.296890685597,0.9631563126252505,1,29475
179.75951903807615,16885.043386182526,0.9653086172344689,1,27754 179.75951903807615,18825.731034720153,0.9653086172344689,1,27754
180.16032064128257,16812.756158566517,0.9674609218436875,1,26032 180.16032064128257,18633.03362728207,0.9674609218436875,1,26032
180.56112224448898,16740.468930950505,0.9696132264529058,1,24310 180.56112224448898,18440.336219843986,0.9696132264529058,1,24310
180.9619238476954,16668.181703334492,0.9717655310621244,1,22588 180.9619238476954,18247.638812405905,0.9717655310621244,1,22588
181.3627254509018,16595.894475718476,0.9739178356713426,1,20866 181.3627254509018,18054.941404967816,0.9739178356713426,1,20866
181.76352705410824,16523.607248102468,0.9760701402805613,1,19144 181.76352705410824,17862.243997529735,0.9760701402805613,1,19144
182.16432865731463,16451.381647348284,0.9782224448897795,1,17423 182.16432865731463,17669.67814156429,0.9782224448897795,1,17423
182.56513026052104,16379.094419732273,0.980374749498998,1,15701 182.56513026052104,17476.980734126206,0.980374749498998,1,15701
182.96593186372746,16306.80719211626,0.9825270541082165,1,13979 182.96593186372746,17284.283326688124,0.9825270541082165,1,13979
183.36673346693385,16234.519964500247,0.9846793587174348,1,12257 183.36673346693385,17091.585919250036,0.9846793587174348,1,12257
183.7675350701403,16162.232736884236,0.9868316633266534,1,10535 183.7675350701403,16898.888511811954,0.9868316633266534,1,10535
184.1683366733467,16089.945509268222,0.9889839679358717,1,8813 184.1683366733467,16706.19110437387,0.9889839679358717,1,8813
184.5691382765531,16017.65828165221,0.9911362725450902,1,7091 184.5691382765531,16513.493696935784,0.9911362725450902,1,7091
184.96993987975952,15945.43268089803,0.9932885771543087,1,5370 184.96993987975952,16320.927840970344,0.9932885771543087,1,5370
185.37074148296594,15873.145453282015,0.9954408817635271,1,3648 185.37074148296594,16128.230433532259,0.9954408817635271,1,3648
185.77154308617236,15800.858225666005,0.9975931863727456,1,1926 185.77154308617236,15935.533026094176,0.9975931863727456,1,1926
186.17234468937875,15728.570998049989,0.9997454909819639,1,204 186.17234468937875,15742.835618656089,0.9997454909819639,1,204
186.5731462925852,15720.0,1.0,0,0 186.5731462925852,15720.0,1.0,0,0
186.97394789579158,15720.0,1.0,0,0 186.97394789579158,15720.0,1.0,0,0
187.374749498998,15720.0,1.0,0,0 187.374749498998,15720.0,1.0,0,0
1 years energy_PJ elevator_fraction sites_used rocket_launches
2 100.80160320641282 31721.015809442823 58502.66949335297 0.5413046092184368 10 366957
3 101.20240480961924 31637.791423463375 58278.265807082054 0.5434569138276553 10 365235
4 101.60320641282566 31554.5415104297 58053.7879437129 0.5456092184368738 10 363513
5 102.00400801603206 31471.317124450256 57829.38425744196 0.5477615230460922 10 361791
6 102.40480961923848 31388.092738470812 57604.980571171036 0.5499138276553106 10 360069
7 102.8056112224449 31304.908639411875 57380.64638263256 0.552066132264529 10 358348
8 103.2064128256513 31221.684253432435 57156.24269636164 0.5542184368737475 10 356626
9 103.60721442885772 31138.459867452988 56931.8390100907 0.556370741482966 10 354904
10 104.00801603206413 31055.235481473548 56707.43532381976 0.5585230460921844 10 353182
11 104.40881763527054 30971.98556843986 56482.95746045063 0.5606753507014028 10 351460
12 104.80961923847696 30888.761182460417 56258.55377417968 0.5628276553106213 10 349738
13 105.21042084168337 30805.602610455724 56034.29376273941 0.5649799599198397 10 348017
14 105.61122244488978 30723.31263851132 55812.61954842115 0.5671322645290581 9 346295
15 106.0120240480962 30644.663419167766 55601.578308804026 0.5692845691382766 9 344573
16 106.41282565130261 30566.014199824203 55390.53706918689 0.5714368737474951 9 342851
17 106.81362725450902 30487.364980480637 55179.495829569765 0.5735891783567134 9 341129
18 107.21442885771543 30408.703796829792 54968.42002485045 0.5757414829659319 9 339407
19 107.61523046092185 30330.054577486233 54757.378785233304 0.5778937875751503 9 337685
20 108.01603206412825 30251.469665145545 54546.47681911395 0.5800460921843688 9 335964
21 108.41683366733467 30172.808481494696 54335.401014394636 0.5821983967935872 9 334242
22 108.81763527054107 30094.15926215113 54124.3597747775 0.5843507014028057 9 332520
23 109.21843687374749 30015.510042807575 53913.31853516038 0.5865030060120241 9 330798
24 109.61923847695391 29936.84885915672 53702.24273044106 0.5886553106212425 9 329076
25 110.02004008016033 29858.19963981316 53491.20149082393 0.590807615230461 9 327354
26 110.42084168336673 29779.614727472468 53280.29952470457 0.5929599198396793 9 325633
27 110.82164328657315 29700.965508128913 53069.25828508744 0.5951122244488979 9 323911
28 111.22244488977955 29624.06439991274 52863.28684559116 0.5972645290581162 8 322189
29 111.62324649298597 29547.38750240176 52657.96550341282 0.5994168336673347 8 320467
30 112.02404809619239 29470.710604890784 52452.64416123447 0.6015691382765531 8 318745
31 112.4248496993988 29394.027202786925 52247.304087580065 0.6037214428857716 8 317023
32 112.82565130260521 29317.41392981451 52042.12003969622 0.60587374749499 8 315302
33 113.22645290581163 29240.73703230353 51836.79869751787 0.6080260521042085 8 313580
34 113.62725450901803 29164.060134792555 51631.47735533953 0.6101783567134269 8 311858
35 114.02805611222445 29087.376732688695 51426.13728168512 0.6123306613226454 8 310136
36 114.42885771543087 29010.699835177722 51220.815939506785 0.6144829659318638 8 308414
37 114.82965931863727 28934.02293766674 51015.49459732843 0.6166352705410821 8 306692
38 115.23046092184369 28857.33953556288 50810.15452367403 0.6187875751503006 8 304970
39 115.6312625250501 28780.726262590473 50604.97047579018 0.620939879759519 8 303249
40 116.03206412825651 28704.049365079496 50399.64913361183 0.6230921843687374 8 301527
41 116.43286573146293 28627.37246756852 50194.32779143348 0.6252444889779559 8 299805
42 116.83366733466934 28550.71043327357 49989.04953865401 0.6273967935871744 7 298083
43 117.23446893787576 28474.171496392344 49784.12734113637 0.6295490981963928 7 296361
44 117.63527054108216 28397.63255951111 49579.20514361874 0.6317014028056112 7 294639
45 118.03607214428858 28321.151044238755 49374.40238168484 0.6338537074148296 7 292918
46 118.43687374749499 28244.612107357527 49169.48018416721 0.636006012024048 7 291196
47 118.8376753507014 28168.073170476295 48964.55798664957 0.6381583166332665 7 289474
48 119.23847695390782 28091.52808094257 48759.61807588206 0.640310621242485 7 287752
49 119.63927855711422 28014.989144061346 48554.69587836443 0.6424629258517034 7 286030
50 120.04008016032064 27938.45020718012 48349.773680846796 0.6446152304609218 7 284308
51 120.44088176352706 27861.911270298886 48144.85148332917 0.6467675350701403 7 282586
52 120.84168336673346 27785.429755026526 47940.04872139528 0.6489198396793586 7 280865
53 121.24248496993988 27708.890818145297 47735.12652387765 0.6510721442885772 7 279143
54 121.6432865731463 27632.351881264072 47530.20432636001 0.6532244488977956 7 277421
55 122.0440881763527 27555.80679173035 47325.26441559249 0.655376753507014 7 275699
56 122.44488977955912 27479.267854849113 47120.34221807486 0.6575290581162324 7 273977
57 122.84569138276554 27402.72891796789 46915.420020557234 0.659681362725451 7 272255
58 123.24649298597194 27326.25355534803 46710.634971873216 0.6618336673346693 7 270534
59 123.64729458917836 27249.903497244704 46506.25904741148 0.6639859719438878 6 268812
60 124.04809619238478 27173.62124306671 46302.079117585025 0.6661382765531062 6 267090
61 124.44889779559118 27097.338988888714 46097.89918775857 0.6682905811623246 6 265368
62 124.8496993987976 27021.051174858923 45893.70325892633 0.6704428857715431 6 263646
63 125.250501002004 26944.76892068093 45689.52332909988 0.6725951903807614 6 261924
64 125.65130260521042 26868.55014196419 45485.4802623997 0.67474749498998 6 260203
65 126.05210420841684 26792.262327934397 45281.28433356746 0.6768997995991984 6 258481
66 126.45290581162325 26715.980073756407 45077.10440374101 0.6790521042084169 6 256759
67 126.85370741482966 26639.69781957841 44872.92447391456 0.6812044088176353 6 255037
68 127.25450901803607 26563.415565400413 44668.744544088106 0.6833567134268537 6 253315
69 127.65531062124248 26487.127751370626 44464.548615255866 0.6855090180360721 6 251593
70 128.0561122244489 26410.84549719263 44260.36868542941 0.6876613226452907 6 249871
71 128.4569138276553 26334.626718475887 44056.32561872923 0.689813627254509 6 248150
72 128.85771543086173 26258.3389044461 43852.129689896996 0.6919659318637276 6 246428
73 129.25851703406815 26182.0566502681 43647.94976007055 0.6941182364729459 6 244706
74 129.65931863727454 26105.774396090103 43443.7698302441 0.6962705410821642 6 242984
75 130.06012024048096 26029.49214191211 43239.589900417646 0.6984228456913827 6 241262
76 130.46092184368737 25953.20432788232 43035.3939715854 0.7005751503006011 6 239540
77 130.8617234468938 25877.277074070076 42832.192854651665 0.7027274549098197 5 237819
78 131.2625250501002 25801.708924852963 42630.07532325409 0.704879759519038 5 236097
79 131.66332665330663 25726.13667195241 42427.94599839402 0.7070320641282566 5 234375
80 132.06412825651302 25650.568522735288 42225.82846699645 0.7091843687374748 5 232653
81 132.46492985971943 25575.00037351817 42023.71093559887 0.7113366733466934 5 230931
82 132.86573146292585 25499.432224301057 41821.5934042013 0.7134889779559117 5 229209
83 133.26653306613227 25423.8599714005 41619.46407934123 0.7156412825651303 5 227487
84 133.6673346693387 25348.355006410962 41417.482569961256 0.7177935871743487 5 225766
85 134.06813627254508 25272.78685719384 41215.365038563694 0.719945891783567 5 224044
86 134.46893787575152 25197.214604293287 41013.23571370362 0.7220981963927856 5 222322
87 134.8697394789579 25121.646455076167 40811.118182306054 0.7242505010020039 5 220600
88 135.27054108216433 25046.078305859057 40609.000650908485 0.7264028056112224 5 218878
89 135.67134268537075 24970.506052958503 40406.8713260484 0.728555110220441 5 217156
90 136.07214428857716 24895.00108796896 40204.889816668445 0.7307074148296593 5 215435
91 136.47294589178358 24819.432938751845 40002.772285270876 0.7328597194388778 5 213713
92 136.87374749498997 24743.864789534724 39800.65475387331 0.7350120240480961 5 211991
93 137.2745490981964 24668.29253663417 39598.525429013236 0.7371643286573146 5 210269
94 137.6753507014028 24592.724387417056 39396.40789761566 0.739316633266533 5 208547
95 138.07615230460922 24517.15623819994 39194.29036621809 0.7414689378757515 5 206825
96 138.47695390781564 24441.647169526965 38992.29706337563 0.74362124248497 5 205104
97 138.87775551102203 24366.079020309848 38790.17953197806 0.7457735470941883 5 203382
98 139.27855711422845 24291.37393740676 38590.54805369434 0.7479258517034068 4 201660
99 139.67935871743487 24216.987635529404 38391.83482068189 0.7500781563126253 4 199938
100 140.08016032064128 24142.599280007358 38193.11569932123 0.7522304609218436 4 198216
101 140.4809619238477 24068.212978130003 37994.402466308784 0.7543827655310622 4 196494
102 140.88176352705412 23993.826676252647 37795.68923329634 0.7565350701402805 4 194772
103 141.28256513026054 23919.500992448495 37597.10465767472 0.7586873747494991 4 193051
104 141.68336673346693 23845.114690571136 37398.39142466227 0.7608396793587173 4 191329
105 142.08416833667334 23770.728388693777 37199.67819164982 0.7629919839679359 4 189607
106 142.48496993987976 23696.340033171735 37000.959070289166 0.7651442885771543 4 187885
107 142.88577154308618 23621.95373129438 36802.245837276714 0.7672965931863728 4 186163
108 143.2865731462926 23547.567429417024 36603.53260426427 0.7694488977955912 4 184441
109 143.68737474949899 23473.243799257554 36404.95391699087 0.7716012024048096 4 182720
110 144.0881763527054 23398.855443735512 36206.2347956302 0.773753507014028 4 180998
111 144.48897795591182 23324.469141858157 36007.52156261776 0.7759058116232466 4 179276
112 144.88977955911824 23250.0828399808 35808.808329605316 0.7780581162324649 4 177554
113 145.29058116232466 23175.69448445876 35610.08920824465 0.7802104208416835 4 175832
114 145.69138276553107 23101.308182581404 35411.3759752322 0.7823627254509018 4 174110
115 146.0921843687375 23026.92188070405 35212.662742219756 0.7845150300601204 4 172388
116 146.49298597194388 22952.59825054458 35014.084054946354 0.7866673346693386 4 170667
117 146.8937875751503 22878.209895022537 34815.36493358569 0.7888196392785571 4 168945
118 147.29458917835672 22803.82359314518 34616.65170057324 0.7909719438877756 4 167223
119 147.69539078156313 22729.437291267826 34417.938467560794 0.793124248496994 4 165501
120 148.09619238476955 22655.04893574578 34219.21934620013 0.7952765531062125 4 163779
121 148.49699398797594 22580.760701549138 34020.787953326995 0.7974288577154308 3 162057
122 148.89779559118236 22506.82485183411 33823.32372184254 0.7995811623246493 3 160336
123 149.29859719438878 22432.826510012335 33625.72546080977 0.8017334669338678 3 158614
124 149.6993987975952 22358.826653379274 33428.12286000098 0.8038857715430862 3 156892
125 150.1002004008016 22284.828311557496 33230.524598968215 0.8060380761523047 3 155170
126 150.501002004008 22210.829969735714 33032.92633793545 0.8081903807615229 3 153448
127 150.90180360721445 22136.83011310266 32835.32373712666 0.8103426853707416 3 151726
128 151.30260521042084 22062.894263387632 32637.859505642202 0.8124949899799598 3 150005
129 151.70340681362725 21988.89592156585 32440.261244609435 0.8146472945891784 3 148283
130 152.10420841683367 21914.89606493279 32242.658643800638 0.8167995991983968 3 146561
131 152.5050100200401 21840.897723111015 32045.060382767875 0.8189519038076153 3 144839
132 152.9058116232465 21766.899381289233 31847.462121735112 0.8211042084168337 3 143117
133 153.3066132264529 21692.901039467455 31649.863860702346 0.8232565130260521 3 141395
134 153.7074148296593 21618.901182834394 31452.261259893556 0.8254088176352705 3 139673
135 154.10821643286573 21544.96533311937 31254.7970284091 0.8275611222444891 3 137952
136 154.50901803607215 21470.966991297588 31057.198767376332 0.8297134268537074 3 136230
137 154.90981963927857 21396.967134664534 30859.59616656754 0.831865731462926 3 134508
138 155.31062124248496 21322.96879284275 30661.997905534772 0.8340180360721442 3 132786
139 155.7114228456914 21248.97045102097 30464.39964450201 0.8361703406813629 3 131064
140 156.1122244488978 21174.97210919919 30266.801383469236 0.8383226452905811 3 129342
141 156.5130260521042 21101.03474467289 30069.33281220876 0.8404749498997997 3 127621
142 156.91382765531063 21027.036402851107 29871.734551175996 0.8426272545090181 3 125899
143 157.31462925851704 20953.038061029325 29674.13629014323 0.8447795591182367 3 124177
144 157.71543086172346 20879.03820439627 29476.533689334432 0.846931863727455 3 122455
145 158.11623246492985 20805.039862574486 29278.93542830167 0.8490841683366732 3 120733
146 158.51703406813627 20731.041520752704 29081.3371672689 0.8512364729458918 3 119011
147 158.9178356713427 20657.04166411965 28883.734566460105 0.8533887775551101 3 117289
148 159.3186372745491 20583.582596109063 28687.63682304137 0.8555410821643287 2 115568
149 159.71943887775552 20510.89248092589 28493.788026537677 0.8576933867735471 2 113846
150 160.1202404809619 20438.202365742713 28299.939230033986 0.8598456913827655 2 112124
151 160.52104208416833 20365.512034880972 28106.089817154992 0.8619979959919839 2 110402
152 160.92184368737475 20292.8219196978 27912.24102065131 0.8641503006012023 2 108680
153 161.32264529058116 20220.13180451462 27718.39222414762 0.8663026052104208 2 106958
154 161.72344689378758 20147.50331619328 27524.67497911658 0.8684549098196394 2 105237
155 162.124248496994 20074.813201010107 27330.826182612884 0.8706072144288577 2 103515
156 162.52505010020042 20002.123085826937 27136.977386109204 0.8727595190380762 2 101793
157 162.9258517034068 19929.43297064376 26943.128589605512 0.8749118236472945 2 100071
158 163.32665330661322 19856.74263978202 26749.27917672652 0.877064128256513 2 98349
159 163.72745490981964 19784.052524598847 26555.43038022283 0.8792164328657314 2 96627
160 164.12825651302606 19711.424251956072 26361.71375156709 0.8813687374749499 2 94906
161 164.52905811623248 19638.73392109433 26167.864338688098 0.8835210420841684 2 93184
162 164.92985971943887 19566.043805911155 25974.01554218441 0.8856733466933867 2 91462
163 165.3306613226453 19493.35369072798 25780.166745680723 0.8878256513026053 2 89740
164 165.7314629258517 19420.663575544808 25586.317949177035 0.8899779559118237 2 88018
165 166.13226452905812 19347.973244683064 25392.468536298045 0.892130260521042 2 86296
166 166.53306613226454 19275.283129499894 25198.619739794354 0.8942825651302606 2 84574
167 166.93386773547093 19202.654856857116 25004.90311113861 0.8964348697394788 2 82853
168 167.33466933867737 19129.964525995376 24811.053698259624 0.8985871743486975 2 81131
169 167.73547094188376 19057.2744108122 24617.204901755933 0.9007394789579157 2 79409
170 168.13627254509018 18984.58429562903 24423.35610525225 0.9028917835671343 2 77687
171 168.5370741482966 18911.893964767285 24229.50669237326 0.9050440881763527 2 75965
172 168.93787575150301 18839.20384958411 24035.657895869568 0.9071963927855712 2 74243
173 169.33867735470943 18766.575576941337 23841.941267213828 0.9093486973947896 2 72522
174 169.73947895791582 18693.885461758164 23648.092470710137 0.911501002004008 2 70800
175 170.14028056112227 18621.19513089642 23454.243057831147 0.9136533066132265 2 69078
176 170.54108216432866 18548.505015713246 23260.39426132746 0.915805611222445 2 67356
177 170.94188376753507 18475.814900530073 23066.54546482377 0.9179579158316633 2 65634
178 171.3426853707415 18403.124569668333 22872.69605194478 0.9201102204408819 2 63912
179 171.74348697394788 18330.54143105545 22679.15297759127 0.9222625250501001 1 62190
180 172.14428857715433 18258.315830301275 22486.587121625835 0.9244148296593188 1 60469
181 172.54509018036072 18186.02860268526 22293.889714187746 0.926567134268537 1 58747
182 172.94589178356713 18113.741375069247 22101.19230674966 0.9287194388777555 1 57025
183 173.34669338677355 18041.454147453234 21908.494899311576 0.930871743486974 1 55303
184 173.74749498997994 17969.166919837222 21715.797491873487 0.9330240480961923 1 53581
185 174.1482965931864 17896.87969222121 21523.10008443541 0.9351763527054109 1 51859
186 174.54909819639278 17824.65409146703 21330.53422846997 0.9373286573146292 1 50138
187 174.9498997995992 17752.366863851017 21137.836821031884 0.9394809619238477 1 48416
188 175.3507014028056 17680.079636235005 20945.1394135938 0.9416332665330662 1 46694
189 175.75150300601203 17607.792408618992 20752.442006155714 0.9437855711422846 1 44972
190 176.15230460921845 17535.50518100298 20559.74459871763 0.9459378757515031 1 43250
191 176.55310621242484 17463.217953386964 20367.047191279544 0.9480901803607213 1 41528
192 176.95390781563128 17390.992352632788 20174.481335314107 0.95024248496994 1 39807
193 177.35470941883767 17318.70512501677 19981.78392787602 0.9523947895791582 1 38085
194 177.7555110220441 17246.41789740076 19789.086520437937 0.9545470941883768 1 36363
195 178.1563126252505 17174.130669784747 19596.38911299985 0.9566993987975952 1 34641
196 178.5571142284569 17101.843442168734 19403.691705561763 0.9588517034068136 1 32919
197 178.95791583166334 17029.556214552722 19210.99429812368 0.9610040080160321 1 31197
198 179.35871743486973 16957.26898693671 19018.296890685597 0.9631563126252505 1 29475
199 179.75951903807615 16885.043386182526 18825.731034720153 0.9653086172344689 1 27754
200 180.16032064128257 16812.756158566517 18633.03362728207 0.9674609218436875 1 26032
201 180.56112224448898 16740.468930950505 18440.336219843986 0.9696132264529058 1 24310
202 180.9619238476954 16668.181703334492 18247.638812405905 0.9717655310621244 1 22588
203 181.3627254509018 16595.894475718476 18054.941404967816 0.9739178356713426 1 20866
204 181.76352705410824 16523.607248102468 17862.243997529735 0.9760701402805613 1 19144
205 182.16432865731463 16451.381647348284 17669.67814156429 0.9782224448897795 1 17423
206 182.56513026052104 16379.094419732273 17476.980734126206 0.980374749498998 1 15701
207 182.96593186372746 16306.80719211626 17284.283326688124 0.9825270541082165 1 13979
208 183.36673346693385 16234.519964500247 17091.585919250036 0.9846793587174348 1 12257
209 183.7675350701403 16162.232736884236 16898.888511811954 0.9868316633266534 1 10535
210 184.1683366733467 16089.945509268222 16706.19110437387 0.9889839679358717 1 8813
211 184.5691382765531 16017.65828165221 16513.493696935784 0.9911362725450902 1 7091
212 184.96993987975952 15945.43268089803 16320.927840970344 0.9932885771543087 1 5370
213 185.37074148296594 15873.145453282015 16128.230433532259 0.9954408817635271 1 3648
214 185.77154308617236 15800.858225666005 15935.533026094176 0.9975931863727456 1 1926
215 186.17234468937875 15728.570998049989 15742.835618656089 0.9997454909819639 1 204
216 186.5731462925852 15720.0 1.0 0 0
217 186.97394789579158 15720.0 1.0 0 0
218 187.374749498998 15720.0 1.0 0 0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 276 KiB

After

Width:  |  Height:  |  Size: 279 KiB

View File

@@ -37,8 +37,8 @@ ELEVATOR_SPECIFIC_ENERGY = 157.2e9 # J per metric ton (157.2 MJ/kg * 1000)
# 火箭参数 # 火箭参数
PAYLOAD_PER_LAUNCH = 125 # metric tons per launch PAYLOAD_PER_LAUNCH = 125 # metric tons per launch
ISP = 450 ISP = 363 # 比冲 (秒) - 液氧甲烷 (LOX/CH4, Raptor-class)
SPECIFIC_FUEL_ENERGY = 15.5e6 # J/kg SPECIFIC_FUEL_ENERGY = 11.9e6 # J/kg
ALPHA = 0.10 ALPHA = 0.10
NUM_STAGES = 3 NUM_STAGES = 3
DELTA_V_BASE = 13300 # m/s DELTA_V_BASE = 13300 # m/s

View File

@@ -35,8 +35,8 @@ PAYLOAD_PER_LAUNCH = 125 # metric tons per launch (average of 100-150)
TOTAL_LAUNCHES_NEEDED = TOTAL_PAYLOAD / PAYLOAD_PER_LAUNCH # 800,000 launches TOTAL_LAUNCHES_NEEDED = TOTAL_PAYLOAD / PAYLOAD_PER_LAUNCH # 800,000 launches
# 火箭参数 # 火箭参数
ISP = 450 # 比冲 (秒) - 液氧液氢 ISP = 363 # 比冲 (秒) - 液氧甲烷 (LOX/CH4, Raptor-class)
SPECIFIC_FUEL_ENERGY = 15.5e6 # J/kg 燃料比能量 SPECIFIC_FUEL_ENERGY = 11.9e6 # J/kg 燃料比能量
ALPHA = 0.10 # 结构系数 ALPHA = 0.10 # 结构系数
NUM_STAGES = 3 # 3级火箭 NUM_STAGES = 3 # 3级火箭

10
p1/sensitivity_alpha.csv Normal file
View File

@@ -0,0 +1,10 @@
alpha,fuel_ratio,min_timeline,optimal_T_lambda504,optimal_E_lambda504
0.06,63.02605457895038,101.10220440881763,101.10220440881763,43868.89867149817
0.07,68.29395722323875,101.10220440881763,101.10220440881763,46867.31671096497
0.08,74.20197456904802,101.10220440881763,101.10220440881763,50235.617816131955
0.09,80.85242443796794,101.10220440881763,101.10220440881763,54033.847318345346
0.1,88.36809547494757,101.10220440881763,138.51371083876296,38973.75515736591
0.11000000000000001,96.89721699661537,101.10220440881763,185.65220894049406,16023.925174458536
0.12000000000000001,106.61986205811633,101.10220440881763,185.65220894049406,16059.242009669968
0.13,117.75626714631346,101.10220440881763,186.40043906909295,15720.0
0.14,130.57774039779378,101.10220440881763,186.40043906909295,15720.0
1 alpha fuel_ratio min_timeline optimal_T_lambda504 optimal_E_lambda504
2 0.06 63.02605457895038 101.10220440881763 101.10220440881763 43868.89867149817
3 0.07 68.29395722323875 101.10220440881763 101.10220440881763 46867.31671096497
4 0.08 74.20197456904802 101.10220440881763 101.10220440881763 50235.617816131955
5 0.09 80.85242443796794 101.10220440881763 101.10220440881763 54033.847318345346
6 0.1 88.36809547494757 101.10220440881763 138.51371083876296 38973.75515736591
7 0.11000000000000001 96.89721699661537 101.10220440881763 185.65220894049406 16023.925174458536
8 0.12000000000000001 106.61986205811633 101.10220440881763 185.65220894049406 16059.242009669968
9 0.13 117.75626714631346 101.10220440881763 186.40043906909295 15720.0
10 0.14 130.57774039779378 101.10220440881763 186.40043906909295 15720.0

BIN
p1/sensitivity_analysis.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 KiB

763
p1/sensitivity_analysis.py Normal file
View File

@@ -0,0 +1,763 @@
"""
Task 1 Sensitivity Analysis for Moon Colony Logistics
This module performs comprehensive sensitivity analysis on key model parameters:
1. Rocket payload capacity (100-150 tons, as specified in problem)
2. Elevator capacity (±20%)
3. Launch frequency (0.5-2 launches/day)
4. Engine technology (Isp variations)
5. Structural coefficient α
Author: MCM 2026 Team
"""
import numpy as np
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
from matplotlib import rcParams
import pandas as pd
from typing import Dict, List, Tuple, Optional
from dataclasses import dataclass
import warnings
warnings.filterwarnings('ignore')
# Font settings
rcParams['font.sans-serif'] = ['Arial Unicode MS', 'DejaVu Sans', 'SimHei']
rcParams['axes.unicode_minus'] = False
# ============== Physical Constants ==============
G0 = 9.81 # m/s²
OMEGA_EARTH = 7.27e-5 # rad/s
R_EARTH = 6.371e6 # m
# Baseline Mission parameters
TOTAL_PAYLOAD = 100e6 # 100 million metric tons
# Baseline Space Elevator parameters
BASELINE_NUM_ELEVATORS = 3
BASELINE_ELEVATOR_CAPACITY_PER_YEAR = 179000 # metric tons per elevator per year
BASELINE_ELEVATOR_SPECIFIC_ENERGY = 157.2e9 # J per metric ton
# Baseline Rocket parameters
BASELINE_PAYLOAD_PER_LAUNCH = 125 # metric tons (range: 100-150)
BASELINE_ISP = 363 # seconds (LOX/CH4)
BASELINE_SPECIFIC_FUEL_ENERGY = 11.9e6 # J/kg
BASELINE_ALPHA = 0.10 # structural coefficient
BASELINE_NUM_STAGES = 3
BASELINE_DELTA_V = 13300 # m/s
# Baseline Launch frequency
BASELINE_LAUNCHES_PER_DAY = 1 # per site
# ============== Launch Sites ==============
@dataclass
class LaunchSite:
name: str
short_name: str
latitude: float
@property
def abs_latitude(self) -> float:
return abs(self.latitude)
def delta_v_loss(self, omega=OMEGA_EARTH, r=R_EARTH) -> float:
v_equator = omega * r
v_site = omega * r * np.cos(np.radians(self.abs_latitude))
return v_equator - v_site
LAUNCH_SITES = [
LaunchSite("Kourou", "Kourou", 5.2),
LaunchSite("SDSC", "SDSC", 13.7),
LaunchSite("Texas", "Texas", 26.0),
LaunchSite("Florida", "Florida", 28.5),
LaunchSite("California", "California", 34.7),
LaunchSite("Virginia", "Virginia", 37.8),
LaunchSite("Taiyuan", "Taiyuan", 38.8),
LaunchSite("Mahia", "Mahia", 39.3),
LaunchSite("Baikonur", "Baikonur", 45.6),
LaunchSite("Alaska", "Alaska", 57.4),
]
LAUNCH_SITES = sorted(LAUNCH_SITES, key=lambda x: x.abs_latitude)
NUM_SITES = len(LAUNCH_SITES)
# ============== Core Calculation Functions ==============
def fuel_ratio_multistage(delta_v: float, isp: float, alpha: float, num_stages: int) -> float:
"""Calculate multi-stage rocket fuel/payload ratio"""
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 calculate_scenario(
completion_years: float,
payload_per_launch: float = BASELINE_PAYLOAD_PER_LAUNCH,
elevator_capacity: float = BASELINE_NUM_ELEVATORS * BASELINE_ELEVATOR_CAPACITY_PER_YEAR,
launches_per_day: float = BASELINE_LAUNCHES_PER_DAY,
isp: float = BASELINE_ISP,
alpha: float = BASELINE_ALPHA,
num_stages: int = BASELINE_NUM_STAGES,
delta_v_base: float = BASELINE_DELTA_V,
specific_fuel_energy: float = BASELINE_SPECIFIC_FUEL_ENERGY,
) -> Optional[Dict]:
"""Calculate scenario for given parameters"""
# Space elevator transport
elevator_payload = min(elevator_capacity * completion_years, TOTAL_PAYLOAD)
elevator_energy = elevator_payload * BASELINE_ELEVATOR_SPECIFIC_ENERGY
# Remaining payload for rockets
remaining_payload = TOTAL_PAYLOAD - elevator_payload
if remaining_payload <= 0:
return {
'years': completion_years,
'elevator_payload': elevator_payload,
'rocket_payload': 0,
'total_energy_PJ': elevator_energy / 1e15,
'rocket_launches': 0,
'elevator_fraction': 1.0,
'feasible': True,
}
# Rocket launches needed
rocket_launches_needed = int(np.ceil(remaining_payload / payload_per_launch))
# Check feasibility
days_available = completion_years * 365
max_launches_per_site = int(days_available * launches_per_day)
total_rocket_capacity = NUM_SITES * max_launches_per_site * payload_per_launch
if remaining_payload > total_rocket_capacity:
return {
'years': completion_years,
'feasible': False,
'shortage': remaining_payload - total_rocket_capacity,
}
# Calculate rocket energy (low-latitude priority)
rocket_energy = 0
remaining_launches = rocket_launches_needed
for site in LAUNCH_SITES:
if remaining_launches <= 0:
break
allocated = min(remaining_launches, max_launches_per_site)
# Calculate fuel ratio for this site
total_dv = delta_v_base + site.delta_v_loss()
k = fuel_ratio_multistage(total_dv, isp, alpha, num_stages)
fuel_per_ton = k * 1000 # kg fuel per metric ton payload
energy_per_ton = fuel_per_ton * specific_fuel_energy
rocket_energy += energy_per_ton * payload_per_launch * allocated
remaining_launches -= allocated
total_energy = elevator_energy + rocket_energy
return {
'years': completion_years,
'elevator_payload': elevator_payload,
'rocket_payload': remaining_payload,
'total_energy_PJ': total_energy / 1e15,
'rocket_launches': rocket_launches_needed,
'elevator_fraction': elevator_payload / TOTAL_PAYLOAD,
'feasible': True,
}
def find_minimum_timeline(
payload_per_launch: float = BASELINE_PAYLOAD_PER_LAUNCH,
elevator_capacity: float = BASELINE_NUM_ELEVATORS * BASELINE_ELEVATOR_CAPACITY_PER_YEAR,
launches_per_day: float = BASELINE_LAUNCHES_PER_DAY,
**kwargs
) -> float:
"""Find minimum feasible timeline"""
for years in np.linspace(50, 300, 500):
result = calculate_scenario(
years, payload_per_launch, elevator_capacity, launches_per_day, **kwargs
)
if result and result.get('feasible', False):
return years
return 300 # fallback
def generate_tradeoff_curve(
year_min: float = None,
year_max: float = 250,
num_points: int = 200,
**kwargs
) -> pd.DataFrame:
"""Generate trade-off curve for given parameters"""
if year_min is None:
year_min = find_minimum_timeline(**kwargs)
years_range = np.linspace(year_min, year_max, num_points)
results = []
for years in years_range:
scenario = calculate_scenario(years, **kwargs)
if scenario and scenario.get('feasible', False):
results.append({
'years': years,
'energy_PJ': scenario['total_energy_PJ'],
'elevator_fraction': scenario['elevator_fraction'],
'rocket_launches': scenario.get('rocket_launches', 0),
})
return pd.DataFrame(results)
def find_optimal_point(df: pd.DataFrame, lambda_cost: float) -> Dict:
"""Find optimal point for given λ"""
if df.empty:
return {'years': np.nan, 'energy_PJ': np.nan}
total_cost = df['energy_PJ'].values + lambda_cost * df['years'].values
opt_idx = np.argmin(total_cost)
return {
'years': df['years'].iloc[opt_idx],
'energy_PJ': df['energy_PJ'].iloc[opt_idx],
'elevator_fraction': df['elevator_fraction'].iloc[opt_idx],
}
# ============== Sensitivity Analysis Functions ==============
def sensitivity_payload_capacity():
"""Analyze sensitivity to rocket payload capacity (100-150 tons)"""
print("\n[1] Analyzing Rocket Payload Capacity Sensitivity (100-150 tons)...")
payload_range = np.linspace(100, 150, 11)
results = []
for payload in payload_range:
elevator_cap = BASELINE_NUM_ELEVATORS * BASELINE_ELEVATOR_CAPACITY_PER_YEAR
t_min = find_minimum_timeline(payload_per_launch=payload, elevator_capacity=elevator_cap)
t_elev = TOTAL_PAYLOAD / elevator_cap
df = generate_tradeoff_curve(
year_min=t_min, year_max=250,
payload_per_launch=payload, elevator_capacity=elevator_cap
)
if not df.empty:
opt_504 = find_optimal_point(df, 504)
energy_at_139 = df[df['years'] >= 139]['energy_PJ'].iloc[0] if any(df['years'] >= 139) else np.nan
results.append({
'payload_tons': payload,
'min_timeline': t_min,
'elevator_only_timeline': t_elev,
'optimal_T_lambda504': opt_504['years'],
'optimal_E_lambda504': opt_504['energy_PJ'],
'energy_at_139y': energy_at_139,
})
return pd.DataFrame(results)
def sensitivity_elevator_capacity():
"""Analyze sensitivity to elevator capacity (±20%)"""
print("\n[2] Analyzing Elevator Capacity Sensitivity (±20%)...")
baseline_cap = BASELINE_NUM_ELEVATORS * BASELINE_ELEVATOR_CAPACITY_PER_YEAR
capacity_factors = np.linspace(0.8, 1.2, 9)
results = []
for factor in capacity_factors:
elevator_cap = baseline_cap * factor
t_min = find_minimum_timeline(elevator_capacity=elevator_cap)
t_elev = TOTAL_PAYLOAD / elevator_cap
df = generate_tradeoff_curve(
year_min=t_min, year_max=300,
elevator_capacity=elevator_cap
)
if not df.empty:
# Find critical λ
lambda_crit = None
for lam in np.linspace(300, 700, 200):
opt = find_optimal_point(df, lam)
if opt['years'] < t_elev - 5:
lambda_crit = lam
break
opt_504 = find_optimal_point(df, 504)
results.append({
'capacity_factor': factor,
'capacity_tons_per_year': elevator_cap,
'min_timeline': t_min,
'elevator_only_timeline': t_elev,
'critical_lambda': lambda_crit,
'optimal_T_lambda504': opt_504['years'],
'optimal_E_lambda504': opt_504['energy_PJ'],
})
return pd.DataFrame(results)
def sensitivity_launch_frequency():
"""Analyze sensitivity to launch frequency"""
print("\n[3] Analyzing Launch Frequency Sensitivity (0.5-2 launches/day)...")
frequency_range = np.linspace(0.5, 2.0, 7)
results = []
for freq in frequency_range:
elevator_cap = BASELINE_NUM_ELEVATORS * BASELINE_ELEVATOR_CAPACITY_PER_YEAR
t_min = find_minimum_timeline(launches_per_day=freq, elevator_capacity=elevator_cap)
t_elev = TOTAL_PAYLOAD / elevator_cap
df = generate_tradeoff_curve(
year_min=t_min, year_max=250,
launches_per_day=freq, elevator_capacity=elevator_cap
)
if not df.empty:
opt_504 = find_optimal_point(df, 504)
results.append({
'launches_per_day': freq,
'min_timeline': t_min,
'elevator_only_timeline': t_elev,
'optimal_T_lambda504': opt_504['years'],
'optimal_E_lambda504': opt_504['energy_PJ'],
'rocket_capacity_tons_per_year': freq * 365 * NUM_SITES * BASELINE_PAYLOAD_PER_LAUNCH,
})
return pd.DataFrame(results)
def sensitivity_engine_technology():
"""Analyze sensitivity to engine technology (Isp)"""
print("\n[4] Analyzing Engine Technology Sensitivity (Isp)...")
engines = [
('Solid', 280, 5.0e6),
('LOX/Kerosene', 350, 10.3e6),
('LOX/Methane', 363, 11.9e6),
('LOX/Hydrogen', 450, 15.5e6),
]
results = []
for name, isp, specific_energy in engines:
elevator_cap = BASELINE_NUM_ELEVATORS * BASELINE_ELEVATOR_CAPACITY_PER_YEAR
t_min = find_minimum_timeline(
isp=isp, specific_fuel_energy=specific_energy, elevator_capacity=elevator_cap
)
df = generate_tradeoff_curve(
year_min=t_min, year_max=250,
isp=isp, specific_fuel_energy=specific_energy, elevator_capacity=elevator_cap
)
if not df.empty:
opt_504 = find_optimal_point(df, 504)
# Calculate fuel ratio at equator
k = fuel_ratio_multistage(BASELINE_DELTA_V, isp, BASELINE_ALPHA, BASELINE_NUM_STAGES)
results.append({
'engine_type': name,
'isp_seconds': isp,
'specific_energy_MJ_kg': specific_energy / 1e6,
'fuel_ratio': k,
'min_timeline': t_min,
'optimal_T_lambda504': opt_504['years'],
'optimal_E_lambda504': opt_504['energy_PJ'],
})
return pd.DataFrame(results)
def sensitivity_structural_coefficient():
"""Analyze sensitivity to structural coefficient α"""
print("\n[5] Analyzing Structural Coefficient Sensitivity (α)...")
alpha_range = np.linspace(0.06, 0.14, 9)
results = []
for alpha in alpha_range:
elevator_cap = BASELINE_NUM_ELEVATORS * BASELINE_ELEVATOR_CAPACITY_PER_YEAR
t_min = find_minimum_timeline(alpha=alpha, elevator_capacity=elevator_cap)
df = generate_tradeoff_curve(
year_min=t_min, year_max=250,
alpha=alpha, elevator_capacity=elevator_cap
)
if not df.empty:
opt_504 = find_optimal_point(df, 504)
k = fuel_ratio_multistage(BASELINE_DELTA_V, BASELINE_ISP, alpha, BASELINE_NUM_STAGES)
results.append({
'alpha': alpha,
'fuel_ratio': k,
'min_timeline': t_min,
'optimal_T_lambda504': opt_504['years'],
'optimal_E_lambda504': opt_504['energy_PJ'],
})
return pd.DataFrame(results)
# ============== Visualization ==============
def plot_sensitivity_analysis(
payload_df: pd.DataFrame,
elevator_df: pd.DataFrame,
frequency_df: pd.DataFrame,
engine_df: pd.DataFrame,
alpha_df: pd.DataFrame,
save_path: str = '/Volumes/Files/code/mm/20260130_b/p1/sensitivity_analysis.png'
):
"""Create comprehensive sensitivity analysis visualization"""
fig, axes = plt.subplots(2, 3, figsize=(18, 12))
# ========== Plot 1: Rocket Payload Capacity ==========
ax1 = axes[0, 0]
ax1.plot(payload_df['payload_tons'], payload_df['min_timeline'],
'b-o', linewidth=2, markersize=8, label='Minimum Timeline')
ax1.plot(payload_df['payload_tons'], payload_df['optimal_T_lambda504'],
'r-s', linewidth=2, markersize=8, label='Optimal T* (λ=504)')
ax1.axhline(y=186.2, color='green', linestyle='--', alpha=0.7, label='Elevator-only')
ax1.axvline(x=125, color='gray', linestyle=':', alpha=0.7, label='Baseline (125t)')
ax1.fill_betweenx([80, 220], 100, 150, alpha=0.1, color='blue', label='Problem range')
ax1.set_xlabel('Rocket Payload Capacity (metric tons)', fontsize=11)
ax1.set_ylabel('Timeline (years)', fontsize=11)
ax1.set_title('(a) Sensitivity to Rocket Payload Capacity\n(Problem specifies 100-150 tons)', fontsize=12)
ax1.legend(loc='upper right', fontsize=9)
ax1.grid(True, alpha=0.3)
ax1.set_xlim(95, 155)
ax1.set_ylim(80, 200)
# ========== Plot 2: Elevator Capacity ==========
ax2 = axes[0, 1]
ax2.plot(elevator_df['capacity_factor'] * 100, elevator_df['elevator_only_timeline'],
'g-o', linewidth=2, markersize=8, label='Elevator-only Timeline')
ax2.plot(elevator_df['capacity_factor'] * 100, elevator_df['optimal_T_lambda504'],
'r-s', linewidth=2, markersize=8, label='Optimal T* (λ=504)')
ax2.plot(elevator_df['capacity_factor'] * 100, elevator_df['min_timeline'],
'b-^', linewidth=2, markersize=8, label='Minimum Timeline')
ax2.axvline(x=100, color='gray', linestyle=':', alpha=0.7, label='Baseline')
ax2.set_xlabel('Elevator Capacity (% of baseline)', fontsize=11)
ax2.set_ylabel('Timeline (years)', fontsize=11)
ax2.set_title('(b) Sensitivity to Elevator Capacity (±20%)', fontsize=12)
ax2.legend(loc='upper right', fontsize=9)
ax2.grid(True, alpha=0.3)
ax2.set_xlim(75, 125)
# ========== Plot 3: Launch Frequency ==========
ax3 = axes[0, 2]
ax3.plot(frequency_df['launches_per_day'], frequency_df['min_timeline'],
'b-o', linewidth=2, markersize=8, label='Minimum Timeline')
ax3.plot(frequency_df['launches_per_day'], frequency_df['optimal_T_lambda504'],
'r-s', linewidth=2, markersize=8, label='Optimal T* (λ=504)')
ax3.axhline(y=186.2, color='green', linestyle='--', alpha=0.7, label='Elevator-only')
ax3.axvline(x=1.0, color='gray', linestyle=':', alpha=0.7, label='Baseline (1/day)')
ax3.set_xlabel('Launch Frequency (launches/site/day)', fontsize=11)
ax3.set_ylabel('Timeline (years)', fontsize=11)
ax3.set_title('(c) Sensitivity to Launch Frequency', fontsize=12)
ax3.legend(loc='upper right', fontsize=9)
ax3.grid(True, alpha=0.3)
# ========== Plot 4: Engine Technology ==========
ax4 = axes[1, 0]
x_pos = np.arange(len(engine_df))
width = 0.35
bars1 = ax4.bar(x_pos - width/2, engine_df['optimal_E_lambda504'] / 1000, width,
label='Energy at T* (×10³ PJ)', color='steelblue', alpha=0.8)
ax4_twin = ax4.twinx()
bars2 = ax4_twin.bar(x_pos + width/2, engine_df['fuel_ratio'], width,
label='Fuel Ratio k', color='coral', alpha=0.8)
ax4.set_xlabel('Engine Type', fontsize=11)
ax4.set_ylabel('Energy (×10³ PJ)', fontsize=11, color='steelblue')
ax4_twin.set_ylabel('Fuel Ratio k', fontsize=11, color='coral')
ax4.set_title('(d) Sensitivity to Engine Technology', fontsize=12)
ax4.set_xticks(x_pos)
ax4.set_xticklabels(engine_df['engine_type'], rotation=15)
ax4.legend(loc='upper left', fontsize=9)
ax4_twin.legend(loc='upper right', fontsize=9)
ax4.grid(True, alpha=0.3, axis='y')
# ========== Plot 5: Structural Coefficient ==========
ax5 = axes[1, 1]
ax5.plot(alpha_df['alpha'], alpha_df['fuel_ratio'],
'g-o', linewidth=2, markersize=8, label='Fuel Ratio k')
ax5_twin = ax5.twinx()
ax5_twin.plot(alpha_df['alpha'], alpha_df['optimal_E_lambda504'] / 1000,
'r-s', linewidth=2, markersize=8, label='Energy at T* (×10³ PJ)')
ax5.axvline(x=0.10, color='gray', linestyle=':', alpha=0.7, label='Baseline')
ax5.set_xlabel('Structural Coefficient α', fontsize=11)
ax5.set_ylabel('Fuel Ratio k', fontsize=11, color='green')
ax5_twin.set_ylabel('Energy (×10³ PJ)', fontsize=11, color='red')
ax5.set_title('(e) Sensitivity to Structural Coefficient α', fontsize=12)
ax5.legend(loc='upper left', fontsize=9)
ax5_twin.legend(loc='upper right', fontsize=9)
ax5.grid(True, alpha=0.3)
# ========== Plot 6: Summary Tornado Chart ==========
ax6 = axes[1, 2]
# Calculate sensitivity indices (% change in T* for parameter variation)
baseline_T = 139 # baseline optimal timeline
sensitivities = [
('Payload\n(100→150t)',
(payload_df['optimal_T_lambda504'].iloc[0] - baseline_T) / baseline_T * 100,
(payload_df['optimal_T_lambda504'].iloc[-1] - baseline_T) / baseline_T * 100),
('Elevator Cap.\n(80%→120%)',
(elevator_df['optimal_T_lambda504'].iloc[0] - baseline_T) / baseline_T * 100,
(elevator_df['optimal_T_lambda504'].iloc[-1] - baseline_T) / baseline_T * 100),
('Launch Freq.\n(0.5→2/day)',
(frequency_df['optimal_T_lambda504'].iloc[0] - baseline_T) / baseline_T * 100,
(frequency_df['optimal_T_lambda504'].iloc[-1] - baseline_T) / baseline_T * 100),
('Struct. Coef.\n(0.06→0.14)',
(alpha_df['optimal_T_lambda504'].iloc[0] - baseline_T) / baseline_T * 100,
(alpha_df['optimal_T_lambda504'].iloc[-1] - baseline_T) / baseline_T * 100),
]
y_pos = np.arange(len(sensitivities))
for i, (name, low, high) in enumerate(sensitivities):
ax6.barh(i, high - low, left=min(low, high), height=0.6,
color='steelblue' if high > low else 'coral', alpha=0.7)
ax6.plot([low, high], [i, i], 'k-', linewidth=2)
ax6.plot(low, i, 'ko', markersize=8)
ax6.plot(high, i, 'k^', markersize=8)
ax6.axvline(x=0, color='black', linestyle='-', linewidth=1)
ax6.set_yticks(y_pos)
ax6.set_yticklabels([s[0] for s in sensitivities])
ax6.set_xlabel('Change in Optimal Timeline T* (%)', fontsize=11)
ax6.set_title('(f) Sensitivity Summary (Tornado Chart)', fontsize=12)
ax6.grid(True, alpha=0.3, axis='x')
plt.tight_layout()
plt.savefig(save_path, dpi=150, bbox_inches='tight')
print(f"\nSensitivity analysis plot saved to: {save_path}")
return fig
def plot_tradeoff_comparison(
save_path: str = '/Volumes/Files/code/mm/20260130_b/p1/sensitivity_tradeoff.png'
):
"""Plot trade-off curves for different parameter values"""
fig, axes = plt.subplots(2, 2, figsize=(14, 12))
elevator_cap = BASELINE_NUM_ELEVATORS * BASELINE_ELEVATOR_CAPACITY_PER_YEAR
# ========== Plot 1: Different Payload Capacities ==========
ax1 = axes[0, 0]
for payload, color in [(100, 'red'), (125, 'blue'), (150, 'green')]:
df = generate_tradeoff_curve(payload_per_launch=payload, elevator_capacity=elevator_cap)
if not df.empty:
ax1.plot(df['years'], df['energy_PJ'] / 1000, color=color, linewidth=2,
label=f'{payload} tons')
ax1.set_xlabel('Timeline (years)', fontsize=11)
ax1.set_ylabel('Energy (×10³ PJ)', fontsize=11)
ax1.set_title('Trade-off Curves: Rocket Payload Capacity', fontsize=12)
ax1.legend(title='Payload')
ax1.grid(True, alpha=0.3)
ax1.set_xlim(95, 200)
# ========== Plot 2: Different Elevator Capacities ==========
ax2 = axes[0, 1]
for factor, color in [(0.8, 'red'), (1.0, 'blue'), (1.2, 'green')]:
df = generate_tradeoff_curve(elevator_capacity=elevator_cap * factor)
if not df.empty:
ax2.plot(df['years'], df['energy_PJ'] / 1000, color=color, linewidth=2,
label=f'{factor*100:.0f}%')
ax2.set_xlabel('Timeline (years)', fontsize=11)
ax2.set_ylabel('Energy (×10³ PJ)', fontsize=11)
ax2.set_title('Trade-off Curves: Elevator Capacity', fontsize=12)
ax2.legend(title='Capacity')
ax2.grid(True, alpha=0.3)
ax2.set_xlim(95, 250)
# ========== Plot 3: Different Launch Frequencies ==========
ax3 = axes[1, 0]
for freq, color in [(0.5, 'red'), (1.0, 'blue'), (2.0, 'green')]:
df = generate_tradeoff_curve(launches_per_day=freq, elevator_capacity=elevator_cap)
if not df.empty:
ax3.plot(df['years'], df['energy_PJ'] / 1000, color=color, linewidth=2,
label=f'{freq}/day')
ax3.set_xlabel('Timeline (years)', fontsize=11)
ax3.set_ylabel('Energy (×10³ PJ)', fontsize=11)
ax3.set_title('Trade-off Curves: Launch Frequency', fontsize=12)
ax3.legend(title='Frequency')
ax3.grid(True, alpha=0.3)
ax3.set_xlim(45, 200)
# ========== Plot 4: Different Engine Types ==========
ax4 = axes[1, 1]
engines = [
('LOX/Kerosene', 350, 10.3e6, 'red'),
('LOX/Methane', 363, 11.9e6, 'blue'),
('LOX/Hydrogen', 450, 15.5e6, 'green'),
]
for name, isp, se, color in engines:
df = generate_tradeoff_curve(isp=isp, specific_fuel_energy=se, elevator_capacity=elevator_cap)
if not df.empty:
ax4.plot(df['years'], df['energy_PJ'] / 1000, color=color, linewidth=2,
label=f'{name}')
ax4.set_xlabel('Timeline (years)', fontsize=11)
ax4.set_ylabel('Energy (×10³ PJ)', fontsize=11)
ax4.set_title('Trade-off Curves: Engine Technology', fontsize=12)
ax4.legend(title='Engine')
ax4.grid(True, alpha=0.3)
ax4.set_xlim(95, 200)
plt.tight_layout()
plt.savefig(save_path, dpi=150, bbox_inches='tight')
print(f"Trade-off comparison plot saved to: {save_path}")
return fig
# ============== Main ==============
def main():
print("=" * 70)
print("Task 1 Sensitivity Analysis for Moon Colony Logistics")
print("=" * 70)
# Run all sensitivity analyses
payload_df = sensitivity_payload_capacity()
elevator_df = sensitivity_elevator_capacity()
frequency_df = sensitivity_launch_frequency()
engine_df = sensitivity_engine_technology()
alpha_df = sensitivity_structural_coefficient()
# Print summary tables
print("\n" + "=" * 70)
print("SENSITIVITY ANALYSIS RESULTS")
print("=" * 70)
print("\n[1] Rocket Payload Capacity (Problem range: 100-150 tons)")
print(payload_df.to_string(index=False))
print("\n[2] Elevator Capacity (±20%)")
print(elevator_df.to_string(index=False))
print("\n[3] Launch Frequency")
print(frequency_df.to_string(index=False))
print("\n[4] Engine Technology")
print(engine_df.to_string(index=False))
print("\n[5] Structural Coefficient α")
print(alpha_df.to_string(index=False))
# Generate plots
print("\n" + "=" * 70)
print("Generating Visualization...")
print("=" * 70)
plot_sensitivity_analysis(payload_df, elevator_df, frequency_df, engine_df, alpha_df)
plot_tradeoff_comparison()
# Save data
payload_df.to_csv('/Volumes/Files/code/mm/20260130_b/p1/sensitivity_payload.csv', index=False)
elevator_df.to_csv('/Volumes/Files/code/mm/20260130_b/p1/sensitivity_elevator.csv', index=False)
frequency_df.to_csv('/Volumes/Files/code/mm/20260130_b/p1/sensitivity_frequency.csv', index=False)
engine_df.to_csv('/Volumes/Files/code/mm/20260130_b/p1/sensitivity_engine.csv', index=False)
alpha_df.to_csv('/Volumes/Files/code/mm/20260130_b/p1/sensitivity_alpha.csv', index=False)
print("\nData saved to CSV files.")
# Summary
print("\n" + "=" * 70)
print("KEY FINDINGS")
print("=" * 70)
print("""
1. ROCKET PAYLOAD CAPACITY (100-150 tons):
- Higher capacity reduces minimum timeline significantly
- Limited impact on energy when elevator dominates
- Baseline 125 tons is a reasonable middle estimate
2. ELEVATOR CAPACITY (±20%):
- Most sensitive parameter for timeline
- ±20% capacity changes elevator-only timeline by ~37 years
- Critical for long-term planning
3. LAUNCH FREQUENCY:
- Doubling frequency halves minimum rocket-only timeline
- Essential for time-constrained scenarios
- Less impact when elevator provides majority of transport
4. ENGINE TECHNOLOGY:
- Primarily affects energy, not timeline
- LOX/Hydrogen saves ~30% energy vs LOX/Methane
- But LOX/Methane has practical advantages (storage, cost)
5. STRUCTURAL COEFFICIENT α:
- Lower α (better technology) improves fuel efficiency
- Moderate impact on total energy
- Progress from 0.10 to 0.08 saves ~8% energy
""")
print("=" * 70)
print("Analysis Complete!")
print("=" * 70)
return payload_df, elevator_df, frequency_df, engine_df, alpha_df
if __name__ == "__main__":
results = main()

View File

@@ -0,0 +1,10 @@
capacity_factor,capacity_tons_per_year,min_timeline,elevator_only_timeline,critical_lambda,optimal_T_lambda504,optimal_E_lambda504
0.8,429600.0,113.12625250501002,232.77467411545624,386.4321608040201,113.12625250501002,63657.161988613094
0.8500000000000001,456450.00000000006,109.61923847695391,219.08204622631172,410.5527638190955,109.61923847695391,62326.697320517385
0.9,483300.0,106.6132264529058,206.9108214359611,432.66331658291455,111.47219061238053,58467.61654576382
0.95,510150.0,103.6072144288577,196.02077820248945,456.78391959798995,108.54170652863515,57060.67905104806
1.0,537000.0,101.10220440881763,186.21973929236498,480.9045226130653,138.08320157903745,39190.76939967205
1.05,563850.0,98.09619238476954,177.35213265939524,505.0251256281407,177.23436823395534,15779.547072161346
1.1,590700.0,95.59118236472946,169.29067208396816,529.145728643216,168.520961521032,16127.11044324161
1.15,617550.0,93.58717434869739,161.93020808031739,553.2663316582914,161.00844905892188,16229.602091434355
1.2,644400.0,91.08216432865731,155.18311607697083,577.3869346733668,155.12230491133022,15755.147010790764
1 capacity_factor capacity_tons_per_year min_timeline elevator_only_timeline critical_lambda optimal_T_lambda504 optimal_E_lambda504
2 0.8 429600.0 113.12625250501002 232.77467411545624 386.4321608040201 113.12625250501002 63657.161988613094
3 0.8500000000000001 456450.00000000006 109.61923847695391 219.08204622631172 410.5527638190955 109.61923847695391 62326.697320517385
4 0.9 483300.0 106.6132264529058 206.9108214359611 432.66331658291455 111.47219061238053 58467.61654576382
5 0.95 510150.0 103.6072144288577 196.02077820248945 456.78391959798995 108.54170652863515 57060.67905104806
6 1.0 537000.0 101.10220440881763 186.21973929236498 480.9045226130653 138.08320157903745 39190.76939967205
7 1.05 563850.0 98.09619238476954 177.35213265939524 505.0251256281407 177.23436823395534 15779.547072161346
8 1.1 590700.0 95.59118236472946 169.29067208396816 529.145728643216 168.520961521032 16127.11044324161
9 1.15 617550.0 93.58717434869739 161.93020808031739 553.2663316582914 161.00844905892188 16229.602091434355
10 1.2 644400.0 91.08216432865731 155.18311607697083 577.3869346733668 155.12230491133022 15755.147010790764

View File

@@ -0,0 +1,5 @@
engine_type,isp_seconds,specific_energy_MJ_kg,fuel_ratio,min_timeline,optimal_T_lambda504,optimal_E_lambda504
Solid,280,5.0,538.5764850131313,101.10220440881763,186.40043906909295,15720.0
LOX/Kerosene,350,10.3,108.67594152576491,101.10220440881763,185.65220894049406,16013.642239311645
LOX/Methane,363,11.9,88.36809547494757,101.10220440881763,138.51371083876296,38973.75515736591
LOX/Hydrogen,450,15.5,31.788626814321816,101.10220440881763,101.10220440881763,31658.551849443746
1 engine_type isp_seconds specific_energy_MJ_kg fuel_ratio min_timeline optimal_T_lambda504 optimal_E_lambda504
2 Solid 280 5.0 538.5764850131313 101.10220440881763 186.40043906909295 15720.0
3 LOX/Kerosene 350 10.3 108.67594152576491 101.10220440881763 185.65220894049406 16013.642239311645
4 LOX/Methane 363 11.9 88.36809547494757 101.10220440881763 138.51371083876296 38973.75515736591
5 LOX/Hydrogen 450 15.5 31.788626814321816 101.10220440881763 101.10220440881763 31658.551849443746

View File

@@ -0,0 +1,8 @@
launches_per_day,min_timeline,elevator_only_timeline,optimal_T_lambda504,optimal_E_lambda504,rocket_capacity_tons_per_year
0.5,131.16232464929857,186.21973929236498,153.8549460730506,31569.245158290636,228125.0
0.75,114.12825651302605,186.21973929236498,141.43915972648816,37650.80910610053,342187.5
1.0,101.10220440881763,186.21973929236498,138.51371083876296,38973.75515736591,456250.0
1.25,90.58116232464928,186.21973929236498,130.63614666518967,42805.34480074314,570312.5
1.5,82.06412825651302,186.21973929236498,123.415172052648,46322.046034129125,684375.0
1.75,75.0501002004008,186.21973929236498,116.36992578121067,49763.71727628531,798437.5
2.0,69.03807615230461,186.21973929236498,110.86847060956083,52436.356660871454,912500.0
1 launches_per_day min_timeline elevator_only_timeline optimal_T_lambda504 optimal_E_lambda504 rocket_capacity_tons_per_year
2 0.5 131.16232464929857 186.21973929236498 153.8549460730506 31569.245158290636 228125.0
3 0.75 114.12825651302605 186.21973929236498 141.43915972648816 37650.80910610053 342187.5
4 1.0 101.10220440881763 186.21973929236498 138.51371083876296 38973.75515736591 456250.0
5 1.25 90.58116232464928 186.21973929236498 130.63614666518967 42805.34480074314 570312.5
6 1.5 82.06412825651302 186.21973929236498 123.415172052648 46322.046034129125 684375.0
7 1.75 75.0501002004008 186.21973929236498 116.36992578121067 49763.71727628531 798437.5
8 2.0 69.03807615230461 186.21973929236498 110.86847060956083 52436.356660871454 912500.0

View File

@@ -0,0 +1,12 @@
payload_tons,min_timeline,elevator_only_timeline,optimal_T_lambda504,optimal_E_lambda504,energy_at_139y
100.0,111.12224448897794,186.21973929236498,139.03737122486177,38829.35751806205,38829.35751806205
105.0,109.11823647294588,186.21973929236498,137.43617889044418,39611.72625931598,38542.26035133922
110.0,106.6132264529058,186.21973929236498,136.15522502291014,40233.22214267542,38781.43442019814
115.0,104.60921843687373,186.21973929236498,134.5641030805329,41011.601312047926,38434.596386037454
120.0,102.60521042084167,186.21973929236498,140.37975448384205,38056.88195030881,38430.28997049429
125.0,101.10220440881763,186.21973929236498,138.51371083876296,38973.75515736591,38598.73345595525
130.0,99.09819639278557,186.21973929236498,137.013222424749,39706.68272720883,38573.78198086428
135.0,97.59519038076152,186.21973929236498,135.88785611423853,40251.02975221686,38349.15358699996
140.0,95.59118236472946,186.21973929236498,134.38736770022456,40985.0024452691,38671.44068549057
145.0,94.0881763527054,186.21973929236498,133.2620013897141,41530.08764325223,38417.95828151439
150.0,92.58517034068136,186.21973929236498,132.13663507920364,42075.527964998335,38541.90167459569
1 payload_tons min_timeline elevator_only_timeline optimal_T_lambda504 optimal_E_lambda504 energy_at_139y
2 100.0 111.12224448897794 186.21973929236498 139.03737122486177 38829.35751806205 38829.35751806205
3 105.0 109.11823647294588 186.21973929236498 137.43617889044418 39611.72625931598 38542.26035133922
4 110.0 106.6132264529058 186.21973929236498 136.15522502291014 40233.22214267542 38781.43442019814
5 115.0 104.60921843687373 186.21973929236498 134.5641030805329 41011.601312047926 38434.596386037454
6 120.0 102.60521042084167 186.21973929236498 140.37975448384205 38056.88195030881 38430.28997049429
7 125.0 101.10220440881763 186.21973929236498 138.51371083876296 38973.75515736591 38598.73345595525
8 130.0 99.09819639278557 186.21973929236498 137.013222424749 39706.68272720883 38573.78198086428
9 135.0 97.59519038076152 186.21973929236498 135.88785611423853 40251.02975221686 38349.15358699996
10 140.0 95.59118236472946 186.21973929236498 134.38736770022456 40985.0024452691 38671.44068549057
11 145.0 94.0881763527054 186.21973929236498 133.2620013897141 41530.08764325223 38417.95828151439
12 150.0 92.58517034068136 186.21973929236498 132.13663507920364 42075.527964998335 38541.90167459569

BIN
p1/sensitivity_tradeoff.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 238 KiB

View File

@@ -45,9 +45,9 @@ class PhysicalConstants:
@dataclass @dataclass
class EngineParams: class EngineParams:
"""发动机/推进系统参数""" """发动机/推进系统参数"""
name: str = "液氧液氢" name: str = "液氧甲烷"
isp: float = 450 # 比冲 (秒) isp: float = 363 # 比冲 (秒) - LOX/CH4 (Raptor-class)
specific_energy: float = 15.5e6 # 燃料比能量 (J/kg) specific_energy: float = 11.9e6 # 燃料比能量 (J/kg)
@property @property
def exhaust_velocity(self) -> float: def exhaust_velocity(self) -> float:
@@ -505,17 +505,21 @@ def plot_latitude_effects(
engine: EngineParams = EngineParams(), engine: EngineParams = EngineParams(),
mission: MissionParams = MissionParams(), mission: MissionParams = MissionParams(),
constants: PhysicalConstants = PhysicalConstants(), constants: PhysicalConstants = PhysicalConstants(),
save_path: str = '/Volumes/Files/code/mm/20260130_b/latitude_effects.png', save_path: str = '/Volumes/Files/code/mm/20260130_b/p1/latitude_effects.png',
lunar_mission: bool = True lunar_mission: bool = True
): ):
""" """
绘制纬度影响图表 Plot fuel ratio vs launch latitude.
参数: Args:
lunar_mission: 如果True使用月球任务场景不需要轨道平面改变 engine: Engine parameters
mission: Mission parameters
constants: Physical constants
save_path: Output file path
lunar_mission: If True, use lunar mission scenario (no orbital plane change penalty)
""" """
# 月球任务场景:设置高目标倾角,避免轨道平面改变惩罚 # Lunar mission scenario: set high target inclination to avoid plane change penalty
if lunar_mission: if lunar_mission:
mission_plot = MissionParams( mission_plot = MissionParams(
alpha=mission.alpha, alpha=mission.alpha,
@@ -523,124 +527,50 @@ def plot_latitude_effects(
delta_v_ground_to_leo_base=mission.delta_v_ground_to_leo_base, delta_v_ground_to_leo_base=mission.delta_v_ground_to_leo_base,
delta_v_tli=mission.delta_v_tli, delta_v_tli=mission.delta_v_tli,
delta_v_loi=mission.delta_v_loi, delta_v_loi=mission.delta_v_loi,
target_inclination=90.0, # 允许任意倾角 target_inclination=90.0, # Allow any inclination
elevator_length=mission.elevator_length elevator_length=mission.elevator_length
) )
title_suffix = "\n(Lunar Mission - 无轨道平面改变)" title_suffix = " (Lunar Mission)"
else: else:
mission_plot = mission mission_plot = mission
title_suffix = "\n(目标: 赤道轨道)" title_suffix = " (Target: Equatorial Orbit)"
fig, axes = plt.subplots(2, 2, figsize=(16, 14)) # Golden ratio aspect: width=10, height=10*0.618
fig, ax = plt.subplots(figsize=(10, 10 * 0.618))
# 连续纬度范围 # Continuous latitude range
latitudes = np.linspace(0, 65, 100) latitudes = np.linspace(0, 65, 100)
# ========== 图1: 自转速度 vs 纬度 ========== # Calculate fuel ratio for each latitude
ax1 = axes[0, 0]
rotation_velocities = [earth_rotation_velocity(lat, constants) for lat in latitudes]
ax1.plot(latitudes, rotation_velocities, 'b-', linewidth=2)
# 标记发射场 (使用绝对值纬度)
for name, site in LAUNCH_SITES.items():
abs_lat = abs(site.latitude)
v = earth_rotation_velocity(abs_lat, constants)
ax1.plot(abs_lat, v, 'ro', markersize=8)
# 简化标签显示
label = site.name.split('(')[0].strip()
ax1.annotate(label, (abs_lat, v), textcoords="offset points",
xytext=(3, 3), fontsize=8, rotation=15)
ax1.set_xlabel('Latitude |φ| (°)', fontsize=12)
ax1.set_ylabel('Rotation Velocity (m/s)', fontsize=12)
ax1.set_title('Earth Surface Rotation Velocity vs Latitude\nv = ω×R×cos(φ)', fontsize=13)
ax1.grid(True, alpha=0.3)
ax1.set_xlim(0, 65)
# ========== 图2: ΔV损失 vs 纬度 ==========
ax2 = axes[0, 1]
dv_losses = [delta_v_rotation_loss(lat, constants) for lat in latitudes]
ax2.plot(latitudes, dv_losses, 'r-', linewidth=2)
for name, site in LAUNCH_SITES.items():
abs_lat = abs(site.latitude)
dv = delta_v_rotation_loss(abs_lat, constants)
ax2.plot(abs_lat, dv, 'bo', markersize=8)
label = site.name.split('(')[0].strip()
ax2.annotate(label, (abs_lat, dv), textcoords="offset points",
xytext=(3, 3), fontsize=8, rotation=15)
ax2.set_xlabel('Latitude |φ| (°)', fontsize=12)
ax2.set_ylabel('ΔV Loss (m/s)', fontsize=12)
ax2.set_title('Rotation Velocity Loss vs Latitude\n(Relative to Equator)', fontsize=13)
ax2.grid(True, alpha=0.3)
ax2.set_xlim(0, 65)
# ========== 图3: 燃料比 vs 纬度 ==========
ax3 = axes[1, 0]
fuel_ratios = [] fuel_ratios = []
for lat in latitudes: for lat in latitudes:
site = LaunchSite("temp", lat) site = LaunchSite("temp", lat)
result = ground_launch_specific_energy_with_latitude(engine, mission_plot, site, constants) result = ground_launch_specific_energy_with_latitude(engine, mission_plot, site, constants)
fuel_ratios.append(result['fuel_ratio']) fuel_ratios.append(result['fuel_ratio'])
ax3.plot(latitudes, fuel_ratios, 'g-', linewidth=2, label='Fuel Ratio vs Latitude') # Plot continuous curve
ax.plot(latitudes, fuel_ratios, 'g-', linewidth=2, label='Fuel Ratio vs Latitude')
# Mark launch sites
for name, site in LAUNCH_SITES.items(): for name, site in LAUNCH_SITES.items():
abs_lat = abs(site.latitude) abs_lat = abs(site.latitude)
site_temp = LaunchSite(site.name, abs_lat) site_temp = LaunchSite(site.name, abs_lat)
result = ground_launch_specific_energy_with_latitude(engine, mission_plot, site_temp, constants) result = ground_launch_specific_energy_with_latitude(engine, mission_plot, site_temp, constants)
ax3.plot(abs_lat, result['fuel_ratio'], 'mo', markersize=8) ax.plot(abs_lat, result['fuel_ratio'], 'mo', markersize=8)
# Simplified label
label = site.name.split('(')[0].strip() label = site.name.split('(')[0].strip()
ax3.annotate(label, (abs_lat, result['fuel_ratio']), ax.annotate(label, (abs_lat, result['fuel_ratio']),
textcoords="offset points", xytext=(3, 3), fontsize=8, rotation=15) textcoords="offset points", xytext=(3, 3), fontsize=8, rotation=15)
ax3.set_xlabel('Latitude |φ| (°)', fontsize=12) ax.set_xlabel('Latitude |φ| (°)', fontsize=12)
ax3.set_ylabel('Fuel / Payload Mass Ratio', fontsize=12) ax.set_ylabel('Fuel / Payload Mass Ratio', fontsize=12)
ax3.set_title(f'Fuel Requirement vs Launch Latitude{title_suffix}', fontsize=13) ax.set_title(f'Fuel Requirement vs Launch Latitude{title_suffix}', fontsize=13)
ax3.grid(True, alpha=0.3) ax.grid(True, alpha=0.3)
ax3.set_xlim(0, 65) ax.set_xlim(0, 65)
# ========== 图4: 能量对比柱状图 ==========
ax4 = axes[1, 1]
# 按纬度绝对值排序
results = []
for name, site in LAUNCH_SITES.items():
abs_lat = abs(site.latitude)
site_temp = LaunchSite(site.name, abs_lat)
result = ground_launch_specific_energy_with_latitude(engine, mission_plot, site_temp, constants)
result['abs_latitude'] = abs_lat
results.append(result)
results = sorted(results, key=lambda x: x['abs_latitude'])
# 简化标签
sites = [r['launch_site'].split('(')[0].strip() for r in results]
fuel_ratios_bar = [r['fuel_ratio'] for r in results]
abs_lats = [r['abs_latitude'] for r in results]
# 颜色映射:纬度越高颜色越深
colors = plt.cm.RdYlGn_r(np.array(abs_lats) / 65)
bars = ax4.bar(range(len(sites)), fuel_ratios_bar, color=colors)
ax4.set_ylabel('Fuel / Payload Mass Ratio', fontsize=12)
ax4.set_title(f'Fuel Requirement by Launch Site{title_suffix}', fontsize=13)
ax4.set_xticks(range(len(sites)))
ax4.set_xticklabels(sites, rotation=45, ha='right', fontsize=9)
ax4.grid(True, alpha=0.3, axis='y')
# 添加数值标签和纬度
for i, (bar, ratio, lat) in enumerate(zip(bars, fuel_ratios_bar, abs_lats)):
ax4.text(bar.get_x() + bar.get_width()/2, bar.get_height() + 0.3,
f'{ratio:.1f}', ha='center', fontsize=9, fontweight='bold')
ax4.text(bar.get_x() + bar.get_width()/2, 1,
f'{lat:.0f}°', ha='center', fontsize=8, color='white')
plt.tight_layout() plt.tight_layout()
plt.savefig(save_path, dpi=150, bbox_inches='tight') plt.savefig(save_path, dpi=150, bbox_inches='tight')
print(f"纬度影响图表已保存至: {save_path}") print(f"Latitude effects plot saved to: {save_path}")
return fig return fig
@@ -886,6 +816,7 @@ def plot_comparison(
engines = [ engines = [
EngineParams(name="固体火箭", isp=280, specific_energy=5e6), EngineParams(name="固体火箭", isp=280, specific_energy=5e6),
EngineParams(name="液氧煤油", isp=350, specific_energy=10.3e6), EngineParams(name="液氧煤油", isp=350, specific_energy=10.3e6),
EngineParams(name="液氧甲烷", isp=363, specific_energy=11.9e6),
EngineParams(name="液氧液氢", isp=450, specific_energy=15.5e6), EngineParams(name="液氧液氢", isp=450, specific_energy=15.5e6),
] ]
@@ -922,11 +853,11 @@ def plot_comparison(
if __name__ == "__main__": if __name__ == "__main__":
# 可以在这里修改参数 # 可以在这里修改参数
# 发动机参数 # 发动机参数 - 液氧甲烷 (LOX/CH4, Raptor-class)
engine = EngineParams( engine = EngineParams(
name="液氧液氢", name="液氧甲烷",
isp=450, # 比冲 (秒) isp=363, # 比冲 (秒)
specific_energy=15.5e6 # 燃料比能量 (J/kg) specific_energy=11.9e6 # 燃料比能量 (J/kg)
) )
# 任务参数 # 任务参数