What-If Scenario Tweaks

Demonstrate simple parameter tweaks (e.g., downtime probability) and compare KPI impacts.

[1]:
import sys
from pathlib import Path

PROJECT_ROOT = Path.cwd().resolve()
while PROJECT_ROOT != PROJECT_ROOT.parent and not (PROJECT_ROOT / "pyproject.toml").exists():
    PROJECT_ROOT = PROJECT_ROOT.parent
if not (PROJECT_ROOT / "pyproject.toml").exists():
    raise RuntimeError(
        "Notebook must be executed within a FHOPS checkout (pyproject.toml not found)."
    )
if str(PROJECT_ROOT) not in sys.path:
    sys.path.insert(0, str(PROJECT_ROOT))

from docs.examples.analytics import utils

SCENARIO = PROJECT_ROOT / "examples/synthetic/medium/scenario.yaml"
ASSIGNMENTS = PROJECT_ROOT / "docs/examples/analytics/data/scaling_medium_sa_assignments.csv"

base_tables, base_sampling = utils.run_stochastic_summary(SCENARIO, ASSIGNMENTS, tier="medium")
print("Base downtime probability:", base_sampling.downtime.probability)
Base downtime probability: 0.12

Adjusted Sampling

Increase downtime probability and observe KPI deltas.

[2]:
custom_sampling = base_sampling.model_copy()
custom_sampling.downtime.probability = 0.3
custom_tables, _ = utils.run_stochastic_summary(
    SCENARIO, ASSIGNMENTS, sampling_config=custom_sampling
)

base_prod = base_tables.shift.groupby("sample_id")["production_units"].sum().mean()
custom_prod = custom_tables.shift.groupby("sample_id")["production_units"].sum().mean()
print(f"Base mean production: {base_prod:.2f}")
print(f"Adjusted mean production: {custom_prod:.2f}")
Base mean production: 29.42
Adjusted mean production: 29.42