seeding expansion
also: replace energy output with energy output density
This commit is contained in:
@@ -417,22 +417,25 @@ class Pipeline:
|
||||
"""Simple heuristic estimation from dependency data."""
|
||||
raw: dict[str, float] = {m: 0.0 for m in metric_names}
|
||||
|
||||
# Extract force output from power source
|
||||
force_watts = 0.0
|
||||
# Extract intrinsic properties from entities
|
||||
power_density = 0.0 # W/kg
|
||||
energy_density = 0.0 # Wh/kg
|
||||
mass_kg = 100.0 # default
|
||||
for entity in combo.entities:
|
||||
for dep in entity.dependencies:
|
||||
if dep.key == "force_output_watts" and dep.constraint_type == "provides":
|
||||
force_watts = max(force_watts, float(dep.value))
|
||||
if dep.key == "min_mass_kg" and dep.constraint_type == "range_min":
|
||||
if dep.key == "power_density_w_kg" and dep.constraint_type == "provides":
|
||||
power_density = max(power_density, float(dep.value))
|
||||
if dep.key == "energy_density_wh_kg" and dep.constraint_type == "provides":
|
||||
energy_density = max(energy_density, float(dep.value))
|
||||
if dep.key == "mass_kg" and dep.constraint_type == "range_min":
|
||||
mass_kg = max(mass_kg, float(dep.value))
|
||||
|
||||
# Rough speed estimate: F=ma -> v proportional to power/mass
|
||||
if "speed" in raw and mass_kg > 0:
|
||||
raw["speed"] = min(force_watts / mass_kg * 0.5, 300000)
|
||||
# Rough speed estimate: higher power density → faster
|
||||
if "speed" in raw:
|
||||
raw["speed"] = min(power_density * 0.5, 300000)
|
||||
|
||||
if "cost_efficiency" in raw:
|
||||
raw["cost_efficiency"] = max(0.01, 2.0 - force_watts / 100000)
|
||||
raw["cost_efficiency"] = max(0.01, 2.0 - power_density / 1000)
|
||||
|
||||
if "safety" in raw:
|
||||
raw["safety"] = 0.5
|
||||
@@ -441,9 +444,21 @@ class Pipeline:
|
||||
raw["availability"] = 0.5
|
||||
|
||||
if "range_fuel" in raw:
|
||||
raw["range_fuel"] = min(force_watts * 0.01, 1e10)
|
||||
raw["range_fuel"] = min(energy_density * 10, 1e10)
|
||||
|
||||
if "range_degradation" in raw:
|
||||
raw["range_degradation"] = 365
|
||||
|
||||
if "cargo_capacity" in raw:
|
||||
raw["cargo_capacity"] = mass_kg * 0.5
|
||||
|
||||
if "cargo_capacity_kg" in raw:
|
||||
raw["cargo_capacity_kg"] = mass_kg * 0.3
|
||||
|
||||
if "environmental_impact" in raw:
|
||||
raw["environmental_impact"] = max(0.0, power_density * 0.2)
|
||||
|
||||
if "reliability" in raw:
|
||||
raw["reliability"] = 0.5
|
||||
|
||||
return raw
|
||||
|
||||
Reference in New Issue
Block a user