diff --git a/examples/README.md b/examples/README.md index ee82f95..e320ad6 100644 --- a/examples/README.md +++ b/examples/README.md @@ -21,6 +21,7 @@ Loadable Frontier problems: combinatorial, multi-objective decisions beyond a sp | **[Float-pool shift coverage](shift_coverage_staffing/)** | accept which of 120 per-diem shift offers staff next month's float pool – coverage / cost / fatigue, $210k budget + unit floors + per-nurse caps | frontier over 2^120 rosters | MILP certify + audit | [problem.json](shift_coverage_staffing/problem.json) · [scores.json](shift_coverage_staffing/scores.json) | | **[Community program funding](community_program_funding/)** | split a participatory budget across 32 programs from six districts – impact / residents served / delivery risk, 12% cap + risk ceiling + mandated district floors | frontier + overrun scenario | LP certify + duals | [problem.json](community_program_funding/problem.json) · [scores.json](community_program_funding/scores.json) | | **[Emergency readiness portfolio](emergency_readiness_portfolio/)** | fund 20–24 of 96 response assets across five hazard lines and four subregions – **weakest-link readiness (`min`)** / surge hours / cost / activation, $58M budget + surge floor + line & subregion floors and caps + shared crews + unit→cache dependencies | frontier over 2^96 portfolios + 2 scenarios | audit + **bottleneck ceiling** | [problem.json](emergency_readiness_portfolio/problem.json) · [scores.json](emergency_readiness_portfolio/scores.json) | +| **[Outage program scheduling](outage_program_scheduling/)** | schedule 30 maintenance jobs across four quarters – risk reduction / disruption cost / capex, 6 crews a quarter + $76M + a June-30 safety deadline + phase staging + corridor rivals; **time-phased structure, where a deferral cascades** | frontier over 2^115 (job, quarter) programs + 2 futures | MILP certify + audit | [problem.json](outage_program_scheduling/problem.json) · [scores.json](outage_program_scheduling/scores.json) | **Solver-exact explainability:** the [budget allocation](budget_allocation/), [production mix](production_mix/), [scarce supply rationing](scarce_supply_rationing/), and [community program funding](community_program_funding/) examples (purely linear **LP**) and the [investment portfolio](investment_portfolio/), [supplier selection](supplier_selection/), and [generation capacity planning](capacity_planning/) examples (mean-variance **QP**) each run the full workflow – `solve run` → `solve solver="highs"` → `explore certify` → `explore sensitivity` – surfacing shadow prices ("where to invest") and reduced costs ("near-misses", and the price of a contractual floor) straight from the optimizer on the continuous (LP / QP) paths. (Binary MILP shapes have no duals and fall back to the frontier-inferred estimate.) diff --git a/examples/outage_program_scheduling/README.md b/examples/outage_program_scheduling/README.md new file mode 100644 index 0000000..3a4af3a --- /dev/null +++ b/examples/outage_program_scheduling/README.md @@ -0,0 +1,68 @@ +# Annual maintenance outage program + +**The decision.** A regional utility locks next year's maintenance outage program: 30 jobs, each of which either takes an outage window in one of the four quarters or waits another year — maximizing risk reduction (MWh of unserved energy avoided) while holding down disruption cost and capex, under six outage crews a quarter, a $76M program budget, a mid-year deadline on the safety-critical work, phase-2 jobs that must follow their phase 1 in the very next window, and corridor rivals that stay out of the same quarter. + +**Why Frontier.** The **time-phased showcase**: *when* carries as much value as *whether*. Deferring a job inside the year costs risk reduction at that asset's own deterioration rate, while the disruption of taking it out swings with the season and the asset class — so 73% of the later windows survive a same-job comparison against their own job's earliest window (62 of 85) — live options rather than strictly worse copies — and the schedule is a choice, not a formality. The coupling makes those choices cascade: at the certified best-risk corner, `HY-03` (Vantry draft tube repair phase 1) sits in Q1 and its phase 2 `HY-04` in Q2; pin `HY-03` one quarter later and `HY-04`'s Q2 window dies with it — the staging rule admits only the window right after phase 1 — so `HY-04` slides to Q3 and the best attainable risk reduction falls 7,876 → 7,862 MWh. Lift the staging rule for that one pair and the same pin lands at 7,875 MWh: **13 of those 14 MWh are the knock-on on the dependent job**, not the pinned job's own 23 MWh of decay (the program reshuffles around the rest). A planner's own heuristic misses all of it: worst-asset-first-do-it-now puts 25 jobs into Q1 against six crews and spends $124.1M against a $76M budget, and the repaired version (deadline work first, then worst-first into the earliest open quarter) lands on a legal program that **three certified programs beat outright** — the best of them avoiding 470 MWh more at $2.5M less disruption and $2.6M less capex. + +**What ships here** — the raw inputs (step 1), the canonical model they frame into, and pre-solved results: + +- **`projects.csv`**: the job list a maintenance planner already has — 30 rows, no quarters in it. Risk reduction if done in Q1, the asset's per-quarter decay rate, base capex and disruption, the safety-critical flag, the phase-1 predecessor, and the corridor. +- **`quarter_factors.csv`**: the seasonal table — what each quarter does to disruption cost and capex, by asset class. +- **`problem.json`**: 3 objectives (RiskReduction maximize, DisruptionCost / Capex minimize, all `sum`), binary approach, and 69 constraints over the (job, quarter) pairs (the $76M bound, four per-quarter crew caps, one at-most-once rule per job, the June-30 deadline on the eight safety-critical jobs, 15 staging dependencies, and 11 corridor exclusions), plus the two futures — each `constraint_overrides` list **restates the full constraint set** (overrides replace, not merge) with one quarter's crew cap moved, and the summer future re-prices every Q3 pair on top of that. +- **`scores.json`**: the 115 (job, quarter) options the framing derives, each scored on the three objectives — the job's base values put through its own decay rate and its class's seasonal factors. +- **`solutions.json`**: the exploratory NSGA `run`, the exact-MILP `exact_run` overlay (HiGHS, zero-gap), and the per-future `scenario_run`. + +## The runbook + +1. **Frame it from the raw inputs** — paste this ask, together with `projects.csv` and `quarter_factors.csv`, into a fresh session: + + > We're locking next year's maintenance outage program and I'd like help scheduling it. + > `projects.csv` is the job list: 30 jobs, each with the risk reduction we'd book if we + > run it in Q1 (MWh of unserved energy avoided), how much of that we lose per quarter we + > defer it (the asset's deterioration rate), its base capex ($M), its base disruption + > cost ($M), whether it's safety-critical, whether it's phase 2 of another job, and which + > transmission corridor it sits on. `quarter_factors.csv` is the seasonal table: what + > each quarter does to disruption cost and to capex, by asset class. + > + > The decision is which jobs we run and which quarter each one runs in — a job we can't + > place waits for next year. We want the most total risk reduction, at the least total + > disruption cost and the least total capex. + > + > Hard rules: + > - We can field six outage crews in a quarter, so at most 6 outages a quarter. + > - The program stays within the $76M budget. + > - A job runs at most once — one quarter, or not at all. + > - The safety-critical jobs all have to run, and be in the ground by June 30. + > - A phase-2 job runs in the quarter right after its phase 1 — the asset can't sit in + > its interim configuration any longer than that. + > - Two jobs on the same corridor stay out of the same quarter. + > + > Two futures to stress-test: + > - **Summer demand surge** — a hotter summer: every Q3 outage costs 60% more in + > replacement power and interruption exposure, and operations releases only 3 crews' + > worth of Q3 windows. + > - **Crew shortage** — spring storm restoration pulls line crews off planned work: Q2 + > fields 4 crews instead of six. Everything else holds. + + Framing that input (`model create` + `model update`) lands on exactly this problem: the agent turns the job list into one option per job per quarter it could run in — `TX-01 Q1`, `TX-01 Q2`, … — scores each from the job's own decay rate and its class's seasonal factors, and encodes the rules against those pairs (a phase-2 job has no Q1 option at all; its phase 1 has to come first). The ask plus the two CSVs reconstruct `problem.json` and `scores.json` verbatim (guarded by `tests/test_upstream_kits.py`). `model load source="outage_program_scheduling"` is the shortcut: it skips framing and restores the pre-solved runs too. + +2. *“Which jobs make next year's program, and which quarter does each one run in? Show me the real risk/disruption/spend choices.”* + `solve run` → `explore tradeoffs`: the frontier over 2^115 candidate programs. The shipped run spans the smallest legal program — the eight safety-critical jobs and nothing else, 3,853 MWh avoided at $23.1M disruption and $37.9M capex — up to an 18-outage program at 7,369 MWh, $50.5M and $73.7M that fills Q1 and Q2 and pushes four jobs into the expensive summer. The clearest read of what the calendar alone is worth sits at the bottom of that range: **that same eight-job set holds three separate places on the frontier, differing only in quarters** — 3,853 MWh at $23.1M, 3,958 MWh at $25.2M, and 4,061 MWh at $28.0M. Identical work, four jobs pulled from Q2 into Q1: +208 MWh of avoided unserved energy for $4.9M more disruption. + +3. *“Keep the front-loaded program and the balanced one as finalists. How much should I trust them?”* + `explore curate` per pick → `solve solver="highs" exact=true` → `explore certify`: the zero-gap MILP overlay. On the shipped runs it dominates **15 of the 40** heuristic programs (38% — whole-program dominance, each heuristic program measured against every certified one), reclaims 11% of the covered tradeoff volume, holds the invariant (NSGA dominates no exact point), and sharpens the risk corner from 7,369 to **7,876 MWh (+507)**. Both finalists come back `dominated` with a named certified counterpart — the standard next beat is re-curating each counterpart (`explore curate` on the certified point that beats it): + - *front-loaded* (7,369.3 MWh / $50.46M / $73.68M) → beaten by a certified 18-outage program at **7,508.7 MWh / $50.37M / $72.39M** — +139 MWh for $1.29M *less* capex. + - *balanced* (5,579.4 MWh / $35.46M / $55.06M) → beaten by a certified 13-outage program at **5,696.0 MWh / $34.64M / $51.10M** — +117 MWh, $0.82M less disruption, $3.96M less capex. + +4. *“Which of these survive a hot summer or a crew shortage in Q2?”* + `solve run_scenarios` → `explore scenario_results` + `explore scenario_frontiers`: the program re-solved per future. Under the summer surge (Q3 re-priced +60%, Q3 crews cut to three) 36 of the 40 base programs stay legal — the front-loaded finalist is one of the four that break, and it re-prices from $50.5M to **$56.0M** of disruption; the best attainable risk reduction falls to 7,819 MWh. The Q2 crew shortage is the harsher future: only **5 of 40** base programs survive it, and the ceiling falls 7,876 → **7,738 MWh**. + +5. *“Which quarter is the bottleneck, what would one more crew there buy, and can you guarantee the safety work lands before the deadline whatever program we pick?”* + `explore sensitivity` → `explore audit` → `explore composition`. Integer selections carry no solver duals, so sensitivity returns the frontier-inferred binding read: the Q1 and Q2 crew caps sit at their limit in **86%** of frontier programs, Q3 in 16%, Q4 in none of them, and the $76M budget in 18%. That ranks the year but leaves Q1 and Q2 tied, so take the rate as a direction and confirm it by re-solve — which splits them cleanly: a **seventh crew in Q1 is worth +101 MWh** (7,876 → 7,977), the same crew in Q2 +52, in Q3 +9, and in Q4 nothing at all. Then the guarantee, over **every** feasible program rather than the frontier: `[no safety-critical work in H2] AND [Ivyloch phase 1 always runs in Q1] AND [at least 2 of the 7 deadline jobs with a Q1 window run in Q1]` comes back `holds`. All three are emergent — the model says where the safety work *must* go, never where it may not, and the Ivyloch pin falls out of the staging rule meeting the deadline (phase 2's only H1 window is Q2, so phase 1 has nowhere but Q1). Tighten the Q1 floor to 3 and the audit returns a concrete counterexample: an 8-outage program carrying exactly 2. `explore composition` shows the same structure from the frontier side — `SB-02 Q1` and `SB-03 Q2` appear in 100% of the shipped run's programs, the staged pair moving as one unit, which is where a deferral turns into a cascade. (SB-03 wears both labels here: it is one of the eight safety-critical jobs *and* the phase-2 half of the staged pair. Staging strips its Q1 window, which is why the audit's floor counts 7 deadline jobs rather than 8 — and its own June-30 deadline is met in Q2, the only H1 window staging leaves it.) + +6. *“Write the program up for the reliability review.”* + `explore curated format="markdown"`: the handoff table, quarter by quarter. + +**Encoding note.** The user talks about jobs and quarters; the model works in (job, quarter) pairs, and the translation is the agent's job. It buys the whole time dimension inside the standard binary MILP shape: deferral value decay and seasonality become scores, "at most one quarter" becomes a per-job group limit, per-quarter crew capacity becomes a group limit over that quarter's pairs, and precedence becomes dependencies between the pairs. What the vocabulary expresses exactly is *consecutive-window* staging ("phase 2 in the quarter right after phase 1"), which is why the phase rule reads that way; a looser "any earlier quarter" precedence would need a disjunction over windows that a single dependency doesn't carry. + +**Scale note.** Thirty jobs stay narratable while 2^115 (job, quarter) programs is far past hand-scheduling, and the per-option dominance advisory is worth reading with the scope of each count in mind. The advisory's scope is **global** — each pair against every other option, cross-job comparisons included — and it flags 82 of the 115 pairs (its echo lists the first 20). Restricted to **same-job** dominance — a pair beaten by another window of its own job — the count is 58; the overview's 73% reads the narrowest cut of all from the survivor side — 62 of 85 later windows clear their job's earliest window alone. And the flag is advice about an option, not a verdict on a program: 36 of the 82 still appear in certified-optimal programs — with six crews a quarter, a "worse" window is often the only window. For the same binary MILP arc without the time dimension see [`capital_project_selection_300`](../capital_project_selection_300/); for dependencies and envelopes as scenarios, [`interconnection_approvals`](../interconnection_approvals/). diff --git a/examples/outage_program_scheduling/problem.json b/examples/outage_program_scheduling/problem.json new file mode 100644 index 0000000..97cb856 --- /dev/null +++ b/examples/outage_program_scheduling/problem.json @@ -0,0 +1,2228 @@ +{ + "name": "Annual maintenance outage program", + "domain": "Electric utility / asset management", + "context": "A regional utility locks next year's maintenance outage program: 30 jobs, each of which either takes an outage window in one of the four quarters or waits another year. Deferring a job inside the year costs risk reduction at that asset's own deterioration rate, while the disruption of taking it out swings with the season and the asset class \u2014 so the decision is which quarter, not only whether. Six outage crews a quarter, a $76M program budget, a mid-year regulatory deadline on the safety-critical work, phase-2 jobs that must follow their phase 1 in the very next window, and corridor rivals that can't be out together.", + "approach": "binary", + "objectives": [ + { + "name": "RiskReduction", + "direction": "maximize", + "unit": "MWh unserved-energy avoided", + "aggregation": "sum" + }, + { + "name": "DisruptionCost", + "direction": "minimize", + "unit": "$M", + "aggregation": "sum" + }, + { + "name": "Capex", + "direction": "minimize", + "unit": "$M", + "aggregation": "sum" + } + ], + "constraints": [ + { + "type": "objective_bound", + "objective": "Capex", + "operator": "max", + "value": 76.0 + }, + { + "type": "group_limit", + "options": [ + "TX-01 Q1", + "TX-02 Q1", + "TX-03 Q1", + "TX-04 Q1", + "TX-05 Q1", + "TX-06 Q1", + "TX-07 Q1", + "SB-01 Q1", + "SB-02 Q1", + "SB-04 Q1", + "SB-05 Q1", + "SB-07 Q1", + "GT-01 Q1", + "GT-02 Q1", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q1", + "HY-02 Q1", + "HY-03 Q1", + "DX-01 Q1", + "DX-02 Q1", + "DX-03 Q1", + "DX-04 Q1", + "DX-06 Q1", + "DX-07 Q1" + ], + "min": 0, + "max": 6 + }, + { + "type": "group_limit", + "options": [ + "TX-01 Q2", + "TX-02 Q2", + "TX-03 Q2", + "TX-04 Q2", + "TX-05 Q2", + "TX-06 Q2", + "TX-07 Q2", + "SB-01 Q2", + "SB-02 Q2", + "SB-03 Q2", + "SB-04 Q2", + "SB-05 Q2", + "SB-06 Q2", + "SB-07 Q2", + "GT-01 Q2", + "GT-02 Q2", + "GT-03 Q2", + "GT-04 Q2", + "GT-05 Q2", + "HY-01 Q2", + "HY-02 Q2", + "HY-03 Q2", + "HY-04 Q2", + "DX-01 Q2", + "DX-02 Q2", + "DX-03 Q2", + "DX-04 Q2", + "DX-05 Q2", + "DX-06 Q2", + "DX-07 Q2" + ], + "min": 0, + "max": 6 + }, + { + "type": "group_limit", + "options": [ + "TX-01 Q3", + "TX-02 Q3", + "TX-03 Q3", + "TX-04 Q3", + "TX-05 Q3", + "TX-06 Q3", + "TX-07 Q3", + "SB-01 Q3", + "SB-02 Q3", + "SB-03 Q3", + "SB-04 Q3", + "SB-05 Q3", + "SB-06 Q3", + "SB-07 Q3", + "GT-01 Q3", + "GT-02 Q3", + "GT-03 Q3", + "GT-04 Q3", + "GT-05 Q3", + "HY-01 Q3", + "HY-02 Q3", + "HY-03 Q3", + "HY-04 Q3", + "DX-01 Q3", + "DX-02 Q3", + "DX-03 Q3", + "DX-04 Q3", + "DX-05 Q3", + "DX-06 Q3", + "DX-07 Q3" + ], + "min": 0, + "max": 6 + }, + { + "type": "group_limit", + "options": [ + "TX-01 Q4", + "TX-02 Q4", + "TX-03 Q4", + "TX-04 Q4", + "TX-05 Q4", + "TX-06 Q4", + "TX-07 Q4", + "SB-01 Q4", + "SB-02 Q4", + "SB-03 Q4", + "SB-04 Q4", + "SB-05 Q4", + "SB-06 Q4", + "SB-07 Q4", + "GT-01 Q4", + "GT-02 Q4", + "GT-03 Q4", + "GT-04 Q4", + "GT-05 Q4", + "HY-01 Q4", + "HY-02 Q4", + "HY-03 Q4", + "HY-04 Q4", + "DX-01 Q4", + "DX-02 Q4", + "DX-03 Q4", + "DX-04 Q4", + "DX-05 Q4", + "DX-06 Q4", + "DX-07 Q4" + ], + "min": 0, + "max": 6 + }, + { + "type": "group_limit", + "options": [ + "TX-01 Q1", + "TX-01 Q2", + "TX-01 Q3", + "TX-01 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "TX-01 Q1", + "TX-01 Q2" + ], + "min": 1, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "TX-02 Q1", + "TX-02 Q2", + "TX-02 Q3", + "TX-02 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "TX-03 Q1", + "TX-03 Q2", + "TX-03 Q3", + "TX-03 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "TX-04 Q1", + "TX-04 Q2", + "TX-04 Q3", + "TX-04 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "TX-04 Q1", + "TX-04 Q2" + ], + "min": 1, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "TX-05 Q1", + "TX-05 Q2", + "TX-05 Q3", + "TX-05 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "TX-06 Q1", + "TX-06 Q2", + "TX-06 Q3", + "TX-06 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "TX-07 Q1", + "TX-07 Q2", + "TX-07 Q3", + "TX-07 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "SB-01 Q1", + "SB-01 Q2", + "SB-01 Q3", + "SB-01 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "SB-01 Q1", + "SB-01 Q2" + ], + "min": 1, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "SB-02 Q1", + "SB-02 Q2", + "SB-02 Q3", + "SB-02 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "SB-02 Q1", + "SB-02 Q2" + ], + "min": 1, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "SB-03 Q2", + "SB-03 Q3", + "SB-03 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "SB-03 Q2" + ], + "min": 1, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "SB-04 Q1", + "SB-04 Q2", + "SB-04 Q3", + "SB-04 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "SB-05 Q1", + "SB-05 Q2", + "SB-05 Q3", + "SB-05 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "SB-06 Q2", + "SB-06 Q3", + "SB-06 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "SB-07 Q1", + "SB-07 Q2", + "SB-07 Q3", + "SB-07 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "GT-01 Q1", + "GT-01 Q2", + "GT-01 Q3", + "GT-01 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "GT-02 Q1", + "GT-02 Q2", + "GT-02 Q3", + "GT-02 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "GT-03 Q2", + "GT-03 Q3", + "GT-03 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "GT-04 Q1", + "GT-04 Q2", + "GT-04 Q3", + "GT-04 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "GT-04 Q1", + "GT-04 Q2" + ], + "min": 1, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "GT-05 Q1", + "GT-05 Q2", + "GT-05 Q3", + "GT-05 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "HY-01 Q1", + "HY-01 Q2", + "HY-01 Q3", + "HY-01 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "HY-02 Q1", + "HY-02 Q2", + "HY-02 Q3", + "HY-02 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "HY-02 Q1", + "HY-02 Q2" + ], + "min": 1, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "HY-03 Q1", + "HY-03 Q2", + "HY-03 Q3", + "HY-03 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "HY-04 Q2", + "HY-04 Q3", + "HY-04 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "DX-01 Q1", + "DX-01 Q2", + "DX-01 Q3", + "DX-01 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "DX-02 Q1", + "DX-02 Q2", + "DX-02 Q3", + "DX-02 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "DX-02 Q1", + "DX-02 Q2" + ], + "min": 1, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "DX-03 Q1", + "DX-03 Q2", + "DX-03 Q3", + "DX-03 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "DX-04 Q1", + "DX-04 Q2", + "DX-04 Q3", + "DX-04 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "DX-05 Q2", + "DX-05 Q3", + "DX-05 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "DX-06 Q1", + "DX-06 Q2", + "DX-06 Q3", + "DX-06 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "DX-07 Q1", + "DX-07 Q2", + "DX-07 Q3", + "DX-07 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "dependency", + "if_option": "SB-03 Q2", + "then_option": "SB-02 Q1" + }, + { + "type": "dependency", + "if_option": "SB-03 Q3", + "then_option": "SB-02 Q2" + }, + { + "type": "dependency", + "if_option": "SB-03 Q4", + "then_option": "SB-02 Q3" + }, + { + "type": "dependency", + "if_option": "SB-06 Q2", + "then_option": "SB-05 Q1" + }, + { + "type": "dependency", + "if_option": "SB-06 Q3", + "then_option": "SB-05 Q2" + }, + { + "type": "dependency", + "if_option": "SB-06 Q4", + "then_option": "SB-05 Q3" + }, + { + "type": "dependency", + "if_option": "GT-03 Q2", + "then_option": "GT-02 Q1" + }, + { + "type": "dependency", + "if_option": "GT-03 Q3", + "then_option": "GT-02 Q2" + }, + { + "type": "dependency", + "if_option": "GT-03 Q4", + "then_option": "GT-02 Q3" + }, + { + "type": "dependency", + "if_option": "HY-04 Q2", + "then_option": "HY-03 Q1" + }, + { + "type": "dependency", + "if_option": "HY-04 Q3", + "then_option": "HY-03 Q2" + }, + { + "type": "dependency", + "if_option": "HY-04 Q4", + "then_option": "HY-03 Q3" + }, + { + "type": "dependency", + "if_option": "DX-05 Q2", + "then_option": "DX-04 Q1" + }, + { + "type": "dependency", + "if_option": "DX-05 Q3", + "then_option": "DX-04 Q2" + }, + { + "type": "dependency", + "if_option": "DX-05 Q4", + "then_option": "DX-04 Q3" + }, + { + "type": "exclusion_pair", + "option_a": "TX-01 Q1", + "option_b": "TX-03 Q1" + }, + { + "type": "exclusion_pair", + "option_a": "TX-01 Q2", + "option_b": "TX-03 Q2" + }, + { + "type": "exclusion_pair", + "option_a": "TX-01 Q3", + "option_b": "TX-03 Q3" + }, + { + "type": "exclusion_pair", + "option_a": "TX-01 Q4", + "option_b": "TX-03 Q4" + }, + { + "type": "exclusion_pair", + "option_a": "TX-05 Q1", + "option_b": "TX-06 Q1" + }, + { + "type": "exclusion_pair", + "option_a": "TX-05 Q2", + "option_b": "TX-06 Q2" + }, + { + "type": "exclusion_pair", + "option_a": "TX-05 Q3", + "option_b": "TX-06 Q3" + }, + { + "type": "exclusion_pair", + "option_a": "TX-05 Q4", + "option_b": "TX-06 Q4" + }, + { + "type": "exclusion_pair", + "option_a": "DX-01 Q2", + "option_b": "DX-05 Q2" + }, + { + "type": "exclusion_pair", + "option_a": "DX-01 Q3", + "option_b": "DX-05 Q3" + }, + { + "type": "exclusion_pair", + "option_a": "DX-01 Q4", + "option_b": "DX-05 Q4" + } + ], + "scenarios": [ + { + "name": "summer_demand_surge", + "probability": null, + "description": "A hotter-than-planned summer: every Q3 outage costs 60% more in replacement power and interruption exposure, and system operations will release only three crews' worth of outage windows in Q3. Q1/Q2/Q4 are unchanged.", + "base_constraints_fingerprint": "", + "score_overrides": [ + { + "option": "TX-01 Q3", + "objective": "DisruptionCost", + "value": 9.84 + }, + { + "option": "TX-02 Q3", + "objective": "DisruptionCost", + "value": 6.0 + }, + { + "option": "TX-03 Q3", + "objective": "DisruptionCost", + "value": 10.11 + }, + { + "option": "TX-04 Q3", + "objective": "DisruptionCost", + "value": 7.79 + }, + { + "option": "TX-05 Q3", + "objective": "DisruptionCost", + "value": 6.32 + }, + { + "option": "TX-06 Q3", + "objective": "DisruptionCost", + "value": 10.46 + }, + { + "option": "TX-07 Q3", + "objective": "DisruptionCost", + "value": 5.55 + }, + { + "option": "SB-01 Q3", + "objective": "DisruptionCost", + "value": 3.54 + }, + { + "option": "SB-02 Q3", + "objective": "DisruptionCost", + "value": 6.4 + }, + { + "option": "SB-03 Q3", + "objective": "DisruptionCost", + "value": 7.6 + }, + { + "option": "SB-04 Q3", + "objective": "DisruptionCost", + "value": 7.92 + }, + { + "option": "SB-05 Q3", + "objective": "DisruptionCost", + "value": 2.85 + }, + { + "option": "SB-06 Q3", + "objective": "DisruptionCost", + "value": 2.13 + }, + { + "option": "SB-07 Q3", + "objective": "DisruptionCost", + "value": 2.7 + }, + { + "option": "GT-01 Q3", + "objective": "DisruptionCost", + "value": 4.54 + }, + { + "option": "GT-02 Q3", + "objective": "DisruptionCost", + "value": 8.62 + }, + { + "option": "GT-03 Q3", + "objective": "DisruptionCost", + "value": 9.14 + }, + { + "option": "GT-04 Q3", + "objective": "DisruptionCost", + "value": 6.11 + }, + { + "option": "GT-05 Q3", + "objective": "DisruptionCost", + "value": 5.22 + }, + { + "option": "HY-01 Q3", + "objective": "DisruptionCost", + "value": 2.78 + }, + { + "option": "HY-02 Q3", + "objective": "DisruptionCost", + "value": 7.49 + }, + { + "option": "HY-03 Q3", + "objective": "DisruptionCost", + "value": 3.34 + }, + { + "option": "HY-04 Q3", + "objective": "DisruptionCost", + "value": 5.92 + }, + { + "option": "DX-01 Q3", + "objective": "DisruptionCost", + "value": 3.54 + }, + { + "option": "DX-02 Q3", + "objective": "DisruptionCost", + "value": 13.09 + }, + { + "option": "DX-03 Q3", + "objective": "DisruptionCost", + "value": 1.42 + }, + { + "option": "DX-04 Q3", + "objective": "DisruptionCost", + "value": 3.04 + }, + { + "option": "DX-05 Q3", + "objective": "DisruptionCost", + "value": 2.32 + }, + { + "option": "DX-06 Q3", + "objective": "DisruptionCost", + "value": 3.66 + }, + { + "option": "DX-07 Q3", + "objective": "DisruptionCost", + "value": 5.9 + } + ], + "score_adjustments": [], + "constraint_overrides": [ + { + "type": "objective_bound", + "objective": "Capex", + "operator": "max", + "value": 76.0 + }, + { + "type": "group_limit", + "options": [ + "TX-01 Q1", + "TX-02 Q1", + "TX-03 Q1", + "TX-04 Q1", + "TX-05 Q1", + "TX-06 Q1", + "TX-07 Q1", + "SB-01 Q1", + "SB-02 Q1", + "SB-04 Q1", + "SB-05 Q1", + "SB-07 Q1", + "GT-01 Q1", + "GT-02 Q1", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q1", + "HY-02 Q1", + "HY-03 Q1", + "DX-01 Q1", + "DX-02 Q1", + "DX-03 Q1", + "DX-04 Q1", + "DX-06 Q1", + "DX-07 Q1" + ], + "min": 0, + "max": 6 + }, + { + "type": "group_limit", + "options": [ + "TX-01 Q2", + "TX-02 Q2", + "TX-03 Q2", + "TX-04 Q2", + "TX-05 Q2", + "TX-06 Q2", + "TX-07 Q2", + "SB-01 Q2", + "SB-02 Q2", + "SB-03 Q2", + "SB-04 Q2", + "SB-05 Q2", + "SB-06 Q2", + "SB-07 Q2", + "GT-01 Q2", + "GT-02 Q2", + "GT-03 Q2", + "GT-04 Q2", + "GT-05 Q2", + "HY-01 Q2", + "HY-02 Q2", + "HY-03 Q2", + "HY-04 Q2", + "DX-01 Q2", + "DX-02 Q2", + "DX-03 Q2", + "DX-04 Q2", + "DX-05 Q2", + "DX-06 Q2", + "DX-07 Q2" + ], + "min": 0, + "max": 6 + }, + { + "type": "group_limit", + "options": [ + "TX-01 Q3", + "TX-02 Q3", + "TX-03 Q3", + "TX-04 Q3", + "TX-05 Q3", + "TX-06 Q3", + "TX-07 Q3", + "SB-01 Q3", + "SB-02 Q3", + "SB-03 Q3", + "SB-04 Q3", + "SB-05 Q3", + "SB-06 Q3", + "SB-07 Q3", + "GT-01 Q3", + "GT-02 Q3", + "GT-03 Q3", + "GT-04 Q3", + "GT-05 Q3", + "HY-01 Q3", + "HY-02 Q3", + "HY-03 Q3", + "HY-04 Q3", + "DX-01 Q3", + "DX-02 Q3", + "DX-03 Q3", + "DX-04 Q3", + "DX-05 Q3", + "DX-06 Q3", + "DX-07 Q3" + ], + "min": 0, + "max": 3 + }, + { + "type": "group_limit", + "options": [ + "TX-01 Q4", + "TX-02 Q4", + "TX-03 Q4", + "TX-04 Q4", + "TX-05 Q4", + "TX-06 Q4", + "TX-07 Q4", + "SB-01 Q4", + "SB-02 Q4", + "SB-03 Q4", + "SB-04 Q4", + "SB-05 Q4", + "SB-06 Q4", + "SB-07 Q4", + "GT-01 Q4", + "GT-02 Q4", + "GT-03 Q4", + "GT-04 Q4", + "GT-05 Q4", + "HY-01 Q4", + "HY-02 Q4", + "HY-03 Q4", + "HY-04 Q4", + "DX-01 Q4", + "DX-02 Q4", + "DX-03 Q4", + "DX-04 Q4", + "DX-05 Q4", + "DX-06 Q4", + "DX-07 Q4" + ], + "min": 0, + "max": 6 + }, + { + "type": "group_limit", + "options": [ + "TX-01 Q1", + "TX-01 Q2", + "TX-01 Q3", + "TX-01 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "TX-01 Q1", + "TX-01 Q2" + ], + "min": 1, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "TX-02 Q1", + "TX-02 Q2", + "TX-02 Q3", + "TX-02 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "TX-03 Q1", + "TX-03 Q2", + "TX-03 Q3", + "TX-03 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "TX-04 Q1", + "TX-04 Q2", + "TX-04 Q3", + "TX-04 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "TX-04 Q1", + "TX-04 Q2" + ], + "min": 1, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "TX-05 Q1", + "TX-05 Q2", + "TX-05 Q3", + "TX-05 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "TX-06 Q1", + "TX-06 Q2", + "TX-06 Q3", + "TX-06 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "TX-07 Q1", + "TX-07 Q2", + "TX-07 Q3", + "TX-07 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "SB-01 Q1", + "SB-01 Q2", + "SB-01 Q3", + "SB-01 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "SB-01 Q1", + "SB-01 Q2" + ], + "min": 1, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "SB-02 Q1", + "SB-02 Q2", + "SB-02 Q3", + "SB-02 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "SB-02 Q1", + "SB-02 Q2" + ], + "min": 1, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "SB-03 Q2", + "SB-03 Q3", + "SB-03 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "SB-03 Q2" + ], + "min": 1, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "SB-04 Q1", + "SB-04 Q2", + "SB-04 Q3", + "SB-04 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "SB-05 Q1", + "SB-05 Q2", + "SB-05 Q3", + "SB-05 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "SB-06 Q2", + "SB-06 Q3", + "SB-06 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "SB-07 Q1", + "SB-07 Q2", + "SB-07 Q3", + "SB-07 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "GT-01 Q1", + "GT-01 Q2", + "GT-01 Q3", + "GT-01 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "GT-02 Q1", + "GT-02 Q2", + "GT-02 Q3", + "GT-02 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "GT-03 Q2", + "GT-03 Q3", + "GT-03 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "GT-04 Q1", + "GT-04 Q2", + "GT-04 Q3", + "GT-04 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "GT-04 Q1", + "GT-04 Q2" + ], + "min": 1, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "GT-05 Q1", + "GT-05 Q2", + "GT-05 Q3", + "GT-05 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "HY-01 Q1", + "HY-01 Q2", + "HY-01 Q3", + "HY-01 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "HY-02 Q1", + "HY-02 Q2", + "HY-02 Q3", + "HY-02 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "HY-02 Q1", + "HY-02 Q2" + ], + "min": 1, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "HY-03 Q1", + "HY-03 Q2", + "HY-03 Q3", + "HY-03 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "HY-04 Q2", + "HY-04 Q3", + "HY-04 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "DX-01 Q1", + "DX-01 Q2", + "DX-01 Q3", + "DX-01 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "DX-02 Q1", + "DX-02 Q2", + "DX-02 Q3", + "DX-02 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "DX-02 Q1", + "DX-02 Q2" + ], + "min": 1, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "DX-03 Q1", + "DX-03 Q2", + "DX-03 Q3", + "DX-03 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "DX-04 Q1", + "DX-04 Q2", + "DX-04 Q3", + "DX-04 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "DX-05 Q2", + "DX-05 Q3", + "DX-05 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "DX-06 Q1", + "DX-06 Q2", + "DX-06 Q3", + "DX-06 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "DX-07 Q1", + "DX-07 Q2", + "DX-07 Q3", + "DX-07 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "dependency", + "if_option": "SB-03 Q2", + "then_option": "SB-02 Q1" + }, + { + "type": "dependency", + "if_option": "SB-03 Q3", + "then_option": "SB-02 Q2" + }, + { + "type": "dependency", + "if_option": "SB-03 Q4", + "then_option": "SB-02 Q3" + }, + { + "type": "dependency", + "if_option": "SB-06 Q2", + "then_option": "SB-05 Q1" + }, + { + "type": "dependency", + "if_option": "SB-06 Q3", + "then_option": "SB-05 Q2" + }, + { + "type": "dependency", + "if_option": "SB-06 Q4", + "then_option": "SB-05 Q3" + }, + { + "type": "dependency", + "if_option": "GT-03 Q2", + "then_option": "GT-02 Q1" + }, + { + "type": "dependency", + "if_option": "GT-03 Q3", + "then_option": "GT-02 Q2" + }, + { + "type": "dependency", + "if_option": "GT-03 Q4", + "then_option": "GT-02 Q3" + }, + { + "type": "dependency", + "if_option": "HY-04 Q2", + "then_option": "HY-03 Q1" + }, + { + "type": "dependency", + "if_option": "HY-04 Q3", + "then_option": "HY-03 Q2" + }, + { + "type": "dependency", + "if_option": "HY-04 Q4", + "then_option": "HY-03 Q3" + }, + { + "type": "dependency", + "if_option": "DX-05 Q2", + "then_option": "DX-04 Q1" + }, + { + "type": "dependency", + "if_option": "DX-05 Q3", + "then_option": "DX-04 Q2" + }, + { + "type": "dependency", + "if_option": "DX-05 Q4", + "then_option": "DX-04 Q3" + }, + { + "type": "exclusion_pair", + "option_a": "TX-01 Q1", + "option_b": "TX-03 Q1" + }, + { + "type": "exclusion_pair", + "option_a": "TX-01 Q2", + "option_b": "TX-03 Q2" + }, + { + "type": "exclusion_pair", + "option_a": "TX-01 Q3", + "option_b": "TX-03 Q3" + }, + { + "type": "exclusion_pair", + "option_a": "TX-01 Q4", + "option_b": "TX-03 Q4" + }, + { + "type": "exclusion_pair", + "option_a": "TX-05 Q1", + "option_b": "TX-06 Q1" + }, + { + "type": "exclusion_pair", + "option_a": "TX-05 Q2", + "option_b": "TX-06 Q2" + }, + { + "type": "exclusion_pair", + "option_a": "TX-05 Q3", + "option_b": "TX-06 Q3" + }, + { + "type": "exclusion_pair", + "option_a": "TX-05 Q4", + "option_b": "TX-06 Q4" + }, + { + "type": "exclusion_pair", + "option_a": "DX-01 Q2", + "option_b": "DX-05 Q2" + }, + { + "type": "exclusion_pair", + "option_a": "DX-01 Q3", + "option_b": "DX-05 Q3" + }, + { + "type": "exclusion_pair", + "option_a": "DX-01 Q4", + "option_b": "DX-05 Q4" + } + ], + "interaction_matrix_overrides": [] + }, + { + "name": "crew_shortage_q2", + "probability": null, + "description": "Spring storm restoration pulls line crews off planned work: Q2 fields four outage crews instead of six. Nothing else moves \u2014 the same jobs, the same seasonal costs, the same deadline.", + "base_constraints_fingerprint": "", + "score_overrides": [], + "score_adjustments": [], + "constraint_overrides": [ + { + "type": "objective_bound", + "objective": "Capex", + "operator": "max", + "value": 76.0 + }, + { + "type": "group_limit", + "options": [ + "TX-01 Q1", + "TX-02 Q1", + "TX-03 Q1", + "TX-04 Q1", + "TX-05 Q1", + "TX-06 Q1", + "TX-07 Q1", + "SB-01 Q1", + "SB-02 Q1", + "SB-04 Q1", + "SB-05 Q1", + "SB-07 Q1", + "GT-01 Q1", + "GT-02 Q1", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q1", + "HY-02 Q1", + "HY-03 Q1", + "DX-01 Q1", + "DX-02 Q1", + "DX-03 Q1", + "DX-04 Q1", + "DX-06 Q1", + "DX-07 Q1" + ], + "min": 0, + "max": 6 + }, + { + "type": "group_limit", + "options": [ + "TX-01 Q2", + "TX-02 Q2", + "TX-03 Q2", + "TX-04 Q2", + "TX-05 Q2", + "TX-06 Q2", + "TX-07 Q2", + "SB-01 Q2", + "SB-02 Q2", + "SB-03 Q2", + "SB-04 Q2", + "SB-05 Q2", + "SB-06 Q2", + "SB-07 Q2", + "GT-01 Q2", + "GT-02 Q2", + "GT-03 Q2", + "GT-04 Q2", + "GT-05 Q2", + "HY-01 Q2", + "HY-02 Q2", + "HY-03 Q2", + "HY-04 Q2", + "DX-01 Q2", + "DX-02 Q2", + "DX-03 Q2", + "DX-04 Q2", + "DX-05 Q2", + "DX-06 Q2", + "DX-07 Q2" + ], + "min": 0, + "max": 4 + }, + { + "type": "group_limit", + "options": [ + "TX-01 Q3", + "TX-02 Q3", + "TX-03 Q3", + "TX-04 Q3", + "TX-05 Q3", + "TX-06 Q3", + "TX-07 Q3", + "SB-01 Q3", + "SB-02 Q3", + "SB-03 Q3", + "SB-04 Q3", + "SB-05 Q3", + "SB-06 Q3", + "SB-07 Q3", + "GT-01 Q3", + "GT-02 Q3", + "GT-03 Q3", + "GT-04 Q3", + "GT-05 Q3", + "HY-01 Q3", + "HY-02 Q3", + "HY-03 Q3", + "HY-04 Q3", + "DX-01 Q3", + "DX-02 Q3", + "DX-03 Q3", + "DX-04 Q3", + "DX-05 Q3", + "DX-06 Q3", + "DX-07 Q3" + ], + "min": 0, + "max": 6 + }, + { + "type": "group_limit", + "options": [ + "TX-01 Q4", + "TX-02 Q4", + "TX-03 Q4", + "TX-04 Q4", + "TX-05 Q4", + "TX-06 Q4", + "TX-07 Q4", + "SB-01 Q4", + "SB-02 Q4", + "SB-03 Q4", + "SB-04 Q4", + "SB-05 Q4", + "SB-06 Q4", + "SB-07 Q4", + "GT-01 Q4", + "GT-02 Q4", + "GT-03 Q4", + "GT-04 Q4", + "GT-05 Q4", + "HY-01 Q4", + "HY-02 Q4", + "HY-03 Q4", + "HY-04 Q4", + "DX-01 Q4", + "DX-02 Q4", + "DX-03 Q4", + "DX-04 Q4", + "DX-05 Q4", + "DX-06 Q4", + "DX-07 Q4" + ], + "min": 0, + "max": 6 + }, + { + "type": "group_limit", + "options": [ + "TX-01 Q1", + "TX-01 Q2", + "TX-01 Q3", + "TX-01 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "TX-01 Q1", + "TX-01 Q2" + ], + "min": 1, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "TX-02 Q1", + "TX-02 Q2", + "TX-02 Q3", + "TX-02 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "TX-03 Q1", + "TX-03 Q2", + "TX-03 Q3", + "TX-03 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "TX-04 Q1", + "TX-04 Q2", + "TX-04 Q3", + "TX-04 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "TX-04 Q1", + "TX-04 Q2" + ], + "min": 1, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "TX-05 Q1", + "TX-05 Q2", + "TX-05 Q3", + "TX-05 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "TX-06 Q1", + "TX-06 Q2", + "TX-06 Q3", + "TX-06 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "TX-07 Q1", + "TX-07 Q2", + "TX-07 Q3", + "TX-07 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "SB-01 Q1", + "SB-01 Q2", + "SB-01 Q3", + "SB-01 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "SB-01 Q1", + "SB-01 Q2" + ], + "min": 1, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "SB-02 Q1", + "SB-02 Q2", + "SB-02 Q3", + "SB-02 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "SB-02 Q1", + "SB-02 Q2" + ], + "min": 1, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "SB-03 Q2", + "SB-03 Q3", + "SB-03 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "SB-03 Q2" + ], + "min": 1, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "SB-04 Q1", + "SB-04 Q2", + "SB-04 Q3", + "SB-04 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "SB-05 Q1", + "SB-05 Q2", + "SB-05 Q3", + "SB-05 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "SB-06 Q2", + "SB-06 Q3", + "SB-06 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "SB-07 Q1", + "SB-07 Q2", + "SB-07 Q3", + "SB-07 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "GT-01 Q1", + "GT-01 Q2", + "GT-01 Q3", + "GT-01 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "GT-02 Q1", + "GT-02 Q2", + "GT-02 Q3", + "GT-02 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "GT-03 Q2", + "GT-03 Q3", + "GT-03 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "GT-04 Q1", + "GT-04 Q2", + "GT-04 Q3", + "GT-04 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "GT-04 Q1", + "GT-04 Q2" + ], + "min": 1, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "GT-05 Q1", + "GT-05 Q2", + "GT-05 Q3", + "GT-05 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "HY-01 Q1", + "HY-01 Q2", + "HY-01 Q3", + "HY-01 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "HY-02 Q1", + "HY-02 Q2", + "HY-02 Q3", + "HY-02 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "HY-02 Q1", + "HY-02 Q2" + ], + "min": 1, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "HY-03 Q1", + "HY-03 Q2", + "HY-03 Q3", + "HY-03 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "HY-04 Q2", + "HY-04 Q3", + "HY-04 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "DX-01 Q1", + "DX-01 Q2", + "DX-01 Q3", + "DX-01 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "DX-02 Q1", + "DX-02 Q2", + "DX-02 Q3", + "DX-02 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "DX-02 Q1", + "DX-02 Q2" + ], + "min": 1, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "DX-03 Q1", + "DX-03 Q2", + "DX-03 Q3", + "DX-03 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "DX-04 Q1", + "DX-04 Q2", + "DX-04 Q3", + "DX-04 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "DX-05 Q2", + "DX-05 Q3", + "DX-05 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "DX-06 Q1", + "DX-06 Q2", + "DX-06 Q3", + "DX-06 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "group_limit", + "options": [ + "DX-07 Q1", + "DX-07 Q2", + "DX-07 Q3", + "DX-07 Q4" + ], + "min": 0, + "max": 1 + }, + { + "type": "dependency", + "if_option": "SB-03 Q2", + "then_option": "SB-02 Q1" + }, + { + "type": "dependency", + "if_option": "SB-03 Q3", + "then_option": "SB-02 Q2" + }, + { + "type": "dependency", + "if_option": "SB-03 Q4", + "then_option": "SB-02 Q3" + }, + { + "type": "dependency", + "if_option": "SB-06 Q2", + "then_option": "SB-05 Q1" + }, + { + "type": "dependency", + "if_option": "SB-06 Q3", + "then_option": "SB-05 Q2" + }, + { + "type": "dependency", + "if_option": "SB-06 Q4", + "then_option": "SB-05 Q3" + }, + { + "type": "dependency", + "if_option": "GT-03 Q2", + "then_option": "GT-02 Q1" + }, + { + "type": "dependency", + "if_option": "GT-03 Q3", + "then_option": "GT-02 Q2" + }, + { + "type": "dependency", + "if_option": "GT-03 Q4", + "then_option": "GT-02 Q3" + }, + { + "type": "dependency", + "if_option": "HY-04 Q2", + "then_option": "HY-03 Q1" + }, + { + "type": "dependency", + "if_option": "HY-04 Q3", + "then_option": "HY-03 Q2" + }, + { + "type": "dependency", + "if_option": "HY-04 Q4", + "then_option": "HY-03 Q3" + }, + { + "type": "dependency", + "if_option": "DX-05 Q2", + "then_option": "DX-04 Q1" + }, + { + "type": "dependency", + "if_option": "DX-05 Q3", + "then_option": "DX-04 Q2" + }, + { + "type": "dependency", + "if_option": "DX-05 Q4", + "then_option": "DX-04 Q3" + }, + { + "type": "exclusion_pair", + "option_a": "TX-01 Q1", + "option_b": "TX-03 Q1" + }, + { + "type": "exclusion_pair", + "option_a": "TX-01 Q2", + "option_b": "TX-03 Q2" + }, + { + "type": "exclusion_pair", + "option_a": "TX-01 Q3", + "option_b": "TX-03 Q3" + }, + { + "type": "exclusion_pair", + "option_a": "TX-01 Q4", + "option_b": "TX-03 Q4" + }, + { + "type": "exclusion_pair", + "option_a": "TX-05 Q1", + "option_b": "TX-06 Q1" + }, + { + "type": "exclusion_pair", + "option_a": "TX-05 Q2", + "option_b": "TX-06 Q2" + }, + { + "type": "exclusion_pair", + "option_a": "TX-05 Q3", + "option_b": "TX-06 Q3" + }, + { + "type": "exclusion_pair", + "option_a": "TX-05 Q4", + "option_b": "TX-06 Q4" + }, + { + "type": "exclusion_pair", + "option_a": "DX-01 Q2", + "option_b": "DX-05 Q2" + }, + { + "type": "exclusion_pair", + "option_a": "DX-01 Q3", + "option_b": "DX-05 Q3" + }, + { + "type": "exclusion_pair", + "option_a": "DX-01 Q4", + "option_b": "DX-05 Q4" + } + ], + "interaction_matrix_overrides": [] + } + ] +} \ No newline at end of file diff --git a/examples/outage_program_scheduling/projects.csv b/examples/outage_program_scheduling/projects.csv new file mode 100644 index 0000000..f0953c2 --- /dev/null +++ b/examples/outage_program_scheduling/projects.csv @@ -0,0 +1,31 @@ +project_id,project_name,asset_class,risk_reduction_mwh,risk_decay_pct_per_quarter,capex_musd,disruption_musd,safety_critical,follows,corridor +TX-01,Ashfield 230kV conductor replacement,Transmission,528.7,9,3.60,3.97,yes,,North Loop +TX-02,Bellrun river crossing refit,Transmission,321.5,5,3.28,2.42,,, +TX-03,Corvane 115kV insulator campaign,Transmission,857.9,19,9.19,4.08,,,North Loop +TX-04,Dunmere tower foundation repair,Transmission,609.0,9,5.27,3.14,yes,, +TX-05,Elstow line relay retrofit,Transmission,214.0,5,1.45,2.55,,,East Tie +TX-06,Fenwick series capacitor overhaul,Transmission,497.9,19,5.82,4.22,,,East Tie +TX-07,Garrow shield wire replacement,Transmission,412.9,14,2.36,2.24,,, +SB-01,Halverton breaker replacement,Substation,325.3,9,3.26,1.47,yes,, +SB-02,Ivyloch bus rebuild phase 1,Substation,395.7,19,2.57,2.67,yes,, +SB-03,Ivyloch bus rebuild phase 2,Substation,533.4,9,3.59,3.17,yes,SB-02, +SB-04,Jarrow Bend transformer overhaul,Substation,340.6,14,3.62,3.30,,, +SB-05,Kestrel Ridge protection upgrade phase 1,Substation,297.2,5,2.93,1.19,,, +SB-06,Kestrel Ridge protection upgrade phase 2,Substation,131.2,5,1.09,0.89,,SB-05, +SB-07,Lyndhurst switchgear refurbishment,Substation,344.4,14,4.04,1.13,,, +GT-01,Oakfell unit 2 major inspection,Thermal,180.6,19,1.62,1.67,,, +GT-02,Pikewater turbine rotor swap phase 1,Thermal,287.9,9,1.77,3.17,,, +GT-03,Pikewater turbine rotor swap phase 2,Thermal,316.3,9,2.96,3.36,,GT-02, +GT-04,Quarrow boiler tube campaign,Thermal,543.1,14,5.85,2.25,yes,, +GT-05,Redlin emissions controls tie-in,Thermal,289.0,9,1.66,1.92,,, +HY-01,Thackray penstock inspection,Hydro,376.3,5,3.38,1.58,,, +HY-02,Ullswick gate seal replacement,Hydro,460.4,5,4.30,4.25,yes,, +HY-03,Vantry draft tube repair phase 1,Hydro,460.1,5,3.70,1.90,,, +HY-04,Vantry draft tube repair phase 2,Hydro,366.1,19,2.04,3.36,,HY-03, +DX-01,Yarnton feeder reconductoring,Distribution,386.2,9,4.12,1.77,,,West Spur +DX-02,Zelbrook network vault rebuild,Distribution,829.3,14,8.87,6.54,yes,, +DX-03,Ambercross recloser program,Distribution,241.6,9,4.41,0.71,,, +DX-04,Brackwell cable injection phase 1,Distribution,331.5,19,4.58,1.52,,, +DX-05,Brackwell cable injection phase 2,Distribution,295.8,9,2.48,1.16,,DX-04,West Spur +DX-06,Cindermoor pole replacement campaign,Distribution,360.4,14,3.19,1.83,,, +DX-07,Elverton capacitor bank refresh,Distribution,713.3,19,9.59,2.95,,, diff --git a/examples/outage_program_scheduling/quarter_factors.csv b/examples/outage_program_scheduling/quarter_factors.csv new file mode 100644 index 0000000..3fa64cd --- /dev/null +++ b/examples/outage_program_scheduling/quarter_factors.csv @@ -0,0 +1,21 @@ +asset_class,quarter,disruption_factor,capex_factor +Transmission,Q1,1.15,1.12 +Transmission,Q2,0.75,1.02 +Transmission,Q3,1.55,1.04 +Transmission,Q4,0.85,1.06 +Substation,Q1,1.25,1.00 +Substation,Q2,0.80,1.02 +Substation,Q3,1.50,1.04 +Substation,Q4,0.90,1.06 +Thermal,Q1,1.30,1.00 +Thermal,Q2,0.70,1.02 +Thermal,Q3,1.70,1.04 +Thermal,Q4,0.75,1.06 +Hydro,Q1,0.85,1.00 +Hydro,Q2,1.40,1.06 +Hydro,Q3,1.10,1.04 +Hydro,Q4,0.80,1.06 +Distribution,Q1,1.20,1.10 +Distribution,Q2,0.85,1.02 +Distribution,Q3,1.25,1.04 +Distribution,Q4,0.95,1.06 diff --git a/examples/outage_program_scheduling/scores.json b/examples/outage_program_scheduling/scores.json new file mode 100644 index 0000000..681f5fa --- /dev/null +++ b/examples/outage_program_scheduling/scores.json @@ -0,0 +1,2191 @@ +{ + "options": [ + { + "name": "TX-01 Q1", + "description": "Ashfield 230kV conductor replacement (Transmission) \u2014 Q1 outage window" + }, + { + "name": "TX-01 Q2", + "description": "Ashfield 230kV conductor replacement (Transmission) \u2014 Q2 outage window" + }, + { + "name": "TX-01 Q3", + "description": "Ashfield 230kV conductor replacement (Transmission) \u2014 Q3 outage window" + }, + { + "name": "TX-01 Q4", + "description": "Ashfield 230kV conductor replacement (Transmission) \u2014 Q4 outage window" + }, + { + "name": "TX-02 Q1", + "description": "Bellrun river crossing refit (Transmission) \u2014 Q1 outage window" + }, + { + "name": "TX-02 Q2", + "description": "Bellrun river crossing refit (Transmission) \u2014 Q2 outage window" + }, + { + "name": "TX-02 Q3", + "description": "Bellrun river crossing refit (Transmission) \u2014 Q3 outage window" + }, + { + "name": "TX-02 Q4", + "description": "Bellrun river crossing refit (Transmission) \u2014 Q4 outage window" + }, + { + "name": "TX-03 Q1", + "description": "Corvane 115kV insulator campaign (Transmission) \u2014 Q1 outage window" + }, + { + "name": "TX-03 Q2", + "description": "Corvane 115kV insulator campaign (Transmission) \u2014 Q2 outage window" + }, + { + "name": "TX-03 Q3", + "description": "Corvane 115kV insulator campaign (Transmission) \u2014 Q3 outage window" + }, + { + "name": "TX-03 Q4", + "description": "Corvane 115kV insulator campaign (Transmission) \u2014 Q4 outage window" + }, + { + "name": "TX-04 Q1", + "description": "Dunmere tower foundation repair (Transmission) \u2014 Q1 outage window" + }, + { + "name": "TX-04 Q2", + "description": "Dunmere tower foundation repair (Transmission) \u2014 Q2 outage window" + }, + { + "name": "TX-04 Q3", + "description": "Dunmere tower foundation repair (Transmission) \u2014 Q3 outage window" + }, + { + "name": "TX-04 Q4", + "description": "Dunmere tower foundation repair (Transmission) \u2014 Q4 outage window" + }, + { + "name": "TX-05 Q1", + "description": "Elstow line relay retrofit (Transmission) \u2014 Q1 outage window" + }, + { + "name": "TX-05 Q2", + "description": "Elstow line relay retrofit (Transmission) \u2014 Q2 outage window" + }, + { + "name": "TX-05 Q3", + "description": "Elstow line relay retrofit (Transmission) \u2014 Q3 outage window" + }, + { + "name": "TX-05 Q4", + "description": "Elstow line relay retrofit (Transmission) \u2014 Q4 outage window" + }, + { + "name": "TX-06 Q1", + "description": "Fenwick series capacitor overhaul (Transmission) \u2014 Q1 outage window" + }, + { + "name": "TX-06 Q2", + "description": "Fenwick series capacitor overhaul (Transmission) \u2014 Q2 outage window" + }, + { + "name": "TX-06 Q3", + "description": "Fenwick series capacitor overhaul (Transmission) \u2014 Q3 outage window" + }, + { + "name": "TX-06 Q4", + "description": "Fenwick series capacitor overhaul (Transmission) \u2014 Q4 outage window" + }, + { + "name": "TX-07 Q1", + "description": "Garrow shield wire replacement (Transmission) \u2014 Q1 outage window" + }, + { + "name": "TX-07 Q2", + "description": "Garrow shield wire replacement (Transmission) \u2014 Q2 outage window" + }, + { + "name": "TX-07 Q3", + "description": "Garrow shield wire replacement (Transmission) \u2014 Q3 outage window" + }, + { + "name": "TX-07 Q4", + "description": "Garrow shield wire replacement (Transmission) \u2014 Q4 outage window" + }, + { + "name": "SB-01 Q1", + "description": "Halverton breaker replacement (Substation) \u2014 Q1 outage window" + }, + { + "name": "SB-01 Q2", + "description": "Halverton breaker replacement (Substation) \u2014 Q2 outage window" + }, + { + "name": "SB-01 Q3", + "description": "Halverton breaker replacement (Substation) \u2014 Q3 outage window" + }, + { + "name": "SB-01 Q4", + "description": "Halverton breaker replacement (Substation) \u2014 Q4 outage window" + }, + { + "name": "SB-02 Q1", + "description": "Ivyloch bus rebuild phase 1 (Substation) \u2014 Q1 outage window" + }, + { + "name": "SB-02 Q2", + "description": "Ivyloch bus rebuild phase 1 (Substation) \u2014 Q2 outage window" + }, + { + "name": "SB-02 Q3", + "description": "Ivyloch bus rebuild phase 1 (Substation) \u2014 Q3 outage window" + }, + { + "name": "SB-02 Q4", + "description": "Ivyloch bus rebuild phase 1 (Substation) \u2014 Q4 outage window" + }, + { + "name": "SB-03 Q2", + "description": "Ivyloch bus rebuild phase 2 (Substation) \u2014 Q2 outage window" + }, + { + "name": "SB-03 Q3", + "description": "Ivyloch bus rebuild phase 2 (Substation) \u2014 Q3 outage window" + }, + { + "name": "SB-03 Q4", + "description": "Ivyloch bus rebuild phase 2 (Substation) \u2014 Q4 outage window" + }, + { + "name": "SB-04 Q1", + "description": "Jarrow Bend transformer overhaul (Substation) \u2014 Q1 outage window" + }, + { + "name": "SB-04 Q2", + "description": "Jarrow Bend transformer overhaul (Substation) \u2014 Q2 outage window" + }, + { + "name": "SB-04 Q3", + "description": "Jarrow Bend transformer overhaul (Substation) \u2014 Q3 outage window" + }, + { + "name": "SB-04 Q4", + "description": "Jarrow Bend transformer overhaul (Substation) \u2014 Q4 outage window" + }, + { + "name": "SB-05 Q1", + "description": "Kestrel Ridge protection upgrade phase 1 (Substation) \u2014 Q1 outage window" + }, + { + "name": "SB-05 Q2", + "description": "Kestrel Ridge protection upgrade phase 1 (Substation) \u2014 Q2 outage window" + }, + { + "name": "SB-05 Q3", + "description": "Kestrel Ridge protection upgrade phase 1 (Substation) \u2014 Q3 outage window" + }, + { + "name": "SB-05 Q4", + "description": "Kestrel Ridge protection upgrade phase 1 (Substation) \u2014 Q4 outage window" + }, + { + "name": "SB-06 Q2", + "description": "Kestrel Ridge protection upgrade phase 2 (Substation) \u2014 Q2 outage window" + }, + { + "name": "SB-06 Q3", + "description": "Kestrel Ridge protection upgrade phase 2 (Substation) \u2014 Q3 outage window" + }, + { + "name": "SB-06 Q4", + "description": "Kestrel Ridge protection upgrade phase 2 (Substation) \u2014 Q4 outage window" + }, + { + "name": "SB-07 Q1", + "description": "Lyndhurst switchgear refurbishment (Substation) \u2014 Q1 outage window" + }, + { + "name": "SB-07 Q2", + "description": "Lyndhurst switchgear refurbishment (Substation) \u2014 Q2 outage window" + }, + { + "name": "SB-07 Q3", + "description": "Lyndhurst switchgear refurbishment (Substation) \u2014 Q3 outage window" + }, + { + "name": "SB-07 Q4", + "description": "Lyndhurst switchgear refurbishment (Substation) \u2014 Q4 outage window" + }, + { + "name": "GT-01 Q1", + "description": "Oakfell unit 2 major inspection (Thermal) \u2014 Q1 outage window" + }, + { + "name": "GT-01 Q2", + "description": "Oakfell unit 2 major inspection (Thermal) \u2014 Q2 outage window" + }, + { + "name": "GT-01 Q3", + "description": "Oakfell unit 2 major inspection (Thermal) \u2014 Q3 outage window" + }, + { + "name": "GT-01 Q4", + "description": "Oakfell unit 2 major inspection (Thermal) \u2014 Q4 outage window" + }, + { + "name": "GT-02 Q1", + "description": "Pikewater turbine rotor swap phase 1 (Thermal) \u2014 Q1 outage window" + }, + { + "name": "GT-02 Q2", + "description": "Pikewater turbine rotor swap phase 1 (Thermal) \u2014 Q2 outage window" + }, + { + "name": "GT-02 Q3", + "description": "Pikewater turbine rotor swap phase 1 (Thermal) \u2014 Q3 outage window" + }, + { + "name": "GT-02 Q4", + "description": "Pikewater turbine rotor swap phase 1 (Thermal) \u2014 Q4 outage window" + }, + { + "name": "GT-03 Q2", + "description": "Pikewater turbine rotor swap phase 2 (Thermal) \u2014 Q2 outage window" + }, + { + "name": "GT-03 Q3", + "description": "Pikewater turbine rotor swap phase 2 (Thermal) \u2014 Q3 outage window" + }, + { + "name": "GT-03 Q4", + "description": "Pikewater turbine rotor swap phase 2 (Thermal) \u2014 Q4 outage window" + }, + { + "name": "GT-04 Q1", + "description": "Quarrow boiler tube campaign (Thermal) \u2014 Q1 outage window" + }, + { + "name": "GT-04 Q2", + "description": "Quarrow boiler tube campaign (Thermal) \u2014 Q2 outage window" + }, + { + "name": "GT-04 Q3", + "description": "Quarrow boiler tube campaign (Thermal) \u2014 Q3 outage window" + }, + { + "name": "GT-04 Q4", + "description": "Quarrow boiler tube campaign (Thermal) \u2014 Q4 outage window" + }, + { + "name": "GT-05 Q1", + "description": "Redlin emissions controls tie-in (Thermal) \u2014 Q1 outage window" + }, + { + "name": "GT-05 Q2", + "description": "Redlin emissions controls tie-in (Thermal) \u2014 Q2 outage window" + }, + { + "name": "GT-05 Q3", + "description": "Redlin emissions controls tie-in (Thermal) \u2014 Q3 outage window" + }, + { + "name": "GT-05 Q4", + "description": "Redlin emissions controls tie-in (Thermal) \u2014 Q4 outage window" + }, + { + "name": "HY-01 Q1", + "description": "Thackray penstock inspection (Hydro) \u2014 Q1 outage window" + }, + { + "name": "HY-01 Q2", + "description": "Thackray penstock inspection (Hydro) \u2014 Q2 outage window" + }, + { + "name": "HY-01 Q3", + "description": "Thackray penstock inspection (Hydro) \u2014 Q3 outage window" + }, + { + "name": "HY-01 Q4", + "description": "Thackray penstock inspection (Hydro) \u2014 Q4 outage window" + }, + { + "name": "HY-02 Q1", + "description": "Ullswick gate seal replacement (Hydro) \u2014 Q1 outage window" + }, + { + "name": "HY-02 Q2", + "description": "Ullswick gate seal replacement (Hydro) \u2014 Q2 outage window" + }, + { + "name": "HY-02 Q3", + "description": "Ullswick gate seal replacement (Hydro) \u2014 Q3 outage window" + }, + { + "name": "HY-02 Q4", + "description": "Ullswick gate seal replacement (Hydro) \u2014 Q4 outage window" + }, + { + "name": "HY-03 Q1", + "description": "Vantry draft tube repair phase 1 (Hydro) \u2014 Q1 outage window" + }, + { + "name": "HY-03 Q2", + "description": "Vantry draft tube repair phase 1 (Hydro) \u2014 Q2 outage window" + }, + { + "name": "HY-03 Q3", + "description": "Vantry draft tube repair phase 1 (Hydro) \u2014 Q3 outage window" + }, + { + "name": "HY-03 Q4", + "description": "Vantry draft tube repair phase 1 (Hydro) \u2014 Q4 outage window" + }, + { + "name": "HY-04 Q2", + "description": "Vantry draft tube repair phase 2 (Hydro) \u2014 Q2 outage window" + }, + { + "name": "HY-04 Q3", + "description": "Vantry draft tube repair phase 2 (Hydro) \u2014 Q3 outage window" + }, + { + "name": "HY-04 Q4", + "description": "Vantry draft tube repair phase 2 (Hydro) \u2014 Q4 outage window" + }, + { + "name": "DX-01 Q1", + "description": "Yarnton feeder reconductoring (Distribution) \u2014 Q1 outage window" + }, + { + "name": "DX-01 Q2", + "description": "Yarnton feeder reconductoring (Distribution) \u2014 Q2 outage window" + }, + { + "name": "DX-01 Q3", + "description": "Yarnton feeder reconductoring (Distribution) \u2014 Q3 outage window" + }, + { + "name": "DX-01 Q4", + "description": "Yarnton feeder reconductoring (Distribution) \u2014 Q4 outage window" + }, + { + "name": "DX-02 Q1", + "description": "Zelbrook network vault rebuild (Distribution) \u2014 Q1 outage window" + }, + { + "name": "DX-02 Q2", + "description": "Zelbrook network vault rebuild (Distribution) \u2014 Q2 outage window" + }, + { + "name": "DX-02 Q3", + "description": "Zelbrook network vault rebuild (Distribution) \u2014 Q3 outage window" + }, + { + "name": "DX-02 Q4", + "description": "Zelbrook network vault rebuild (Distribution) \u2014 Q4 outage window" + }, + { + "name": "DX-03 Q1", + "description": "Ambercross recloser program (Distribution) \u2014 Q1 outage window" + }, + { + "name": "DX-03 Q2", + "description": "Ambercross recloser program (Distribution) \u2014 Q2 outage window" + }, + { + "name": "DX-03 Q3", + "description": "Ambercross recloser program (Distribution) \u2014 Q3 outage window" + }, + { + "name": "DX-03 Q4", + "description": "Ambercross recloser program (Distribution) \u2014 Q4 outage window" + }, + { + "name": "DX-04 Q1", + "description": "Brackwell cable injection phase 1 (Distribution) \u2014 Q1 outage window" + }, + { + "name": "DX-04 Q2", + "description": "Brackwell cable injection phase 1 (Distribution) \u2014 Q2 outage window" + }, + { + "name": "DX-04 Q3", + "description": "Brackwell cable injection phase 1 (Distribution) \u2014 Q3 outage window" + }, + { + "name": "DX-04 Q4", + "description": "Brackwell cable injection phase 1 (Distribution) \u2014 Q4 outage window" + }, + { + "name": "DX-05 Q2", + "description": "Brackwell cable injection phase 2 (Distribution) \u2014 Q2 outage window" + }, + { + "name": "DX-05 Q3", + "description": "Brackwell cable injection phase 2 (Distribution) \u2014 Q3 outage window" + }, + { + "name": "DX-05 Q4", + "description": "Brackwell cable injection phase 2 (Distribution) \u2014 Q4 outage window" + }, + { + "name": "DX-06 Q1", + "description": "Cindermoor pole replacement campaign (Distribution) \u2014 Q1 outage window" + }, + { + "name": "DX-06 Q2", + "description": "Cindermoor pole replacement campaign (Distribution) \u2014 Q2 outage window" + }, + { + "name": "DX-06 Q3", + "description": "Cindermoor pole replacement campaign (Distribution) \u2014 Q3 outage window" + }, + { + "name": "DX-06 Q4", + "description": "Cindermoor pole replacement campaign (Distribution) \u2014 Q4 outage window" + }, + { + "name": "DX-07 Q1", + "description": "Elverton capacitor bank refresh (Distribution) \u2014 Q1 outage window" + }, + { + "name": "DX-07 Q2", + "description": "Elverton capacitor bank refresh (Distribution) \u2014 Q2 outage window" + }, + { + "name": "DX-07 Q3", + "description": "Elverton capacitor bank refresh (Distribution) \u2014 Q3 outage window" + }, + { + "name": "DX-07 Q4", + "description": "Elverton capacitor bank refresh (Distribution) \u2014 Q4 outage window" + } + ], + "scores": [ + { + "option": "TX-01 Q1", + "objective": "RiskReduction", + "value": 528.7 + }, + { + "option": "TX-01 Q1", + "objective": "DisruptionCost", + "value": 4.57 + }, + { + "option": "TX-01 Q1", + "objective": "Capex", + "value": 4.03 + }, + { + "option": "TX-01 Q2", + "objective": "RiskReduction", + "value": 481.1 + }, + { + "option": "TX-01 Q2", + "objective": "DisruptionCost", + "value": 2.98 + }, + { + "option": "TX-01 Q2", + "objective": "Capex", + "value": 3.67 + }, + { + "option": "TX-01 Q3", + "objective": "RiskReduction", + "value": 437.8 + }, + { + "option": "TX-01 Q3", + "objective": "DisruptionCost", + "value": 6.15 + }, + { + "option": "TX-01 Q3", + "objective": "Capex", + "value": 3.74 + }, + { + "option": "TX-01 Q4", + "objective": "RiskReduction", + "value": 398.4 + }, + { + "option": "TX-01 Q4", + "objective": "DisruptionCost", + "value": 3.37 + }, + { + "option": "TX-01 Q4", + "objective": "Capex", + "value": 3.82 + }, + { + "option": "TX-02 Q1", + "objective": "RiskReduction", + "value": 321.5 + }, + { + "option": "TX-02 Q1", + "objective": "DisruptionCost", + "value": 2.78 + }, + { + "option": "TX-02 Q1", + "objective": "Capex", + "value": 3.67 + }, + { + "option": "TX-02 Q2", + "objective": "RiskReduction", + "value": 305.4 + }, + { + "option": "TX-02 Q2", + "objective": "DisruptionCost", + "value": 1.81 + }, + { + "option": "TX-02 Q2", + "objective": "Capex", + "value": 3.35 + }, + { + "option": "TX-02 Q3", + "objective": "RiskReduction", + "value": 290.2 + }, + { + "option": "TX-02 Q3", + "objective": "DisruptionCost", + "value": 3.75 + }, + { + "option": "TX-02 Q3", + "objective": "Capex", + "value": 3.41 + }, + { + "option": "TX-02 Q4", + "objective": "RiskReduction", + "value": 275.6 + }, + { + "option": "TX-02 Q4", + "objective": "DisruptionCost", + "value": 2.06 + }, + { + "option": "TX-02 Q4", + "objective": "Capex", + "value": 3.48 + }, + { + "option": "TX-03 Q1", + "objective": "RiskReduction", + "value": 857.9 + }, + { + "option": "TX-03 Q1", + "objective": "DisruptionCost", + "value": 4.69 + }, + { + "option": "TX-03 Q1", + "objective": "Capex", + "value": 10.29 + }, + { + "option": "TX-03 Q2", + "objective": "RiskReduction", + "value": 694.9 + }, + { + "option": "TX-03 Q2", + "objective": "DisruptionCost", + "value": 3.06 + }, + { + "option": "TX-03 Q2", + "objective": "Capex", + "value": 9.37 + }, + { + "option": "TX-03 Q3", + "objective": "RiskReduction", + "value": 562.9 + }, + { + "option": "TX-03 Q3", + "objective": "DisruptionCost", + "value": 6.32 + }, + { + "option": "TX-03 Q3", + "objective": "Capex", + "value": 9.56 + }, + { + "option": "TX-03 Q4", + "objective": "RiskReduction", + "value": 455.9 + }, + { + "option": "TX-03 Q4", + "objective": "DisruptionCost", + "value": 3.47 + }, + { + "option": "TX-03 Q4", + "objective": "Capex", + "value": 9.74 + }, + { + "option": "TX-04 Q1", + "objective": "RiskReduction", + "value": 609.0 + }, + { + "option": "TX-04 Q1", + "objective": "DisruptionCost", + "value": 3.61 + }, + { + "option": "TX-04 Q1", + "objective": "Capex", + "value": 5.9 + }, + { + "option": "TX-04 Q2", + "objective": "RiskReduction", + "value": 554.2 + }, + { + "option": "TX-04 Q2", + "objective": "DisruptionCost", + "value": 2.35 + }, + { + "option": "TX-04 Q2", + "objective": "Capex", + "value": 5.38 + }, + { + "option": "TX-04 Q3", + "objective": "RiskReduction", + "value": 504.3 + }, + { + "option": "TX-04 Q3", + "objective": "DisruptionCost", + "value": 4.87 + }, + { + "option": "TX-04 Q3", + "objective": "Capex", + "value": 5.48 + }, + { + "option": "TX-04 Q4", + "objective": "RiskReduction", + "value": 458.9 + }, + { + "option": "TX-04 Q4", + "objective": "DisruptionCost", + "value": 2.67 + }, + { + "option": "TX-04 Q4", + "objective": "Capex", + "value": 5.59 + }, + { + "option": "TX-05 Q1", + "objective": "RiskReduction", + "value": 214.0 + }, + { + "option": "TX-05 Q1", + "objective": "DisruptionCost", + "value": 2.93 + }, + { + "option": "TX-05 Q1", + "objective": "Capex", + "value": 1.62 + }, + { + "option": "TX-05 Q2", + "objective": "RiskReduction", + "value": 203.3 + }, + { + "option": "TX-05 Q2", + "objective": "DisruptionCost", + "value": 1.91 + }, + { + "option": "TX-05 Q2", + "objective": "Capex", + "value": 1.48 + }, + { + "option": "TX-05 Q3", + "objective": "RiskReduction", + "value": 193.1 + }, + { + "option": "TX-05 Q3", + "objective": "DisruptionCost", + "value": 3.95 + }, + { + "option": "TX-05 Q3", + "objective": "Capex", + "value": 1.51 + }, + { + "option": "TX-05 Q4", + "objective": "RiskReduction", + "value": 183.5 + }, + { + "option": "TX-05 Q4", + "objective": "DisruptionCost", + "value": 2.17 + }, + { + "option": "TX-05 Q4", + "objective": "Capex", + "value": 1.54 + }, + { + "option": "TX-06 Q1", + "objective": "RiskReduction", + "value": 497.9 + }, + { + "option": "TX-06 Q1", + "objective": "DisruptionCost", + "value": 4.85 + }, + { + "option": "TX-06 Q1", + "objective": "Capex", + "value": 6.52 + }, + { + "option": "TX-06 Q2", + "objective": "RiskReduction", + "value": 403.3 + }, + { + "option": "TX-06 Q2", + "objective": "DisruptionCost", + "value": 3.17 + }, + { + "option": "TX-06 Q2", + "objective": "Capex", + "value": 5.94 + }, + { + "option": "TX-06 Q3", + "objective": "RiskReduction", + "value": 326.7 + }, + { + "option": "TX-06 Q3", + "objective": "DisruptionCost", + "value": 6.54 + }, + { + "option": "TX-06 Q3", + "objective": "Capex", + "value": 6.05 + }, + { + "option": "TX-06 Q4", + "objective": "RiskReduction", + "value": 264.6 + }, + { + "option": "TX-06 Q4", + "objective": "DisruptionCost", + "value": 3.59 + }, + { + "option": "TX-06 Q4", + "objective": "Capex", + "value": 6.17 + }, + { + "option": "TX-07 Q1", + "objective": "RiskReduction", + "value": 412.9 + }, + { + "option": "TX-07 Q1", + "objective": "DisruptionCost", + "value": 2.58 + }, + { + "option": "TX-07 Q1", + "objective": "Capex", + "value": 2.64 + }, + { + "option": "TX-07 Q2", + "objective": "RiskReduction", + "value": 355.1 + }, + { + "option": "TX-07 Q2", + "objective": "DisruptionCost", + "value": 1.68 + }, + { + "option": "TX-07 Q2", + "objective": "Capex", + "value": 2.41 + }, + { + "option": "TX-07 Q3", + "objective": "RiskReduction", + "value": 305.4 + }, + { + "option": "TX-07 Q3", + "objective": "DisruptionCost", + "value": 3.47 + }, + { + "option": "TX-07 Q3", + "objective": "Capex", + "value": 2.45 + }, + { + "option": "TX-07 Q4", + "objective": "RiskReduction", + "value": 262.6 + }, + { + "option": "TX-07 Q4", + "objective": "DisruptionCost", + "value": 1.9 + }, + { + "option": "TX-07 Q4", + "objective": "Capex", + "value": 2.5 + }, + { + "option": "SB-01 Q1", + "objective": "RiskReduction", + "value": 325.3 + }, + { + "option": "SB-01 Q1", + "objective": "DisruptionCost", + "value": 1.84 + }, + { + "option": "SB-01 Q1", + "objective": "Capex", + "value": 3.26 + }, + { + "option": "SB-01 Q2", + "objective": "RiskReduction", + "value": 296.0 + }, + { + "option": "SB-01 Q2", + "objective": "DisruptionCost", + "value": 1.18 + }, + { + "option": "SB-01 Q2", + "objective": "Capex", + "value": 3.33 + }, + { + "option": "SB-01 Q3", + "objective": "RiskReduction", + "value": 269.4 + }, + { + "option": "SB-01 Q3", + "objective": "DisruptionCost", + "value": 2.21 + }, + { + "option": "SB-01 Q3", + "objective": "Capex", + "value": 3.39 + }, + { + "option": "SB-01 Q4", + "objective": "RiskReduction", + "value": 245.1 + }, + { + "option": "SB-01 Q4", + "objective": "DisruptionCost", + "value": 1.32 + }, + { + "option": "SB-01 Q4", + "objective": "Capex", + "value": 3.46 + }, + { + "option": "SB-02 Q1", + "objective": "RiskReduction", + "value": 395.7 + }, + { + "option": "SB-02 Q1", + "objective": "DisruptionCost", + "value": 3.34 + }, + { + "option": "SB-02 Q1", + "objective": "Capex", + "value": 2.57 + }, + { + "option": "SB-02 Q2", + "objective": "RiskReduction", + "value": 320.5 + }, + { + "option": "SB-02 Q2", + "objective": "DisruptionCost", + "value": 2.14 + }, + { + "option": "SB-02 Q2", + "objective": "Capex", + "value": 2.62 + }, + { + "option": "SB-02 Q3", + "objective": "RiskReduction", + "value": 259.6 + }, + { + "option": "SB-02 Q3", + "objective": "DisruptionCost", + "value": 4.0 + }, + { + "option": "SB-02 Q3", + "objective": "Capex", + "value": 2.67 + }, + { + "option": "SB-02 Q4", + "objective": "RiskReduction", + "value": 210.3 + }, + { + "option": "SB-02 Q4", + "objective": "DisruptionCost", + "value": 2.4 + }, + { + "option": "SB-02 Q4", + "objective": "Capex", + "value": 2.72 + }, + { + "option": "SB-03 Q2", + "objective": "RiskReduction", + "value": 485.4 + }, + { + "option": "SB-03 Q2", + "objective": "DisruptionCost", + "value": 2.54 + }, + { + "option": "SB-03 Q2", + "objective": "Capex", + "value": 3.66 + }, + { + "option": "SB-03 Q3", + "objective": "RiskReduction", + "value": 441.7 + }, + { + "option": "SB-03 Q3", + "objective": "DisruptionCost", + "value": 4.75 + }, + { + "option": "SB-03 Q3", + "objective": "Capex", + "value": 3.73 + }, + { + "option": "SB-03 Q4", + "objective": "RiskReduction", + "value": 402.0 + }, + { + "option": "SB-03 Q4", + "objective": "DisruptionCost", + "value": 2.85 + }, + { + "option": "SB-03 Q4", + "objective": "Capex", + "value": 3.81 + }, + { + "option": "SB-04 Q1", + "objective": "RiskReduction", + "value": 340.6 + }, + { + "option": "SB-04 Q1", + "objective": "DisruptionCost", + "value": 4.12 + }, + { + "option": "SB-04 Q1", + "objective": "Capex", + "value": 3.62 + }, + { + "option": "SB-04 Q2", + "objective": "RiskReduction", + "value": 292.9 + }, + { + "option": "SB-04 Q2", + "objective": "DisruptionCost", + "value": 2.64 + }, + { + "option": "SB-04 Q2", + "objective": "Capex", + "value": 3.69 + }, + { + "option": "SB-04 Q3", + "objective": "RiskReduction", + "value": 251.9 + }, + { + "option": "SB-04 Q3", + "objective": "DisruptionCost", + "value": 4.95 + }, + { + "option": "SB-04 Q3", + "objective": "Capex", + "value": 3.76 + }, + { + "option": "SB-04 Q4", + "objective": "RiskReduction", + "value": 216.6 + }, + { + "option": "SB-04 Q4", + "objective": "DisruptionCost", + "value": 2.97 + }, + { + "option": "SB-04 Q4", + "objective": "Capex", + "value": 3.84 + }, + { + "option": "SB-05 Q1", + "objective": "RiskReduction", + "value": 297.2 + }, + { + "option": "SB-05 Q1", + "objective": "DisruptionCost", + "value": 1.49 + }, + { + "option": "SB-05 Q1", + "objective": "Capex", + "value": 2.93 + }, + { + "option": "SB-05 Q2", + "objective": "RiskReduction", + "value": 282.3 + }, + { + "option": "SB-05 Q2", + "objective": "DisruptionCost", + "value": 0.95 + }, + { + "option": "SB-05 Q2", + "objective": "Capex", + "value": 2.99 + }, + { + "option": "SB-05 Q3", + "objective": "RiskReduction", + "value": 268.2 + }, + { + "option": "SB-05 Q3", + "objective": "DisruptionCost", + "value": 1.78 + }, + { + "option": "SB-05 Q3", + "objective": "Capex", + "value": 3.05 + }, + { + "option": "SB-05 Q4", + "objective": "RiskReduction", + "value": 254.8 + }, + { + "option": "SB-05 Q4", + "objective": "DisruptionCost", + "value": 1.07 + }, + { + "option": "SB-05 Q4", + "objective": "Capex", + "value": 3.11 + }, + { + "option": "SB-06 Q2", + "objective": "RiskReduction", + "value": 124.6 + }, + { + "option": "SB-06 Q2", + "objective": "DisruptionCost", + "value": 0.71 + }, + { + "option": "SB-06 Q2", + "objective": "Capex", + "value": 1.11 + }, + { + "option": "SB-06 Q3", + "objective": "RiskReduction", + "value": 118.4 + }, + { + "option": "SB-06 Q3", + "objective": "DisruptionCost", + "value": 1.33 + }, + { + "option": "SB-06 Q3", + "objective": "Capex", + "value": 1.13 + }, + { + "option": "SB-06 Q4", + "objective": "RiskReduction", + "value": 112.5 + }, + { + "option": "SB-06 Q4", + "objective": "DisruptionCost", + "value": 0.8 + }, + { + "option": "SB-06 Q4", + "objective": "Capex", + "value": 1.16 + }, + { + "option": "SB-07 Q1", + "objective": "RiskReduction", + "value": 344.4 + }, + { + "option": "SB-07 Q1", + "objective": "DisruptionCost", + "value": 1.41 + }, + { + "option": "SB-07 Q1", + "objective": "Capex", + "value": 4.04 + }, + { + "option": "SB-07 Q2", + "objective": "RiskReduction", + "value": 296.2 + }, + { + "option": "SB-07 Q2", + "objective": "DisruptionCost", + "value": 0.9 + }, + { + "option": "SB-07 Q2", + "objective": "Capex", + "value": 4.12 + }, + { + "option": "SB-07 Q3", + "objective": "RiskReduction", + "value": 254.7 + }, + { + "option": "SB-07 Q3", + "objective": "DisruptionCost", + "value": 1.69 + }, + { + "option": "SB-07 Q3", + "objective": "Capex", + "value": 4.2 + }, + { + "option": "SB-07 Q4", + "objective": "RiskReduction", + "value": 219.1 + }, + { + "option": "SB-07 Q4", + "objective": "DisruptionCost", + "value": 1.02 + }, + { + "option": "SB-07 Q4", + "objective": "Capex", + "value": 4.28 + }, + { + "option": "GT-01 Q1", + "objective": "RiskReduction", + "value": 180.6 + }, + { + "option": "GT-01 Q1", + "objective": "DisruptionCost", + "value": 2.17 + }, + { + "option": "GT-01 Q1", + "objective": "Capex", + "value": 1.62 + }, + { + "option": "GT-01 Q2", + "objective": "RiskReduction", + "value": 146.3 + }, + { + "option": "GT-01 Q2", + "objective": "DisruptionCost", + "value": 1.17 + }, + { + "option": "GT-01 Q2", + "objective": "Capex", + "value": 1.65 + }, + { + "option": "GT-01 Q3", + "objective": "RiskReduction", + "value": 118.5 + }, + { + "option": "GT-01 Q3", + "objective": "DisruptionCost", + "value": 2.84 + }, + { + "option": "GT-01 Q3", + "objective": "Capex", + "value": 1.68 + }, + { + "option": "GT-01 Q4", + "objective": "RiskReduction", + "value": 96.0 + }, + { + "option": "GT-01 Q4", + "objective": "DisruptionCost", + "value": 1.25 + }, + { + "option": "GT-01 Q4", + "objective": "Capex", + "value": 1.72 + }, + { + "option": "GT-02 Q1", + "objective": "RiskReduction", + "value": 287.9 + }, + { + "option": "GT-02 Q1", + "objective": "DisruptionCost", + "value": 4.12 + }, + { + "option": "GT-02 Q1", + "objective": "Capex", + "value": 1.77 + }, + { + "option": "GT-02 Q2", + "objective": "RiskReduction", + "value": 262.0 + }, + { + "option": "GT-02 Q2", + "objective": "DisruptionCost", + "value": 2.22 + }, + { + "option": "GT-02 Q2", + "objective": "Capex", + "value": 1.81 + }, + { + "option": "GT-02 Q3", + "objective": "RiskReduction", + "value": 238.4 + }, + { + "option": "GT-02 Q3", + "objective": "DisruptionCost", + "value": 5.39 + }, + { + "option": "GT-02 Q3", + "objective": "Capex", + "value": 1.84 + }, + { + "option": "GT-02 Q4", + "objective": "RiskReduction", + "value": 217.0 + }, + { + "option": "GT-02 Q4", + "objective": "DisruptionCost", + "value": 2.38 + }, + { + "option": "GT-02 Q4", + "objective": "Capex", + "value": 1.88 + }, + { + "option": "GT-03 Q2", + "objective": "RiskReduction", + "value": 287.8 + }, + { + "option": "GT-03 Q2", + "objective": "DisruptionCost", + "value": 2.35 + }, + { + "option": "GT-03 Q2", + "objective": "Capex", + "value": 3.02 + }, + { + "option": "GT-03 Q3", + "objective": "RiskReduction", + "value": 261.9 + }, + { + "option": "GT-03 Q3", + "objective": "DisruptionCost", + "value": 5.71 + }, + { + "option": "GT-03 Q3", + "objective": "Capex", + "value": 3.08 + }, + { + "option": "GT-03 Q4", + "objective": "RiskReduction", + "value": 238.4 + }, + { + "option": "GT-03 Q4", + "objective": "DisruptionCost", + "value": 2.52 + }, + { + "option": "GT-03 Q4", + "objective": "Capex", + "value": 3.14 + }, + { + "option": "GT-04 Q1", + "objective": "RiskReduction", + "value": 543.1 + }, + { + "option": "GT-04 Q1", + "objective": "DisruptionCost", + "value": 2.93 + }, + { + "option": "GT-04 Q1", + "objective": "Capex", + "value": 5.85 + }, + { + "option": "GT-04 Q2", + "objective": "RiskReduction", + "value": 467.1 + }, + { + "option": "GT-04 Q2", + "objective": "DisruptionCost", + "value": 1.57 + }, + { + "option": "GT-04 Q2", + "objective": "Capex", + "value": 5.97 + }, + { + "option": "GT-04 Q3", + "objective": "RiskReduction", + "value": 401.7 + }, + { + "option": "GT-04 Q3", + "objective": "DisruptionCost", + "value": 3.82 + }, + { + "option": "GT-04 Q3", + "objective": "Capex", + "value": 6.08 + }, + { + "option": "GT-04 Q4", + "objective": "RiskReduction", + "value": 345.4 + }, + { + "option": "GT-04 Q4", + "objective": "DisruptionCost", + "value": 1.69 + }, + { + "option": "GT-04 Q4", + "objective": "Capex", + "value": 6.2 + }, + { + "option": "GT-05 Q1", + "objective": "RiskReduction", + "value": 289.0 + }, + { + "option": "GT-05 Q1", + "objective": "DisruptionCost", + "value": 2.5 + }, + { + "option": "GT-05 Q1", + "objective": "Capex", + "value": 1.66 + }, + { + "option": "GT-05 Q2", + "objective": "RiskReduction", + "value": 263.0 + }, + { + "option": "GT-05 Q2", + "objective": "DisruptionCost", + "value": 1.34 + }, + { + "option": "GT-05 Q2", + "objective": "Capex", + "value": 1.69 + }, + { + "option": "GT-05 Q3", + "objective": "RiskReduction", + "value": 239.3 + }, + { + "option": "GT-05 Q3", + "objective": "DisruptionCost", + "value": 3.26 + }, + { + "option": "GT-05 Q3", + "objective": "Capex", + "value": 1.73 + }, + { + "option": "GT-05 Q4", + "objective": "RiskReduction", + "value": 217.8 + }, + { + "option": "GT-05 Q4", + "objective": "DisruptionCost", + "value": 1.44 + }, + { + "option": "GT-05 Q4", + "objective": "Capex", + "value": 1.76 + }, + { + "option": "HY-01 Q1", + "objective": "RiskReduction", + "value": 376.3 + }, + { + "option": "HY-01 Q1", + "objective": "DisruptionCost", + "value": 1.34 + }, + { + "option": "HY-01 Q1", + "objective": "Capex", + "value": 3.38 + }, + { + "option": "HY-01 Q2", + "objective": "RiskReduction", + "value": 357.5 + }, + { + "option": "HY-01 Q2", + "objective": "DisruptionCost", + "value": 2.21 + }, + { + "option": "HY-01 Q2", + "objective": "Capex", + "value": 3.58 + }, + { + "option": "HY-01 Q3", + "objective": "RiskReduction", + "value": 339.6 + }, + { + "option": "HY-01 Q3", + "objective": "DisruptionCost", + "value": 1.74 + }, + { + "option": "HY-01 Q3", + "objective": "Capex", + "value": 3.52 + }, + { + "option": "HY-01 Q4", + "objective": "RiskReduction", + "value": 322.6 + }, + { + "option": "HY-01 Q4", + "objective": "DisruptionCost", + "value": 1.26 + }, + { + "option": "HY-01 Q4", + "objective": "Capex", + "value": 3.58 + }, + { + "option": "HY-02 Q1", + "objective": "RiskReduction", + "value": 460.4 + }, + { + "option": "HY-02 Q1", + "objective": "DisruptionCost", + "value": 3.61 + }, + { + "option": "HY-02 Q1", + "objective": "Capex", + "value": 4.3 + }, + { + "option": "HY-02 Q2", + "objective": "RiskReduction", + "value": 437.4 + }, + { + "option": "HY-02 Q2", + "objective": "DisruptionCost", + "value": 5.95 + }, + { + "option": "HY-02 Q2", + "objective": "Capex", + "value": 4.56 + }, + { + "option": "HY-02 Q3", + "objective": "RiskReduction", + "value": 415.5 + }, + { + "option": "HY-02 Q3", + "objective": "DisruptionCost", + "value": 4.68 + }, + { + "option": "HY-02 Q3", + "objective": "Capex", + "value": 4.47 + }, + { + "option": "HY-02 Q4", + "objective": "RiskReduction", + "value": 394.7 + }, + { + "option": "HY-02 Q4", + "objective": "DisruptionCost", + "value": 3.4 + }, + { + "option": "HY-02 Q4", + "objective": "Capex", + "value": 4.56 + }, + { + "option": "HY-03 Q1", + "objective": "RiskReduction", + "value": 460.1 + }, + { + "option": "HY-03 Q1", + "objective": "DisruptionCost", + "value": 1.61 + }, + { + "option": "HY-03 Q1", + "objective": "Capex", + "value": 3.7 + }, + { + "option": "HY-03 Q2", + "objective": "RiskReduction", + "value": 437.1 + }, + { + "option": "HY-03 Q2", + "objective": "DisruptionCost", + "value": 2.66 + }, + { + "option": "HY-03 Q2", + "objective": "Capex", + "value": 3.92 + }, + { + "option": "HY-03 Q3", + "objective": "RiskReduction", + "value": 415.2 + }, + { + "option": "HY-03 Q3", + "objective": "DisruptionCost", + "value": 2.09 + }, + { + "option": "HY-03 Q3", + "objective": "Capex", + "value": 3.85 + }, + { + "option": "HY-03 Q4", + "objective": "RiskReduction", + "value": 394.5 + }, + { + "option": "HY-03 Q4", + "objective": "DisruptionCost", + "value": 1.52 + }, + { + "option": "HY-03 Q4", + "objective": "Capex", + "value": 3.92 + }, + { + "option": "HY-04 Q2", + "objective": "RiskReduction", + "value": 296.5 + }, + { + "option": "HY-04 Q2", + "objective": "DisruptionCost", + "value": 4.7 + }, + { + "option": "HY-04 Q2", + "objective": "Capex", + "value": 2.16 + }, + { + "option": "HY-04 Q3", + "objective": "RiskReduction", + "value": 240.2 + }, + { + "option": "HY-04 Q3", + "objective": "DisruptionCost", + "value": 3.7 + }, + { + "option": "HY-04 Q3", + "objective": "Capex", + "value": 2.12 + }, + { + "option": "HY-04 Q4", + "objective": "RiskReduction", + "value": 194.6 + }, + { + "option": "HY-04 Q4", + "objective": "DisruptionCost", + "value": 2.69 + }, + { + "option": "HY-04 Q4", + "objective": "Capex", + "value": 2.16 + }, + { + "option": "DX-01 Q1", + "objective": "RiskReduction", + "value": 386.2 + }, + { + "option": "DX-01 Q1", + "objective": "DisruptionCost", + "value": 2.12 + }, + { + "option": "DX-01 Q1", + "objective": "Capex", + "value": 4.53 + }, + { + "option": "DX-01 Q2", + "objective": "RiskReduction", + "value": 351.4 + }, + { + "option": "DX-01 Q2", + "objective": "DisruptionCost", + "value": 1.5 + }, + { + "option": "DX-01 Q2", + "objective": "Capex", + "value": 4.2 + }, + { + "option": "DX-01 Q3", + "objective": "RiskReduction", + "value": 319.8 + }, + { + "option": "DX-01 Q3", + "objective": "DisruptionCost", + "value": 2.21 + }, + { + "option": "DX-01 Q3", + "objective": "Capex", + "value": 4.28 + }, + { + "option": "DX-01 Q4", + "objective": "RiskReduction", + "value": 291.0 + }, + { + "option": "DX-01 Q4", + "objective": "DisruptionCost", + "value": 1.68 + }, + { + "option": "DX-01 Q4", + "objective": "Capex", + "value": 4.37 + }, + { + "option": "DX-02 Q1", + "objective": "RiskReduction", + "value": 829.3 + }, + { + "option": "DX-02 Q1", + "objective": "DisruptionCost", + "value": 7.85 + }, + { + "option": "DX-02 Q1", + "objective": "Capex", + "value": 9.76 + }, + { + "option": "DX-02 Q2", + "objective": "RiskReduction", + "value": 713.2 + }, + { + "option": "DX-02 Q2", + "objective": "DisruptionCost", + "value": 5.56 + }, + { + "option": "DX-02 Q2", + "objective": "Capex", + "value": 9.05 + }, + { + "option": "DX-02 Q3", + "objective": "RiskReduction", + "value": 613.4 + }, + { + "option": "DX-02 Q3", + "objective": "DisruptionCost", + "value": 8.18 + }, + { + "option": "DX-02 Q3", + "objective": "Capex", + "value": 9.22 + }, + { + "option": "DX-02 Q4", + "objective": "RiskReduction", + "value": 527.5 + }, + { + "option": "DX-02 Q4", + "objective": "DisruptionCost", + "value": 6.21 + }, + { + "option": "DX-02 Q4", + "objective": "Capex", + "value": 9.4 + }, + { + "option": "DX-03 Q1", + "objective": "RiskReduction", + "value": 241.6 + }, + { + "option": "DX-03 Q1", + "objective": "DisruptionCost", + "value": 0.85 + }, + { + "option": "DX-03 Q1", + "objective": "Capex", + "value": 4.85 + }, + { + "option": "DX-03 Q2", + "objective": "RiskReduction", + "value": 219.9 + }, + { + "option": "DX-03 Q2", + "objective": "DisruptionCost", + "value": 0.6 + }, + { + "option": "DX-03 Q2", + "objective": "Capex", + "value": 4.5 + }, + { + "option": "DX-03 Q3", + "objective": "RiskReduction", + "value": 200.1 + }, + { + "option": "DX-03 Q3", + "objective": "DisruptionCost", + "value": 0.89 + }, + { + "option": "DX-03 Q3", + "objective": "Capex", + "value": 4.59 + }, + { + "option": "DX-03 Q4", + "objective": "RiskReduction", + "value": 182.1 + }, + { + "option": "DX-03 Q4", + "objective": "DisruptionCost", + "value": 0.67 + }, + { + "option": "DX-03 Q4", + "objective": "Capex", + "value": 4.67 + }, + { + "option": "DX-04 Q1", + "objective": "RiskReduction", + "value": 331.5 + }, + { + "option": "DX-04 Q1", + "objective": "DisruptionCost", + "value": 1.82 + }, + { + "option": "DX-04 Q1", + "objective": "Capex", + "value": 5.04 + }, + { + "option": "DX-04 Q2", + "objective": "RiskReduction", + "value": 268.5 + }, + { + "option": "DX-04 Q2", + "objective": "DisruptionCost", + "value": 1.29 + }, + { + "option": "DX-04 Q2", + "objective": "Capex", + "value": 4.67 + }, + { + "option": "DX-04 Q3", + "objective": "RiskReduction", + "value": 217.5 + }, + { + "option": "DX-04 Q3", + "objective": "DisruptionCost", + "value": 1.9 + }, + { + "option": "DX-04 Q3", + "objective": "Capex", + "value": 4.76 + }, + { + "option": "DX-04 Q4", + "objective": "RiskReduction", + "value": 176.2 + }, + { + "option": "DX-04 Q4", + "objective": "DisruptionCost", + "value": 1.44 + }, + { + "option": "DX-04 Q4", + "objective": "Capex", + "value": 4.85 + }, + { + "option": "DX-05 Q2", + "objective": "RiskReduction", + "value": 269.2 + }, + { + "option": "DX-05 Q2", + "objective": "DisruptionCost", + "value": 0.99 + }, + { + "option": "DX-05 Q2", + "objective": "Capex", + "value": 2.53 + }, + { + "option": "DX-05 Q3", + "objective": "RiskReduction", + "value": 245.0 + }, + { + "option": "DX-05 Q3", + "objective": "DisruptionCost", + "value": 1.45 + }, + { + "option": "DX-05 Q3", + "objective": "Capex", + "value": 2.58 + }, + { + "option": "DX-05 Q4", + "objective": "RiskReduction", + "value": 222.9 + }, + { + "option": "DX-05 Q4", + "objective": "DisruptionCost", + "value": 1.1 + }, + { + "option": "DX-05 Q4", + "objective": "Capex", + "value": 2.63 + }, + { + "option": "DX-06 Q1", + "objective": "RiskReduction", + "value": 360.4 + }, + { + "option": "DX-06 Q1", + "objective": "DisruptionCost", + "value": 2.2 + }, + { + "option": "DX-06 Q1", + "objective": "Capex", + "value": 3.51 + }, + { + "option": "DX-06 Q2", + "objective": "RiskReduction", + "value": 309.9 + }, + { + "option": "DX-06 Q2", + "objective": "DisruptionCost", + "value": 1.56 + }, + { + "option": "DX-06 Q2", + "objective": "Capex", + "value": 3.25 + }, + { + "option": "DX-06 Q3", + "objective": "RiskReduction", + "value": 266.6 + }, + { + "option": "DX-06 Q3", + "objective": "DisruptionCost", + "value": 2.29 + }, + { + "option": "DX-06 Q3", + "objective": "Capex", + "value": 3.32 + }, + { + "option": "DX-06 Q4", + "objective": "RiskReduction", + "value": 229.2 + }, + { + "option": "DX-06 Q4", + "objective": "DisruptionCost", + "value": 1.74 + }, + { + "option": "DX-06 Q4", + "objective": "Capex", + "value": 3.38 + }, + { + "option": "DX-07 Q1", + "objective": "RiskReduction", + "value": 713.3 + }, + { + "option": "DX-07 Q1", + "objective": "DisruptionCost", + "value": 3.54 + }, + { + "option": "DX-07 Q1", + "objective": "Capex", + "value": 10.55 + }, + { + "option": "DX-07 Q2", + "objective": "RiskReduction", + "value": 577.8 + }, + { + "option": "DX-07 Q2", + "objective": "DisruptionCost", + "value": 2.51 + }, + { + "option": "DX-07 Q2", + "objective": "Capex", + "value": 9.78 + }, + { + "option": "DX-07 Q3", + "objective": "RiskReduction", + "value": 468.0 + }, + { + "option": "DX-07 Q3", + "objective": "DisruptionCost", + "value": 3.69 + }, + { + "option": "DX-07 Q3", + "objective": "Capex", + "value": 9.97 + }, + { + "option": "DX-07 Q4", + "objective": "RiskReduction", + "value": 379.1 + }, + { + "option": "DX-07 Q4", + "objective": "DisruptionCost", + "value": 2.8 + }, + { + "option": "DX-07 Q4", + "objective": "Capex", + "value": 10.17 + } + ] +} \ No newline at end of file diff --git a/examples/outage_program_scheduling/solutions.json b/examples/outage_program_scheduling/solutions.json new file mode 100644 index 0000000..7c3f02a --- /dev/null +++ b/examples/outage_program_scheduling/solutions.json @@ -0,0 +1,7676 @@ +{ + "run": { + "run_id": "ee392b21-c3d7-4f6a-a653-66be3a802edb", + "created_at": "2026-08-03T21:34:06.491522Z", + "mode": "fast", + "solutions": [ + { + "solution_id": 1, + "selected_options": [ + "TX-01 Q1", + "TX-02 Q2", + "TX-03 Q2", + "TX-04 Q1", + "TX-05 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q3", + "GT-02 Q4", + "GT-04 Q1", + "GT-05 Q4", + "HY-01 Q3", + "HY-02 Q1", + "HY-03 Q2", + "DX-01 Q3", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 7369.3, + "DisruptionCost": 50.46, + "Capex": 73.68 + }, + "allocations": null, + "content_signature": "8a3768b5a1f7", + "sensitivity": null + }, + { + "solution_id": 2, + "selected_options": [ + "TX-01 Q1", + "TX-02 Q2", + "TX-03 Q2", + "TX-04 Q1", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q3", + "GT-02 Q4", + "GT-04 Q1", + "GT-05 Q4", + "HY-01 Q3", + "HY-02 Q1", + "HY-03 Q2", + "DX-01 Q3", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 7166.0, + "DisruptionCost": 48.55, + "Capex": 72.2 + }, + "allocations": null, + "content_signature": "5979267c98fe", + "sensitivity": null + }, + { + "solution_id": 3, + "selected_options": [ + "TX-01 Q1", + "TX-03 Q2", + "TX-04 Q2", + "TX-05 Q2", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q3", + "SB-07 Q4", + "GT-02 Q4", + "GT-04 Q1", + "GT-05 Q4", + "HY-01 Q3", + "HY-02 Q1", + "HY-03 Q2", + "DX-01 Q3", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 7152.0, + "DisruptionCost": 46.68, + "Capex": 75.02 + }, + "allocations": null, + "content_signature": "eb5d159a6fee", + "sensitivity": null + }, + { + "solution_id": 4, + "selected_options": [ + "TX-01 Q1", + "TX-03 Q2", + "TX-04 Q2", + "TX-05 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q3", + "GT-04 Q1", + "GT-05 Q4", + "HY-01 Q3", + "HY-02 Q1", + "HY-03 Q2", + "DX-01 Q3", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 7021.3, + "DisruptionCost": 46.75, + "Capex": 71.31 + }, + "allocations": null, + "content_signature": "bc919341714a", + "sensitivity": null + }, + { + "solution_id": 5, + "selected_options": [ + "TX-01 Q1", + "TX-02 Q3", + "TX-03 Q2", + "TX-04 Q2", + "TX-05 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q3", + "GT-02 Q4", + "GT-04 Q1", + "GT-05 Q4", + "HY-01 Q3", + "HY-02 Q1", + "HY-03 Q2", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 6979.5, + "DisruptionCost": 48.93, + "Capex": 68.94 + }, + "allocations": null, + "content_signature": "eccf7e6b3fc8", + "sensitivity": null + }, + { + "solution_id": 6, + "selected_options": [ + "TX-01 Q1", + "TX-03 Q2", + "TX-04 Q2", + "TX-05 Q2", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q3", + "SB-07 Q4", + "GT-02 Q4", + "GT-04 Q1", + "GT-05 Q4", + "HY-01 Q3", + "HY-02 Q1", + "HY-03 Q2", + "DX-01 Q3", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 6922.8, + "DisruptionCost": 44.94, + "Capex": 71.64 + }, + "allocations": null, + "content_signature": "2a4f78d764c1", + "sensitivity": null + }, + { + "solution_id": 7, + "selected_options": [ + "TX-01 Q1", + "TX-02 Q2", + "TX-03 Q2", + "TX-04 Q1", + "TX-05 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "GT-02 Q4", + "GT-04 Q1", + "GT-05 Q4", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q2", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 6764.3, + "DisruptionCost": 45.99, + "Capex": 66.41 + }, + "allocations": null, + "content_signature": "0ed9f65bc9a1", + "sensitivity": null + }, + { + "solution_id": 8, + "selected_options": [ + "TX-01 Q1", + "TX-03 Q2", + "TX-04 Q2", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q3", + "SB-07 Q4", + "GT-02 Q4", + "GT-04 Q1", + "GT-05 Q4", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q2", + "DX-01 Q3", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 6702.5, + "DisruptionCost": 42.55, + "Capex": 70.22 + }, + "allocations": null, + "content_signature": "20701657b3d0", + "sensitivity": null + }, + { + "solution_id": 9, + "selected_options": [ + "TX-01 Q1", + "TX-03 Q2", + "TX-04 Q2", + "TX-05 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "GT-04 Q1", + "GT-05 Q4", + "HY-01 Q3", + "HY-02 Q1", + "HY-03 Q2", + "DX-01 Q3", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 6523.9, + "DisruptionCost": 43.23, + "Capex": 64.88 + }, + "allocations": null, + "content_signature": "64cb12e8f702", + "sensitivity": null + }, + { + "solution_id": 10, + "selected_options": [ + "TX-01 Q1", + "TX-03 Q2", + "TX-04 Q2", + "TX-05 Q2", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q3", + "GT-02 Q4", + "GT-04 Q1", + "GT-05 Q4", + "HY-01 Q3", + "HY-02 Q1", + "HY-03 Q2", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 6383.9, + "DisruptionCost": 41.71, + "Capex": 63.08 + }, + "allocations": null, + "content_signature": "d9d72a2b8a4b", + "sensitivity": null + }, + { + "solution_id": 11, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-07 Q4", + "GT-02 Q4", + "GT-04 Q1", + "GT-05 Q4", + "HY-01 Q3", + "HY-02 Q1", + "HY-03 Q2", + "DX-01 Q3", + "DX-02 Q2", + "DX-07 Q2" + ], + "objective_values": { + "RiskReduction": 6286.6, + "DisruptionCost": 39.11, + "Capex": 67.16 + }, + "allocations": null, + "content_signature": "6fac56f7e61a", + "sensitivity": null + }, + { + "solution_id": 12, + "selected_options": [ + "TX-01 Q1", + "TX-02 Q2", + "TX-03 Q2", + "TX-04 Q1", + "TX-05 Q2", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "GT-04 Q1", + "GT-05 Q4", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q2", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 6241.9, + "DisruptionCost": 40.14, + "Capex": 62.08 + }, + "allocations": null, + "content_signature": "174e400615b7", + "sensitivity": null + }, + { + "solution_id": 13, + "selected_options": [ + "TX-01 Q1", + "TX-02 Q2", + "TX-04 Q2", + "TX-05 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "GT-04 Q1", + "GT-05 Q4", + "HY-01 Q3", + "HY-02 Q1", + "HY-03 Q2", + "DX-01 Q3", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 6134.4, + "DisruptionCost": 41.98, + "Capex": 58.86 + }, + "allocations": null, + "content_signature": "89bb7716c5a2", + "sensitivity": null + }, + { + "solution_id": 14, + "selected_options": [ + "TX-01 Q1", + "TX-03 Q2", + "TX-04 Q2", + "TX-05 Q2", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q3", + "GT-02 Q4", + "GT-04 Q1", + "GT-05 Q4", + "HY-02 Q1", + "HY-03 Q2", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 6044.3, + "DisruptionCost": 39.97, + "Capex": 59.56 + }, + "allocations": null, + "content_signature": "03f3f7674448", + "sensitivity": null + }, + { + "solution_id": 15, + "selected_options": [ + "TX-01 Q1", + "TX-03 Q2", + "TX-04 Q2", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "GT-04 Q1", + "GT-05 Q4", + "HY-01 Q3", + "HY-02 Q1", + "HY-03 Q2", + "DX-01 Q3", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 6015.2, + "DisruptionCost": 37.85, + "Capex": 60.95 + }, + "allocations": null, + "content_signature": "22269aae14c0", + "sensitivity": null + }, + { + "solution_id": 16, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-05 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q3", + "GT-02 Q4", + "GT-04 Q1", + "GT-05 Q4", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q2", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 5929.8, + "DisruptionCost": 40.05, + "Capex": 55.86 + }, + "allocations": null, + "content_signature": "455937a5f3c2", + "sensitivity": null + }, + { + "solution_id": 17, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-05 Q2", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q3", + "SB-07 Q4", + "GT-02 Q4", + "GT-04 Q1", + "GT-05 Q4", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q2", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 5843.5, + "DisruptionCost": 37.6, + "Capex": 57.69 + }, + "allocations": null, + "content_signature": "97b6d0a1b6db", + "sensitivity": null + }, + { + "solution_id": 18, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q1", + "TX-05 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q3", + "GT-04 Q1", + "GT-05 Q4", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q2", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 5767.6, + "DisruptionCost": 38.93, + "Capex": 54.5 + }, + "allocations": null, + "content_signature": "8a423844a3bf", + "sensitivity": null + }, + { + "solution_id": 19, + "selected_options": [ + "TX-01 Q1", + "TX-03 Q2", + "TX-04 Q2", + "TX-05 Q2", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q3", + "SB-07 Q4", + "GT-04 Q2", + "HY-01 Q4", + "HY-02 Q1", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 5638.1, + "DisruptionCost": 34.41, + "Capex": 59.98 + }, + "allocations": null, + "content_signature": "54cf0e60e246", + "sensitivity": null + }, + { + "solution_id": 20, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-05 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q3", + "GT-02 Q4", + "GT-04 Q1", + "GT-05 Q4", + "HY-02 Q1", + "HY-03 Q2", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 5607.2, + "DisruptionCost": 38.79, + "Capex": 52.28 + }, + "allocations": null, + "content_signature": "dbd7ea2a982e", + "sensitivity": null + }, + { + "solution_id": 21, + "selected_options": [ + "TX-01 Q1", + "TX-02 Q2", + "TX-04 Q2", + "SB-01 Q2", + "SB-02 Q1", + "SB-03 Q2", + "GT-04 Q1", + "GT-05 Q4", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q2", + "DX-01 Q3", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 5579.4, + "DisruptionCost": 35.46, + "Capex": 55.06 + }, + "allocations": null, + "content_signature": "17693adb5694", + "sensitivity": null + }, + { + "solution_id": 22, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-05 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q3", + "GT-02 Q4", + "GT-04 Q1", + "HY-02 Q1", + "HY-03 Q2", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 5389.4, + "DisruptionCost": 37.35, + "Capex": 50.52 + }, + "allocations": null, + "content_signature": "0eb3aa6dae37", + "sensitivity": null + }, + { + "solution_id": 23, + "selected_options": [ + "TX-01 Q1", + "TX-03 Q2", + "TX-04 Q2", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q3", + "SB-07 Q4", + "GT-02 Q4", + "GT-04 Q2", + "HY-02 Q1", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 5329.2, + "DisruptionCost": 33.62, + "Capex": 56.8 + }, + "allocations": null, + "content_signature": "648cfc7fb175", + "sensitivity": null + }, + { + "solution_id": 24, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "GT-04 Q1", + "GT-05 Q4", + "HY-01 Q3", + "HY-02 Q1", + "HY-03 Q2", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 5258.3, + "DisruptionCost": 34.46, + "Capex": 49.39 + }, + "allocations": null, + "content_signature": "a88d24cde85d", + "sensitivity": null + }, + { + "solution_id": 25, + "selected_options": [ + "TX-01 Q1", + "TX-03 Q2", + "TX-04 Q2", + "TX-05 Q2", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "GT-04 Q2", + "HY-01 Q4", + "HY-02 Q1", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 5150.8, + "DisruptionCost": 31.61, + "Capex": 52.65 + }, + "allocations": null, + "content_signature": "60796addd578", + "sensitivity": null + }, + { + "solution_id": 26, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "SB-01 Q2", + "SB-02 Q1", + "SB-03 Q2", + "GT-02 Q4", + "GT-04 Q1", + "GT-05 Q4", + "HY-01 Q3", + "HY-02 Q1", + "DX-01 Q3", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 5023.3, + "DisruptionCost": 32.26, + "Capex": 49.25 + }, + "allocations": null, + "content_signature": "676c659443e3", + "sensitivity": null + }, + { + "solution_id": 27, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-05 Q2", + "SB-01 Q2", + "SB-02 Q1", + "SB-03 Q2", + "GT-02 Q4", + "GT-04 Q1", + "GT-05 Q4", + "HY-01 Q3", + "HY-02 Q1", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 4906.8, + "DisruptionCost": 31.96, + "Capex": 46.45 + }, + "allocations": null, + "content_signature": "7e5e0bb76894", + "sensitivity": null + }, + { + "solution_id": 28, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q1", + "SB-01 Q2", + "SB-02 Q1", + "SB-03 Q2", + "GT-04 Q2", + "GT-05 Q4", + "HY-02 Q1", + "HY-03 Q2", + "DX-01 Q3", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 4882.6, + "DisruptionCost": 30.7, + "Capex": 48.41 + }, + "allocations": null, + "content_signature": "811f4ced339e", + "sensitivity": null + }, + { + "solution_id": 29, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q3", + "GT-04 Q1", + "GT-05 Q4", + "HY-01 Q4", + "HY-02 Q1", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 4767.0, + "DisruptionCost": 29.63, + "Capex": 46.13 + }, + "allocations": null, + "content_signature": "34735f85ba44", + "sensitivity": null + }, + { + "solution_id": 30, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "GT-04 Q1", + "HY-02 Q1", + "HY-03 Q2", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 4700.9, + "DisruptionCost": 31.28, + "Capex": 44.11 + }, + "allocations": null, + "content_signature": "12d1143ba818", + "sensitivity": null + }, + { + "solution_id": 31, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q3", + "SB-07 Q4", + "GT-04 Q2", + "HY-01 Q4", + "HY-02 Q1", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 4692.3, + "DisruptionCost": 27.85, + "Capex": 48.77 + }, + "allocations": null, + "content_signature": "89edda4597ce", + "sensitivity": null + }, + { + "solution_id": 32, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "GT-04 Q1", + "GT-05 Q4", + "HY-01 Q3", + "HY-02 Q1", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 4515.8, + "DisruptionCost": 28.33, + "Capex": 43.02 + }, + "allocations": null, + "content_signature": "e2251f390981", + "sensitivity": null + }, + { + "solution_id": 33, + "selected_options": [ + "TX-01 Q1", + "TX-04 Q2", + "TX-05 Q2", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q3", + "GT-04 Q1", + "HY-02 Q1", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 4477.5, + "DisruptionCost": 30.43, + "Capex": 42.63 + }, + "allocations": null, + "content_signature": "3092711bc027", + "sensitivity": null + }, + { + "solution_id": 34, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "SB-01 Q2", + "SB-02 Q1", + "SB-03 Q2", + "SB-07 Q4", + "GT-04 Q2", + "HY-01 Q3", + "HY-02 Q1", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 4411.8, + "DisruptionCost": 25.89, + "Capex": 45.73 + }, + "allocations": null, + "content_signature": "bb415a9318c7", + "sensitivity": null + }, + { + "solution_id": 35, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-05 Q2", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "GT-04 Q2", + "GT-05 Q4", + "HY-02 Q1", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 4303.5, + "DisruptionCost": 27.14, + "Capex": 41.1 + }, + "allocations": null, + "content_signature": "2e11648a7d38", + "sensitivity": null + }, + { + "solution_id": 36, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "SB-01 Q2", + "SB-02 Q1", + "SB-03 Q2", + "GT-04 Q1", + "GT-05 Q4", + "HY-02 Q1", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 4146.9, + "DisruptionCost": 25.93, + "Capex": 39.57 + }, + "allocations": null, + "content_signature": "f27c158df81e", + "sensitivity": null + }, + { + "solution_id": 37, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "SB-01 Q2", + "SB-02 Q1", + "SB-03 Q2", + "SB-07 Q4", + "GT-04 Q2", + "HY-02 Q1", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 4072.2, + "DisruptionCost": 24.15, + "Capex": 42.21 + }, + "allocations": null, + "content_signature": "7af72fc7893e", + "sensitivity": null + }, + { + "solution_id": 38, + "selected_options": [ + "TX-01 Q1", + "TX-04 Q1", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "GT-04 Q1", + "HY-02 Q1", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 4060.8, + "DisruptionCost": 28.0, + "Capex": 38.62 + }, + "allocations": null, + "content_signature": "e34af6266987", + "sensitivity": null + }, + { + "solution_id": 39, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "GT-04 Q1", + "HY-02 Q1", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 3958.4, + "DisruptionCost": 25.15, + "Capex": 37.74 + }, + "allocations": null, + "content_signature": "2282a216d045", + "sensitivity": null + }, + { + "solution_id": 40, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "SB-01 Q2", + "SB-02 Q1", + "SB-03 Q2", + "GT-04 Q2", + "HY-02 Q1", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 3853.1, + "DisruptionCost": 23.13, + "Capex": 37.93 + }, + "allocations": null, + "content_signature": "8281b0257c12", + "sensitivity": null + } + ], + "total_pareto_found": 140, + "quality": { + "hypervolume_normalized": 0.4768, + "spacing_cv": 0.662 + }, + "constraints_snapshot": [ + { + "motivated_by": "", + "type": "objective_bound", + "objective": "Capex", + "operator": "max", + "value": 76.0 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-01 Q1", + "TX-02 Q1", + "TX-03 Q1", + "TX-04 Q1", + "TX-05 Q1", + "TX-06 Q1", + "TX-07 Q1", + "SB-01 Q1", + "SB-02 Q1", + "SB-04 Q1", + "SB-05 Q1", + "SB-07 Q1", + "GT-01 Q1", + "GT-02 Q1", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q1", + "HY-02 Q1", + "HY-03 Q1", + "DX-01 Q1", + "DX-02 Q1", + "DX-03 Q1", + "DX-04 Q1", + "DX-06 Q1", + "DX-07 Q1" + ], + "min": 0, + "max": 6 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-01 Q2", + "TX-02 Q2", + "TX-03 Q2", + "TX-04 Q2", + "TX-05 Q2", + "TX-06 Q2", + "TX-07 Q2", + "SB-01 Q2", + "SB-02 Q2", + "SB-03 Q2", + "SB-04 Q2", + "SB-05 Q2", + "SB-06 Q2", + "SB-07 Q2", + "GT-01 Q2", + "GT-02 Q2", + "GT-03 Q2", + "GT-04 Q2", + "GT-05 Q2", + "HY-01 Q2", + "HY-02 Q2", + "HY-03 Q2", + "HY-04 Q2", + "DX-01 Q2", + "DX-02 Q2", + "DX-03 Q2", + "DX-04 Q2", + "DX-05 Q2", + "DX-06 Q2", + "DX-07 Q2" + ], + "min": 0, + "max": 6 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-01 Q3", + "TX-02 Q3", + "TX-03 Q3", + "TX-04 Q3", + "TX-05 Q3", + "TX-06 Q3", + "TX-07 Q3", + "SB-01 Q3", + "SB-02 Q3", + "SB-03 Q3", + "SB-04 Q3", + "SB-05 Q3", + "SB-06 Q3", + "SB-07 Q3", + "GT-01 Q3", + "GT-02 Q3", + "GT-03 Q3", + "GT-04 Q3", + "GT-05 Q3", + "HY-01 Q3", + "HY-02 Q3", + "HY-03 Q3", + "HY-04 Q3", + "DX-01 Q3", + "DX-02 Q3", + "DX-03 Q3", + "DX-04 Q3", + "DX-05 Q3", + "DX-06 Q3", + "DX-07 Q3" + ], + "min": 0, + "max": 6 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-01 Q4", + "TX-02 Q4", + "TX-03 Q4", + "TX-04 Q4", + "TX-05 Q4", + "TX-06 Q4", + "TX-07 Q4", + "SB-01 Q4", + "SB-02 Q4", + "SB-03 Q4", + "SB-04 Q4", + "SB-05 Q4", + "SB-06 Q4", + "SB-07 Q4", + "GT-01 Q4", + "GT-02 Q4", + "GT-03 Q4", + "GT-04 Q4", + "GT-05 Q4", + "HY-01 Q4", + "HY-02 Q4", + "HY-03 Q4", + "HY-04 Q4", + "DX-01 Q4", + "DX-02 Q4", + "DX-03 Q4", + "DX-04 Q4", + "DX-05 Q4", + "DX-06 Q4", + "DX-07 Q4" + ], + "min": 0, + "max": 6 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-01 Q1", + "TX-01 Q2", + "TX-01 Q3", + "TX-01 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-01 Q1", + "TX-01 Q2" + ], + "min": 1, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-02 Q1", + "TX-02 Q2", + "TX-02 Q3", + "TX-02 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-03 Q1", + "TX-03 Q2", + "TX-03 Q3", + "TX-03 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-04 Q1", + "TX-04 Q2", + "TX-04 Q3", + "TX-04 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-04 Q1", + "TX-04 Q2" + ], + "min": 1, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-05 Q1", + "TX-05 Q2", + "TX-05 Q3", + "TX-05 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-06 Q1", + "TX-06 Q2", + "TX-06 Q3", + "TX-06 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-07 Q1", + "TX-07 Q2", + "TX-07 Q3", + "TX-07 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "SB-01 Q1", + "SB-01 Q2", + "SB-01 Q3", + "SB-01 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "SB-01 Q1", + "SB-01 Q2" + ], + "min": 1, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "SB-02 Q1", + "SB-02 Q2", + "SB-02 Q3", + "SB-02 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "SB-02 Q1", + "SB-02 Q2" + ], + "min": 1, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "SB-03 Q2", + "SB-03 Q3", + "SB-03 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "SB-03 Q2" + ], + "min": 1, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "SB-04 Q1", + "SB-04 Q2", + "SB-04 Q3", + "SB-04 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "SB-05 Q1", + "SB-05 Q2", + "SB-05 Q3", + "SB-05 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "SB-06 Q2", + "SB-06 Q3", + "SB-06 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "SB-07 Q1", + "SB-07 Q2", + "SB-07 Q3", + "SB-07 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "GT-01 Q1", + "GT-01 Q2", + "GT-01 Q3", + "GT-01 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "GT-02 Q1", + "GT-02 Q2", + "GT-02 Q3", + "GT-02 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "GT-03 Q2", + "GT-03 Q3", + "GT-03 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "GT-04 Q1", + "GT-04 Q2", + "GT-04 Q3", + "GT-04 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "GT-04 Q1", + "GT-04 Q2" + ], + "min": 1, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "GT-05 Q1", + "GT-05 Q2", + "GT-05 Q3", + "GT-05 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "HY-01 Q1", + "HY-01 Q2", + "HY-01 Q3", + "HY-01 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "HY-02 Q1", + "HY-02 Q2", + "HY-02 Q3", + "HY-02 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "HY-02 Q1", + "HY-02 Q2" + ], + "min": 1, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "HY-03 Q1", + "HY-03 Q2", + "HY-03 Q3", + "HY-03 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "HY-04 Q2", + "HY-04 Q3", + "HY-04 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "DX-01 Q1", + "DX-01 Q2", + "DX-01 Q3", + "DX-01 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "DX-02 Q1", + "DX-02 Q2", + "DX-02 Q3", + "DX-02 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "DX-02 Q1", + "DX-02 Q2" + ], + "min": 1, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "DX-03 Q1", + "DX-03 Q2", + "DX-03 Q3", + "DX-03 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "DX-04 Q1", + "DX-04 Q2", + "DX-04 Q3", + "DX-04 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "DX-05 Q2", + "DX-05 Q3", + "DX-05 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "DX-06 Q1", + "DX-06 Q2", + "DX-06 Q3", + "DX-06 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "DX-07 Q1", + "DX-07 Q2", + "DX-07 Q3", + "DX-07 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "SB-03 Q2", + "then_option": "SB-02 Q1" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "SB-03 Q3", + "then_option": "SB-02 Q2" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "SB-03 Q4", + "then_option": "SB-02 Q3" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "SB-06 Q2", + "then_option": "SB-05 Q1" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "SB-06 Q3", + "then_option": "SB-05 Q2" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "SB-06 Q4", + "then_option": "SB-05 Q3" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "GT-03 Q2", + "then_option": "GT-02 Q1" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "GT-03 Q3", + "then_option": "GT-02 Q2" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "GT-03 Q4", + "then_option": "GT-02 Q3" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "HY-04 Q2", + "then_option": "HY-03 Q1" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "HY-04 Q3", + "then_option": "HY-03 Q2" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "HY-04 Q4", + "then_option": "HY-03 Q3" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "DX-05 Q2", + "then_option": "DX-04 Q1" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "DX-05 Q3", + "then_option": "DX-04 Q2" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "DX-05 Q4", + "then_option": "DX-04 Q3" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "TX-01 Q1", + "option_b": "TX-03 Q1" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "TX-01 Q2", + "option_b": "TX-03 Q2" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "TX-01 Q3", + "option_b": "TX-03 Q3" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "TX-01 Q4", + "option_b": "TX-03 Q4" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "TX-05 Q1", + "option_b": "TX-06 Q1" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "TX-05 Q2", + "option_b": "TX-06 Q2" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "TX-05 Q3", + "option_b": "TX-06 Q3" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "TX-05 Q4", + "option_b": "TX-06 Q4" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "DX-01 Q2", + "option_b": "DX-05 Q2" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "DX-01 Q3", + "option_b": "DX-05 Q3" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "DX-01 Q4", + "option_b": "DX-05 Q4" + } + ], + "seed_used": 42, + "solver": "nsga-ii", + "exact": false, + "time_limit": null, + "time_limited": false, + "solve_fingerprint": null, + "problem_snapshot": { + "n_options": 115, + "n_objectives": 3, + "n_scores": 345, + "approach": "binary", + "aggregation_mix": { + "sum": 3 + }, + "constraint_type_counts": { + "objective_bound": 1, + "group_limit": 42, + "dependency": 15, + "exclusion_pair": 11 + }, + "interaction_matrix": false, + "scenarios": 2, + "exact_fits": true, + "exact_fits_reason": "" + } + }, + "exact_run": { + "run_id": "b03b2fbe-cbd1-49df-8b11-4d2866852bb2", + "created_at": "2026-08-03T21:35:25.475446Z", + "mode": "fast", + "solutions": [ + { + "solution_id": 1, + "selected_options": [ + "TX-01 Q2", + "TX-02 Q3", + "TX-03 Q1", + "TX-04 Q2", + "TX-05 Q3", + "TX-07 Q1", + "SB-01 Q2", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q3", + "SB-06 Q4", + "GT-02 Q3", + "GT-03 Q4", + "GT-04 Q1", + "GT-05 Q3", + "HY-01 Q3", + "HY-02 Q1", + "HY-03 Q1", + "HY-04 Q2", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 7876.2, + "DisruptionCost": 61.26, + "Capex": 75.96 + }, + "allocations": null, + "content_signature": "4c4399896858", + "sensitivity": null + }, + { + "solution_id": 2, + "selected_options": [ + "TX-01 Q2", + "TX-02 Q3", + "TX-03 Q1", + "TX-04 Q2", + "TX-05 Q4", + "TX-07 Q2", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q3", + "SB-06 Q4", + "GT-02 Q3", + "GT-04 Q1", + "GT-05 Q3", + "HY-01 Q3", + "HY-02 Q1", + "HY-03 Q1", + "HY-04 Q2", + "DX-02 Q2", + "DX-06 Q3" + ], + "objective_values": { + "RiskReduction": 7866.3, + "DisruptionCost": 59.01, + "Capex": 75.87 + }, + "allocations": null, + "content_signature": "322904f79550", + "sensitivity": null + }, + { + "solution_id": 3, + "selected_options": [ + "TX-01 Q2", + "TX-02 Q4", + "TX-03 Q1", + "TX-04 Q2", + "TX-05 Q4", + "TX-07 Q2", + "SB-01 Q2", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q3", + "SB-06 Q4", + "GT-01 Q3", + "GT-02 Q4", + "GT-04 Q1", + "GT-05 Q4", + "HY-01 Q3", + "HY-02 Q1", + "HY-03 Q1", + "HY-04 Q2", + "DX-02 Q1" + ], + "objective_values": { + "RiskReduction": 7747.5, + "DisruptionCost": 54.67, + "Capex": 75.15 + }, + "allocations": null, + "content_signature": "b525523186fb", + "sensitivity": null + }, + { + "solution_id": 4, + "selected_options": [ + "TX-01 Q2", + "TX-02 Q3", + "TX-04 Q2", + "TX-05 Q4", + "TX-07 Q1", + "SB-01 Q2", + "SB-02 Q1", + "SB-03 Q2", + "SB-04 Q1", + "SB-05 Q3", + "SB-06 Q4", + "GT-02 Q3", + "GT-03 Q4", + "GT-04 Q1", + "GT-05 Q3", + "HY-01 Q3", + "HY-02 Q2", + "HY-03 Q1", + "HY-04 Q2", + "DX-02 Q1", + "DX-06 Q3" + ], + "objective_values": { + "RiskReduction": 7709.0, + "DisruptionCost": 65.83, + "Capex": 73.61 + }, + "allocations": null, + "content_signature": "70143053d7c0", + "sensitivity": null + }, + { + "solution_id": 5, + "selected_options": [ + "TX-01 Q2", + "TX-02 Q3", + "TX-03 Q1", + "TX-04 Q2", + "TX-05 Q3", + "TX-07 Q2", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q3", + "SB-06 Q4", + "GT-02 Q3", + "GT-04 Q1", + "GT-05 Q3", + "HY-01 Q3", + "HY-02 Q2", + "HY-03 Q1", + "HY-04 Q2", + "DX-02 Q1" + ], + "objective_values": { + "RiskReduction": 7702.4, + "DisruptionCost": 63.13, + "Capex": 73.49 + }, + "allocations": null, + "content_signature": "59977a89b162", + "sensitivity": null + }, + { + "solution_id": 6, + "selected_options": [ + "TX-01 Q2", + "TX-02 Q3", + "TX-04 Q2", + "TX-05 Q4", + "TX-07 Q1", + "SB-01 Q2", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q3", + "SB-06 Q4", + "GT-01 Q3", + "GT-02 Q3", + "GT-03 Q4", + "GT-04 Q1", + "GT-05 Q3", + "HY-01 Q3", + "HY-02 Q2", + "HY-03 Q1", + "HY-04 Q2", + "DX-02 Q1", + "DX-06 Q1" + ], + "objective_values": { + "RiskReduction": 7580.7, + "DisruptionCost": 64.46, + "Capex": 71.86 + }, + "allocations": null, + "content_signature": "57fdb3ae71d6", + "sensitivity": null + }, + { + "solution_id": 7, + "selected_options": [ + "TX-01 Q2", + "TX-03 Q1", + "TX-04 Q2", + "TX-05 Q4", + "TX-07 Q1", + "SB-01 Q2", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q3", + "GT-02 Q2", + "GT-04 Q1", + "GT-05 Q2", + "HY-01 Q3", + "HY-02 Q1", + "HY-03 Q3", + "HY-04 Q4", + "DX-02 Q1", + "DX-06 Q3" + ], + "objective_values": { + "RiskReduction": 7508.7, + "DisruptionCost": 50.37, + "Capex": 72.39 + }, + "allocations": null, + "content_signature": "69c3d655446d", + "sensitivity": null + }, + { + "solution_id": 8, + "selected_options": [ + "TX-01 Q2", + "TX-03 Q1", + "TX-04 Q2", + "TX-05 Q4", + "TX-07 Q2", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q3", + "SB-06 Q4", + "GT-02 Q4", + "GT-04 Q1", + "GT-05 Q2", + "HY-01 Q3", + "HY-02 Q1", + "HY-03 Q3", + "DX-01 Q2", + "DX-02 Q1" + ], + "objective_values": { + "RiskReduction": 7437.9, + "DisruptionCost": 47.61, + "Capex": 72.04 + }, + "allocations": null, + "content_signature": "b99e82846299", + "sensitivity": null + }, + { + "solution_id": 9, + "selected_options": [ + "TX-01 Q2", + "TX-03 Q1", + "TX-04 Q2", + "TX-07 Q2", + "SB-01 Q2", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "SB-07 Q1", + "GT-04 Q2", + "GT-05 Q4", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q4", + "DX-01 Q4", + "DX-02 Q1", + "DX-06 Q1" + ], + "objective_values": { + "RiskReduction": 7367.7, + "DisruptionCost": 42.37, + "Capex": 75.63 + }, + "allocations": null, + "content_signature": "b0409c400b07", + "sensitivity": null + }, + { + "solution_id": 10, + "selected_options": [ + "TX-01 Q2", + "TX-03 Q1", + "TX-04 Q2", + "TX-07 Q1", + "SB-01 Q2", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "GT-02 Q4", + "GT-04 Q1", + "GT-05 Q4", + "HY-01 Q3", + "HY-02 Q1", + "HY-03 Q3", + "DX-01 Q2", + "DX-02 Q2", + "DX-06 Q1" + ], + "objective_values": { + "RiskReduction": 7356.1, + "DisruptionCost": 44.18, + "Capex": 72.57 + }, + "allocations": null, + "content_signature": "bdd277d11f1f", + "sensitivity": null + }, + { + "solution_id": 11, + "selected_options": [ + "TX-01 Q2", + "TX-03 Q1", + "TX-04 Q2", + "TX-05 Q4", + "TX-07 Q1", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q3", + "SB-06 Q4", + "GT-02 Q4", + "GT-04 Q2", + "GT-05 Q4", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q1", + "DX-02 Q2", + "DX-06 Q2" + ], + "objective_values": { + "RiskReduction": 7244.8, + "DisruptionCost": 44.06, + "Capex": 70.71 + }, + "allocations": null, + "content_signature": "fc0a0818f876", + "sensitivity": null + }, + { + "solution_id": 12, + "selected_options": [ + "TX-01 Q2", + "TX-02 Q3", + "TX-04 Q2", + "TX-05 Q4", + "TX-07 Q1", + "SB-01 Q2", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q3", + "SB-06 Q4", + "GT-02 Q4", + "GT-04 Q1", + "GT-05 Q2", + "HY-01 Q3", + "HY-02 Q1", + "HY-03 Q1", + "HY-04 Q2", + "DX-01 Q3", + "DX-02 Q1" + ], + "objective_values": { + "RiskReduction": 7208.5, + "DisruptionCost": 51.84, + "Capex": 67.55 + }, + "allocations": null, + "content_signature": "b5168801455a", + "sensitivity": null + }, + { + "solution_id": 13, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-05 Q3", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q3", + "SB-06 Q4", + "GT-02 Q2", + "GT-03 Q3", + "GT-04 Q1", + "GT-05 Q3", + "HY-01 Q3", + "HY-02 Q1", + "HY-03 Q1", + "HY-04 Q2", + "DX-02 Q1", + "DX-06 Q2" + ], + "objective_values": { + "RiskReduction": 7123.0, + "DisruptionCost": 58.24, + "Capex": 65.87 + }, + "allocations": null, + "content_signature": "9ef7d64ecfe9", + "sensitivity": null + }, + { + "solution_id": 14, + "selected_options": [ + "TX-01 Q2", + "TX-03 Q1", + "TX-04 Q2", + "TX-05 Q4", + "TX-07 Q1", + "SB-01 Q2", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q3", + "SB-06 Q4", + "GT-02 Q4", + "GT-04 Q1", + "GT-05 Q2", + "HY-01 Q3", + "HY-02 Q1", + "HY-03 Q1", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 7043.8, + "DisruptionCost": 43.58, + "Capex": 67.28 + }, + "allocations": null, + "content_signature": "3a094391ca31", + "sensitivity": null + }, + { + "solution_id": 15, + "selected_options": [ + "TX-01 Q2", + "TX-02 Q3", + "TX-04 Q2", + "TX-05 Q4", + "TX-07 Q2", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q3", + "GT-02 Q2", + "GT-04 Q1", + "GT-05 Q3", + "HY-01 Q3", + "HY-02 Q1", + "HY-03 Q1", + "HY-04 Q2", + "DX-02 Q1", + "DX-06 Q3" + ], + "objective_values": { + "RiskReduction": 7035.6, + "DisruptionCost": 52.64, + "Capex": 65.1 + }, + "allocations": null, + "content_signature": "61c194b907e6", + "sensitivity": null + }, + { + "solution_id": 16, + "selected_options": [ + "TX-01 Q2", + "TX-02 Q3", + "TX-04 Q2", + "TX-05 Q3", + "TX-07 Q1", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q3", + "GT-02 Q2", + "GT-03 Q3", + "GT-04 Q1", + "GT-05 Q3", + "HY-01 Q3", + "HY-02 Q1", + "HY-03 Q1", + "HY-04 Q2", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 6982.2, + "DisruptionCost": 56.45, + "Capex": 64.35 + }, + "allocations": null, + "content_signature": "af7a98590751", + "sensitivity": null + }, + { + "solution_id": 17, + "selected_options": [ + "TX-01 Q2", + "TX-02 Q4", + "TX-03 Q1", + "TX-04 Q2", + "TX-07 Q2", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "GT-04 Q2", + "GT-05 Q4", + "HY-01 Q1", + "HY-02 Q1", + "HY-03 Q1", + "DX-02 Q2", + "DX-03 Q4" + ], + "objective_values": { + "RiskReduction": 6862.1, + "DisruptionCost": 38.35, + "Capex": 70.66 + }, + "allocations": null, + "content_signature": "580c56cab9eb", + "sensitivity": null + }, + { + "solution_id": 18, + "selected_options": [ + "TX-01 Q2", + "TX-02 Q3", + "TX-04 Q2", + "TX-05 Q3", + "TX-07 Q1", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q3", + "SB-06 Q4", + "GT-02 Q3", + "GT-04 Q1", + "GT-05 Q2", + "HY-01 Q3", + "HY-02 Q1", + "HY-03 Q1", + "HY-04 Q2", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 6832.9, + "DisruptionCost": 52.79, + "Capex": 62.42 + }, + "allocations": null, + "content_signature": "b581e39e0379", + "sensitivity": null + }, + { + "solution_id": 19, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-05 Q3", + "TX-07 Q2", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q3", + "GT-02 Q3", + "GT-04 Q1", + "GT-05 Q3", + "HY-01 Q3", + "HY-02 Q1", + "HY-03 Q1", + "HY-04 Q2", + "DX-02 Q1", + "DX-06 Q2" + ], + "objective_values": { + "RiskReduction": 6774.7, + "DisruptionCost": 53.11, + "Capex": 61.62 + }, + "allocations": null, + "content_signature": "98f792053605", + "sensitivity": null + }, + { + "solution_id": 20, + "selected_options": [ + "TX-01 Q2", + "TX-02 Q4", + "TX-04 Q2", + "TX-05 Q4", + "TX-07 Q1", + "SB-01 Q2", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "GT-02 Q2", + "GT-04 Q1", + "GT-05 Q4", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q1", + "DX-02 Q2", + "DX-06 Q1" + ], + "objective_values": { + "RiskReduction": 6678.8, + "DisruptionCost": 41.1, + "Capex": 62.94 + }, + "allocations": null, + "content_signature": "3868ac74f705", + "sensitivity": null + }, + { + "solution_id": 21, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-05 Q4", + "TX-07 Q1", + "SB-01 Q2", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q3", + "SB-06 Q4", + "GT-02 Q2", + "GT-04 Q1", + "GT-05 Q3", + "HY-01 Q3", + "HY-02 Q1", + "HY-03 Q1", + "HY-04 Q2", + "DX-02 Q1" + ], + "objective_values": { + "RiskReduction": 6619.8, + "DisruptionCost": 47.64, + "Capex": 59.83 + }, + "allocations": null, + "content_signature": "fa37d17acf1d", + "sensitivity": null + }, + { + "solution_id": 22, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-05 Q4", + "TX-07 Q2", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q3", + "SB-06 Q4", + "GT-02 Q4", + "GT-04 Q1", + "GT-05 Q2", + "HY-01 Q3", + "HY-02 Q1", + "HY-03 Q1", + "HY-04 Q2", + "DX-02 Q1" + ], + "objective_values": { + "RiskReduction": 6570.0, + "DisruptionCost": 45.64, + "Capex": 59.56 + }, + "allocations": null, + "content_signature": "9c7b54cb255f", + "sensitivity": null + }, + { + "solution_id": 23, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-07 Q1", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q3", + "GT-02 Q2", + "GT-04 Q1", + "GT-05 Q2", + "HY-01 Q3", + "HY-02 Q1", + "HY-03 Q3", + "DX-02 Q1", + "DX-06 Q2" + ], + "objective_values": { + "RiskReduction": 6345.3, + "DisruptionCost": 40.75, + "Capex": 58.26 + }, + "allocations": null, + "content_signature": "d62c6bbc59ac", + "sensitivity": null + }, + { + "solution_id": 24, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-05 Q3", + "TX-07 Q1", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q2", + "SB-06 Q3", + "GT-02 Q3", + "GT-04 Q1", + "GT-05 Q3", + "HY-02 Q2", + "HY-03 Q1", + "HY-04 Q2", + "DX-02 Q1" + ], + "objective_values": { + "RiskReduction": 6292.5, + "DisruptionCost": 53.55, + "Capex": 56.41 + }, + "allocations": null, + "content_signature": "c34bcac81197", + "sensitivity": null + }, + { + "solution_id": 25, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-05 Q3", + "TX-07 Q1", + "SB-01 Q2", + "SB-02 Q1", + "SB-03 Q2", + "GT-01 Q2", + "GT-02 Q3", + "GT-04 Q1", + "GT-05 Q3", + "HY-02 Q1", + "HY-03 Q1", + "HY-04 Q2", + "DX-02 Q1" + ], + "objective_values": { + "RiskReduction": 6031.8, + "DisruptionCost": 49.44, + "Capex": 53.75 + }, + "allocations": null, + "content_signature": "4e91cb697dc9", + "sensitivity": null + }, + { + "solution_id": 26, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "SB-07 Q4", + "GT-04 Q2", + "HY-01 Q1", + "HY-02 Q1", + "HY-03 Q1", + "DX-02 Q2", + "DX-03 Q1", + "DX-07 Q2" + ], + "objective_values": { + "RiskReduction": 6012.1, + "DisruptionCost": 32.19, + "Capex": 66.96 + }, + "allocations": null, + "content_signature": "9914492bd73f", + "sensitivity": null + }, + { + "solution_id": 27, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-07 Q1", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "GT-02 Q3", + "GT-04 Q1", + "GT-05 Q2", + "HY-01 Q3", + "HY-02 Q1", + "HY-03 Q1", + "HY-04 Q2", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 5968.9, + "DisruptionCost": 42.51, + "Capex": 53.29 + }, + "allocations": null, + "content_signature": "01c547d66987", + "sensitivity": null + }, + { + "solution_id": 28, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-07 Q2", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "SB-07 Q1", + "GT-04 Q2", + "GT-05 Q4", + "HY-01 Q1", + "HY-02 Q1", + "HY-03 Q1", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 5890.9, + "DisruptionCost": 32.34, + "Capex": 56.26 + }, + "allocations": null, + "content_signature": "8458857d7450", + "sensitivity": null + }, + { + "solution_id": 29, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-07 Q2", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "GT-04 Q2", + "GT-05 Q4", + "HY-01 Q1", + "HY-02 Q1", + "HY-03 Q1", + "DX-02 Q2", + "DX-03 Q1" + ], + "objective_values": { + "RiskReduction": 5788.1, + "DisruptionCost": 31.78, + "Capex": 57.07 + }, + "allocations": null, + "content_signature": "6bc55f543c45", + "sensitivity": null + }, + { + "solution_id": 30, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-07 Q1", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "GT-02 Q2", + "GT-04 Q1", + "GT-05 Q2", + "HY-01 Q3", + "HY-02 Q1", + "HY-03 Q1", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 5696.0, + "DisruptionCost": 34.64, + "Capex": 51.1 + }, + "allocations": null, + "content_signature": "b78a1dcf5d92", + "sensitivity": null + }, + { + "solution_id": 31, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-05 Q3", + "TX-07 Q2", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "GT-02 Q1", + "GT-04 Q1", + "GT-05 Q1", + "HY-02 Q1", + "HY-03 Q2", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 5520.6, + "DisruptionCost": 40.06, + "Capex": 49.01 + }, + "allocations": null, + "content_signature": "36caa0ecc9c0", + "sensitivity": null + }, + { + "solution_id": 32, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q1", + "TX-05 Q2", + "TX-07 Q1", + "SB-01 Q2", + "SB-02 Q1", + "SB-03 Q2", + "GT-02 Q2", + "GT-04 Q1", + "GT-05 Q2", + "HY-02 Q1", + "DX-02 Q1" + ], + "objective_values": { + "RiskReduction": 5241.2, + "DisruptionCost": 36.09, + "Capex": 46.66 + }, + "allocations": null, + "content_signature": "110577634ad3", + "sensitivity": null + }, + { + "solution_id": 33, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-05 Q2", + "TX-07 Q1", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "GT-02 Q2", + "GT-04 Q1", + "GT-05 Q1", + "HY-02 Q1", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 5125.6, + "DisruptionCost": 34.36, + "Capex": 45.33 + }, + "allocations": null, + "content_signature": "d5ca7c9ae008", + "sensitivity": null + }, + { + "solution_id": 34, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-07 Q1", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "GT-02 Q2", + "GT-04 Q1", + "GT-05 Q1", + "HY-02 Q2", + "DX-02 Q1" + ], + "objective_values": { + "RiskReduction": 5015.4, + "DisruptionCost": 37.08, + "Capex": 44.82 + }, + "allocations": null, + "content_signature": "04886722b0e1", + "sensitivity": null + }, + { + "solution_id": 35, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-07 Q2", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "GT-02 Q2", + "GT-04 Q1", + "GT-05 Q1", + "HY-02 Q1", + "DX-02 Q1" + ], + "objective_values": { + "RiskReduction": 4980.6, + "DisruptionCost": 33.84, + "Capex": 44.33 + }, + "allocations": null, + "content_signature": "bac8fad830d7", + "sensitivity": null + }, + { + "solution_id": 36, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "SB-01 Q2", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "SB-07 Q1", + "GT-04 Q2", + "HY-01 Q1", + "HY-02 Q1", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 4828.6, + "DisruptionCost": 26.95, + "Capex": 48.46 + }, + "allocations": null, + "content_signature": "32de3dbe03f1", + "sensitivity": null + }, + { + "solution_id": 37, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-07 Q1", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "GT-04 Q1", + "GT-05 Q2", + "HY-02 Q1", + "DX-02 Q1" + ], + "objective_values": { + "RiskReduction": 4750.4, + "DisruptionCost": 31.36, + "Capex": 42.78 + }, + "allocations": null, + "content_signature": "d78ff3b784da", + "sensitivity": null + }, + { + "solution_id": 38, + "selected_options": [ + "TX-01 Q1", + "TX-04 Q2", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "GT-04 Q1", + "GT-05 Q1", + "HY-02 Q1", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 4295.0, + "DisruptionCost": 29.24, + "Capex": 39.76 + }, + "allocations": null, + "content_signature": "b9b2eca49662", + "sensitivity": null + }, + { + "solution_id": 39, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-07 Q1", + "SB-01 Q2", + "SB-02 Q1", + "SB-03 Q2", + "GT-04 Q2", + "HY-02 Q1", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 4266.0, + "DisruptionCost": 25.71, + "Capex": 40.57 + }, + "allocations": null, + "content_signature": "6544d174aa0e", + "sensitivity": null + }, + { + "solution_id": 40, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "SB-01 Q2", + "SB-02 Q1", + "SB-03 Q2", + "GT-04 Q2", + "HY-02 Q1", + "HY-03 Q4", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 4247.6, + "DisruptionCost": 24.65, + "Capex": 41.85 + }, + "allocations": null, + "content_signature": "f7168fbda7e8", + "sensitivity": null + }, + { + "solution_id": 41, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q1", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "GT-04 Q1", + "HY-02 Q1", + "DX-02 Q1" + ], + "objective_values": { + "RiskReduction": 4129.3, + "DisruptionCost": 28.7, + "Capex": 38.97 + }, + "allocations": null, + "content_signature": "f3277e2d18fa", + "sensitivity": null + }, + { + "solution_id": 42, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "SB-01 Q2", + "SB-02 Q1", + "SB-03 Q2", + "GT-04 Q2", + "HY-02 Q1", + "DX-02 Q2", + "DX-03 Q4" + ], + "objective_values": { + "RiskReduction": 4035.2, + "DisruptionCost": 23.8, + "Capex": 42.6 + }, + "allocations": null, + "content_signature": "2a9db2d4143d", + "sensitivity": null + }, + { + "solution_id": 43, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "GT-04 Q1", + "HY-02 Q1", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 3958.4, + "DisruptionCost": 25.15, + "Capex": 37.74 + }, + "allocations": null, + "content_signature": "2282a216d045", + "sensitivity": null + }, + { + "solution_id": 44, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "SB-01 Q2", + "SB-02 Q1", + "SB-03 Q2", + "GT-04 Q2", + "HY-02 Q1", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 3853.1, + "DisruptionCost": 23.13, + "Capex": 37.93 + }, + "allocations": null, + "content_signature": "8281b0257c12", + "sensitivity": null + } + ], + "total_pareto_found": 44, + "quality": { + "hypervolume_normalized": 0.5196, + "spacing_cv": 0.8405 + }, + "constraints_snapshot": [ + { + "motivated_by": "", + "type": "objective_bound", + "objective": "Capex", + "operator": "max", + "value": 76.0 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-01 Q1", + "TX-02 Q1", + "TX-03 Q1", + "TX-04 Q1", + "TX-05 Q1", + "TX-06 Q1", + "TX-07 Q1", + "SB-01 Q1", + "SB-02 Q1", + "SB-04 Q1", + "SB-05 Q1", + "SB-07 Q1", + "GT-01 Q1", + "GT-02 Q1", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q1", + "HY-02 Q1", + "HY-03 Q1", + "DX-01 Q1", + "DX-02 Q1", + "DX-03 Q1", + "DX-04 Q1", + "DX-06 Q1", + "DX-07 Q1" + ], + "min": 0, + "max": 6 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-01 Q2", + "TX-02 Q2", + "TX-03 Q2", + "TX-04 Q2", + "TX-05 Q2", + "TX-06 Q2", + "TX-07 Q2", + "SB-01 Q2", + "SB-02 Q2", + "SB-03 Q2", + "SB-04 Q2", + "SB-05 Q2", + "SB-06 Q2", + "SB-07 Q2", + "GT-01 Q2", + "GT-02 Q2", + "GT-03 Q2", + "GT-04 Q2", + "GT-05 Q2", + "HY-01 Q2", + "HY-02 Q2", + "HY-03 Q2", + "HY-04 Q2", + "DX-01 Q2", + "DX-02 Q2", + "DX-03 Q2", + "DX-04 Q2", + "DX-05 Q2", + "DX-06 Q2", + "DX-07 Q2" + ], + "min": 0, + "max": 6 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-01 Q3", + "TX-02 Q3", + "TX-03 Q3", + "TX-04 Q3", + "TX-05 Q3", + "TX-06 Q3", + "TX-07 Q3", + "SB-01 Q3", + "SB-02 Q3", + "SB-03 Q3", + "SB-04 Q3", + "SB-05 Q3", + "SB-06 Q3", + "SB-07 Q3", + "GT-01 Q3", + "GT-02 Q3", + "GT-03 Q3", + "GT-04 Q3", + "GT-05 Q3", + "HY-01 Q3", + "HY-02 Q3", + "HY-03 Q3", + "HY-04 Q3", + "DX-01 Q3", + "DX-02 Q3", + "DX-03 Q3", + "DX-04 Q3", + "DX-05 Q3", + "DX-06 Q3", + "DX-07 Q3" + ], + "min": 0, + "max": 6 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-01 Q4", + "TX-02 Q4", + "TX-03 Q4", + "TX-04 Q4", + "TX-05 Q4", + "TX-06 Q4", + "TX-07 Q4", + "SB-01 Q4", + "SB-02 Q4", + "SB-03 Q4", + "SB-04 Q4", + "SB-05 Q4", + "SB-06 Q4", + "SB-07 Q4", + "GT-01 Q4", + "GT-02 Q4", + "GT-03 Q4", + "GT-04 Q4", + "GT-05 Q4", + "HY-01 Q4", + "HY-02 Q4", + "HY-03 Q4", + "HY-04 Q4", + "DX-01 Q4", + "DX-02 Q4", + "DX-03 Q4", + "DX-04 Q4", + "DX-05 Q4", + "DX-06 Q4", + "DX-07 Q4" + ], + "min": 0, + "max": 6 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-01 Q1", + "TX-01 Q2", + "TX-01 Q3", + "TX-01 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-01 Q1", + "TX-01 Q2" + ], + "min": 1, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-02 Q1", + "TX-02 Q2", + "TX-02 Q3", + "TX-02 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-03 Q1", + "TX-03 Q2", + "TX-03 Q3", + "TX-03 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-04 Q1", + "TX-04 Q2", + "TX-04 Q3", + "TX-04 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-04 Q1", + "TX-04 Q2" + ], + "min": 1, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-05 Q1", + "TX-05 Q2", + "TX-05 Q3", + "TX-05 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-06 Q1", + "TX-06 Q2", + "TX-06 Q3", + "TX-06 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-07 Q1", + "TX-07 Q2", + "TX-07 Q3", + "TX-07 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "SB-01 Q1", + "SB-01 Q2", + "SB-01 Q3", + "SB-01 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "SB-01 Q1", + "SB-01 Q2" + ], + "min": 1, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "SB-02 Q1", + "SB-02 Q2", + "SB-02 Q3", + "SB-02 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "SB-02 Q1", + "SB-02 Q2" + ], + "min": 1, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "SB-03 Q2", + "SB-03 Q3", + "SB-03 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "SB-03 Q2" + ], + "min": 1, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "SB-04 Q1", + "SB-04 Q2", + "SB-04 Q3", + "SB-04 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "SB-05 Q1", + "SB-05 Q2", + "SB-05 Q3", + "SB-05 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "SB-06 Q2", + "SB-06 Q3", + "SB-06 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "SB-07 Q1", + "SB-07 Q2", + "SB-07 Q3", + "SB-07 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "GT-01 Q1", + "GT-01 Q2", + "GT-01 Q3", + "GT-01 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "GT-02 Q1", + "GT-02 Q2", + "GT-02 Q3", + "GT-02 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "GT-03 Q2", + "GT-03 Q3", + "GT-03 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "GT-04 Q1", + "GT-04 Q2", + "GT-04 Q3", + "GT-04 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "GT-04 Q1", + "GT-04 Q2" + ], + "min": 1, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "GT-05 Q1", + "GT-05 Q2", + "GT-05 Q3", + "GT-05 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "HY-01 Q1", + "HY-01 Q2", + "HY-01 Q3", + "HY-01 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "HY-02 Q1", + "HY-02 Q2", + "HY-02 Q3", + "HY-02 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "HY-02 Q1", + "HY-02 Q2" + ], + "min": 1, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "HY-03 Q1", + "HY-03 Q2", + "HY-03 Q3", + "HY-03 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "HY-04 Q2", + "HY-04 Q3", + "HY-04 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "DX-01 Q1", + "DX-01 Q2", + "DX-01 Q3", + "DX-01 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "DX-02 Q1", + "DX-02 Q2", + "DX-02 Q3", + "DX-02 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "DX-02 Q1", + "DX-02 Q2" + ], + "min": 1, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "DX-03 Q1", + "DX-03 Q2", + "DX-03 Q3", + "DX-03 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "DX-04 Q1", + "DX-04 Q2", + "DX-04 Q3", + "DX-04 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "DX-05 Q2", + "DX-05 Q3", + "DX-05 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "DX-06 Q1", + "DX-06 Q2", + "DX-06 Q3", + "DX-06 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "DX-07 Q1", + "DX-07 Q2", + "DX-07 Q3", + "DX-07 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "SB-03 Q2", + "then_option": "SB-02 Q1" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "SB-03 Q3", + "then_option": "SB-02 Q2" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "SB-03 Q4", + "then_option": "SB-02 Q3" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "SB-06 Q2", + "then_option": "SB-05 Q1" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "SB-06 Q3", + "then_option": "SB-05 Q2" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "SB-06 Q4", + "then_option": "SB-05 Q3" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "GT-03 Q2", + "then_option": "GT-02 Q1" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "GT-03 Q3", + "then_option": "GT-02 Q2" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "GT-03 Q4", + "then_option": "GT-02 Q3" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "HY-04 Q2", + "then_option": "HY-03 Q1" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "HY-04 Q3", + "then_option": "HY-03 Q2" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "HY-04 Q4", + "then_option": "HY-03 Q3" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "DX-05 Q2", + "then_option": "DX-04 Q1" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "DX-05 Q3", + "then_option": "DX-04 Q2" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "DX-05 Q4", + "then_option": "DX-04 Q3" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "TX-01 Q1", + "option_b": "TX-03 Q1" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "TX-01 Q2", + "option_b": "TX-03 Q2" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "TX-01 Q3", + "option_b": "TX-03 Q3" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "TX-01 Q4", + "option_b": "TX-03 Q4" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "TX-05 Q1", + "option_b": "TX-06 Q1" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "TX-05 Q2", + "option_b": "TX-06 Q2" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "TX-05 Q3", + "option_b": "TX-06 Q3" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "TX-05 Q4", + "option_b": "TX-06 Q4" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "DX-01 Q2", + "option_b": "DX-05 Q2" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "DX-01 Q3", + "option_b": "DX-05 Q3" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "DX-01 Q4", + "option_b": "DX-05 Q4" + } + ], + "seed_used": 42, + "solver": "highs", + "exact": true, + "time_limit": null, + "time_limited": false, + "solve_fingerprint": null, + "problem_snapshot": { + "n_options": 115, + "n_objectives": 3, + "n_scores": 345, + "approach": "binary", + "aggregation_mix": { + "sum": 3 + }, + "constraint_type_counts": { + "objective_bound": 1, + "group_limit": 42, + "dependency": 15, + "exclusion_pair": 11 + }, + "interaction_matrix": false, + "scenarios": 2, + "exact_fits": true, + "exact_fits_reason": "" + } + }, + "scenario_run": { + "scenario_runs": { + "summer_demand_surge": { + "run_id": "8398d114-ac8e-47ba-bd8f-29b39b5b8a96", + "created_at": "2026-08-03T21:35:26.526156Z", + "mode": "fast", + "solutions": [ + { + "solution_id": 1, + "selected_options": [ + "TX-01 Q2", + "TX-02 Q4", + "TX-04 Q2", + "TX-05 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "SB-07 Q4", + "GT-02 Q3", + "GT-03 Q4", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q3", + "HY-02 Q1", + "HY-03 Q2", + "DX-01 Q1", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 7374.5, + "DisruptionCost": 59.7, + "Capex": 74.53 + }, + "allocations": null, + "content_signature": "00c4824da7cb", + "sensitivity": null + }, + { + "solution_id": 2, + "selected_options": [ + "TX-01 Q2", + "TX-02 Q4", + "TX-04 Q2", + "TX-05 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "GT-01 Q4", + "GT-02 Q3", + "GT-03 Q4", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q1", + "DX-01 Q3", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 7191.0, + "DisruptionCost": 58.78, + "Capex": 71.56 + }, + "allocations": null, + "content_signature": "80c9507cf170", + "sensitivity": null + }, + { + "solution_id": 3, + "selected_options": [ + "TX-01 Q2", + "TX-02 Q4", + "TX-04 Q2", + "TX-05 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "SB-07 Q4", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q1", + "DX-01 Q3", + "DX-02 Q2", + "DX-04 Q2", + "DX-06 Q3" + ], + "objective_values": { + "RiskReduction": 7143.2, + "DisruptionCost": 50.62, + "Capex": 73.75 + }, + "allocations": null, + "content_signature": "daebf06fd985", + "sensitivity": null + }, + { + "solution_id": 4, + "selected_options": [ + "TX-01 Q2", + "TX-02 Q4", + "TX-04 Q2", + "TX-05 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "SB-07 Q4", + "GT-02 Q3", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q1", + "DX-01 Q3", + "DX-02 Q2", + "DX-04 Q2" + ], + "objective_values": { + "RiskReduction": 7115.0, + "DisruptionCost": 55.58, + "Capex": 72.27 + }, + "allocations": null, + "content_signature": "e0a34fc47c9e", + "sensitivity": null + }, + { + "solution_id": 5, + "selected_options": [ + "TX-01 Q2", + "TX-02 Q4", + "TX-04 Q2", + "TX-05 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q1", + "DX-01 Q3", + "DX-02 Q2", + "DX-04 Q2", + "DX-06 Q3" + ], + "objective_values": { + "RiskReduction": 6924.1, + "DisruptionCost": 49.6, + "Capex": 69.47 + }, + "allocations": null, + "content_signature": "c2c8acf55385", + "sensitivity": null + }, + { + "solution_id": 6, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-05 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "GT-01 Q4", + "GT-02 Q3", + "GT-03 Q4", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q1", + "DX-01 Q3", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 6915.4, + "DisruptionCost": 56.72, + "Capex": 68.08 + }, + "allocations": null, + "content_signature": "9a426c3a7653", + "sensitivity": null + }, + { + "solution_id": 7, + "selected_options": [ + "TX-01 Q2", + "TX-02 Q4", + "TX-04 Q2", + "TX-05 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "SB-07 Q4", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q1", + "DX-01 Q3", + "DX-02 Q2", + "DX-04 Q2" + ], + "objective_values": { + "RiskReduction": 6876.6, + "DisruptionCost": 46.96, + "Capex": 70.43 + }, + "allocations": null, + "content_signature": "7231353eef6f", + "sensitivity": null + }, + { + "solution_id": 8, + "selected_options": [ + "TX-01 Q2", + "TX-02 Q4", + "TX-04 Q2", + "TX-05 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "GT-01 Q1", + "GT-02 Q3", + "GT-03 Q4", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q3", + "HY-02 Q1", + "HY-03 Q2", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 6720.6, + "DisruptionCost": 56.99, + "Capex": 63.96 + }, + "allocations": null, + "content_signature": "cafcc3281d7d", + "sensitivity": null + }, + { + "solution_id": 9, + "selected_options": [ + "TX-01 Q2", + "TX-02 Q4", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "GT-02 Q3", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q2", + "DX-01 Q1", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 6696.7, + "DisruptionCost": 52.73, + "Capex": 65.69 + }, + "allocations": null, + "content_signature": "ae691c4f108e", + "sensitivity": null + }, + { + "solution_id": 10, + "selected_options": [ + "TX-01 Q2", + "TX-02 Q4", + "TX-04 Q2", + "TX-05 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q1", + "DX-01 Q3", + "DX-02 Q2", + "DX-04 Q2" + ], + "objective_values": { + "RiskReduction": 6657.5, + "DisruptionCost": 45.94, + "Capex": 66.15 + }, + "allocations": null, + "content_signature": "998c369c14a3", + "sensitivity": null + }, + { + "solution_id": 11, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "SB-07 Q4", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q1", + "DX-01 Q3", + "DX-02 Q2", + "DX-04 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 6626.9, + "DisruptionCost": 44.73, + "Capex": 68.85 + }, + "allocations": null, + "content_signature": "b6f3c341e14b", + "sensitivity": null + }, + { + "solution_id": 12, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-05 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "SB-07 Q4", + "GT-02 Q3", + "GT-03 Q4", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q1", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 6489.5, + "DisruptionCost": 51.21, + "Capex": 62.98 + }, + "allocations": null, + "content_signature": "732ad54cd04d", + "sensitivity": null + }, + { + "solution_id": 13, + "selected_options": [ + "TX-01 Q2", + "TX-02 Q4", + "TX-04 Q2", + "TX-05 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "SB-07 Q4", + "GT-04 Q2", + "GT-05 Q1", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q1", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 6441.5, + "DisruptionCost": 42.51, + "Capex": 64.98 + }, + "allocations": null, + "content_signature": "ec5b89b8a83c", + "sensitivity": null + }, + { + "solution_id": 14, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-05 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "GT-01 Q1", + "GT-02 Q3", + "GT-03 Q4", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q2", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 6428.0, + "DisruptionCost": 53.41, + "Capex": 60.54 + }, + "allocations": null, + "content_signature": "95f85c40438d", + "sensitivity": null + }, + { + "solution_id": 15, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-05 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q1", + "DX-01 Q3", + "DX-02 Q2", + "DX-06 Q3" + ], + "objective_values": { + "RiskReduction": 6380.0, + "DisruptionCost": 46.25, + "Capex": 61.32 + }, + "allocations": null, + "content_signature": "05a77fd39ba0", + "sensitivity": null + }, + { + "solution_id": 16, + "selected_options": [ + "TX-01 Q2", + "TX-02 Q4", + "TX-04 Q2", + "TX-05 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "SB-07 Q4", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q1", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 6288.3, + "DisruptionCost": 42.13, + "Capex": 61.48 + }, + "allocations": null, + "content_signature": "0225d38eca54", + "sensitivity": null + }, + { + "solution_id": 17, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-05 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "SB-07 Q4", + "GT-02 Q3", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q1", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 6251.1, + "DisruptionCost": 48.69, + "Capex": 59.84 + }, + "allocations": null, + "content_signature": "9a4ca09bda94", + "sensitivity": null + }, + { + "solution_id": 18, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-05 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "GT-02 Q3", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q1", + "DX-01 Q3", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 6097.0, + "DisruptionCost": 50.14, + "Capex": 56.73 + }, + "allocations": null, + "content_signature": "be9d6eb7a4d5", + "sensitivity": null + }, + { + "solution_id": 19, + "selected_options": [ + "TX-01 Q2", + "TX-02 Q4", + "TX-04 Q2", + "TX-05 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q1", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 6069.2, + "DisruptionCost": 41.11, + "Capex": 57.2 + }, + "allocations": null, + "content_signature": "6b540f8b313e", + "sensitivity": null + }, + { + "solution_id": 20, + "selected_options": [ + "TX-01 Q2", + "TX-02 Q4", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "SB-07 Q4", + "GT-04 Q1", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q1", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 6025.2, + "DisruptionCost": 39.46, + "Capex": 61.72 + }, + "allocations": null, + "content_signature": "d2807fa2173c", + "sensitivity": null + }, + { + "solution_id": 21, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-05 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "GT-01 Q1", + "GT-02 Q3", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q2", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 5934.8, + "DisruptionCost": 49.82, + "Capex": 54.29 + }, + "allocations": null, + "content_signature": "932b2c633006", + "sensitivity": null + }, + { + "solution_id": 22, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "SB-07 Q4", + "GT-04 Q1", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q1", + "DX-01 Q1", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 5906.6, + "DisruptionCost": 37.78, + "Capex": 59.39 + }, + "allocations": null, + "content_signature": "896ad99499cd", + "sensitivity": null + }, + { + "solution_id": 23, + "selected_options": [ + "TX-01 Q2", + "TX-02 Q4", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q1", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 5865.9, + "DisruptionCost": 39.2, + "Capex": 55.72 + }, + "allocations": null, + "content_signature": "e1230f1c9d88", + "sensitivity": null + }, + { + "solution_id": 24, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "GT-02 Q3", + "GT-03 Q4", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q1", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 5812.3, + "DisruptionCost": 47.21, + "Capex": 54.11 + }, + "allocations": null, + "content_signature": "29af52029607", + "sensitivity": null + }, + { + "solution_id": 25, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q1", + "DX-01 Q3", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 5655.3, + "DisruptionCost": 39.61, + "Capex": 53.41 + }, + "allocations": null, + "content_signature": "aa170e063601", + "sensitivity": null + }, + { + "solution_id": 26, + "selected_options": [ + "TX-01 Q2", + "TX-02 Q4", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "SB-07 Q4", + "GT-04 Q2", + "HY-02 Q1", + "HY-03 Q1", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 5626.6, + "DisruptionCost": 36.84, + "Capex": 58.26 + }, + "allocations": null, + "content_signature": "c3681b6a47de", + "sensitivity": null + }, + { + "solution_id": 27, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "GT-02 Q3", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q2", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 5550.9, + "DisruptionCost": 45.74, + "Capex": 51.19 + }, + "allocations": null, + "content_signature": "74fe29ee80e7", + "sensitivity": null + }, + { + "solution_id": 28, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-05 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "GT-04 Q1", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q1", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 5504.6, + "DisruptionCost": 36.55, + "Capex": 52.06 + }, + "allocations": null, + "content_signature": "a5a27fce76f4", + "sensitivity": null + }, + { + "solution_id": 29, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "SB-07 Q4", + "GT-04 Q2", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q1", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 5444.4, + "DisruptionCost": 34.3, + "Capex": 54.98 + }, + "allocations": null, + "content_signature": "84261fe2b299", + "sensitivity": null + }, + { + "solution_id": 30, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q1", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 5335.5, + "DisruptionCost": 36.07, + "Capex": 49.13 + }, + "allocations": null, + "content_signature": "28f71e683407", + "sensitivity": null + }, + { + "solution_id": 31, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "SB-07 Q4", + "GT-04 Q2", + "HY-02 Q1", + "HY-03 Q1", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 5121.8, + "DisruptionCost": 33.04, + "Capex": 51.4 + }, + "allocations": null, + "content_signature": "fd920bcdd2e9", + "sensitivity": null + }, + { + "solution_id": 32, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "GT-02 Q3", + "GT-04 Q1", + "GT-05 Q1", + "HY-02 Q1", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 5046.0, + "DisruptionCost": 42.89, + "Capex": 46.8 + }, + "allocations": null, + "content_signature": "0b69c8f1cbd3", + "sensitivity": null + }, + { + "solution_id": 33, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-05 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "GT-04 Q1", + "GT-05 Q1", + "HY-02 Q1", + "DX-02 Q2", + "DX-06 Q3" + ], + "objective_values": { + "RiskReduction": 5022.7, + "DisruptionCost": 38.77, + "Capex": 46.65 + }, + "allocations": null, + "content_signature": "1c24182a5ba3", + "sensitivity": null + }, + { + "solution_id": 34, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "GT-04 Q2", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q1", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 4970.5, + "DisruptionCost": 32.21, + "Capex": 47.59 + }, + "allocations": null, + "content_signature": "1ef0ee2d3cfb", + "sensitivity": null + }, + { + "solution_id": 35, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "GT-04 Q1", + "GT-05 Q1", + "HY-02 Q1", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 4807.6, + "DisruptionCost": 34.27, + "Capex": 44.96 + }, + "allocations": null, + "content_signature": "23c1e324f941", + "sensitivity": null + }, + { + "solution_id": 36, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-07 Q4", + "GT-04 Q2", + "HY-02 Q1", + "DX-02 Q2", + "DX-04 Q2" + ], + "objective_values": { + "RiskReduction": 4675.4, + "DisruptionCost": 31.65, + "Capex": 49.26 + }, + "allocations": null, + "content_signature": "e4f1889799f3", + "sensitivity": null + }, + { + "solution_id": 37, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "GT-04 Q1", + "GT-05 Q1", + "HY-02 Q1", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 4552.8, + "DisruptionCost": 33.2, + "Capex": 41.85 + }, + "allocations": null, + "content_signature": "6eed667b57ef", + "sensitivity": null + }, + { + "solution_id": 38, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-07 Q4", + "GT-04 Q2", + "HY-02 Q1", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 4406.9, + "DisruptionCost": 30.36, + "Capex": 44.59 + }, + "allocations": null, + "content_signature": "d8ec83a62586", + "sensitivity": null + }, + { + "solution_id": 39, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "GT-04 Q1", + "HY-02 Q1", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 4263.8, + "DisruptionCost": 30.7, + "Capex": 40.19 + }, + "allocations": null, + "content_signature": "84404f217ae3", + "sensitivity": null + }, + { + "solution_id": 40, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "GT-04 Q2", + "HY-02 Q1", + "DX-02 Q2" + ], + "objective_values": { + "RiskReduction": 4187.8, + "DisruptionCost": 29.34, + "Capex": 40.31 + }, + "allocations": null, + "content_signature": "bac29f4581ed", + "sensitivity": null + } + ], + "total_pareto_found": 139, + "quality": { + "hypervolume_normalized": 0.5327, + "spacing_cv": 0.6349 + }, + "constraints_snapshot": [ + { + "motivated_by": "", + "type": "objective_bound", + "objective": "Capex", + "operator": "max", + "value": 76.0 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-01 Q1", + "TX-02 Q1", + "TX-03 Q1", + "TX-04 Q1", + "TX-05 Q1", + "TX-06 Q1", + "TX-07 Q1", + "SB-01 Q1", + "SB-02 Q1", + "SB-04 Q1", + "SB-05 Q1", + "SB-07 Q1", + "GT-01 Q1", + "GT-02 Q1", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q1", + "HY-02 Q1", + "HY-03 Q1", + "DX-01 Q1", + "DX-02 Q1", + "DX-03 Q1", + "DX-04 Q1", + "DX-06 Q1", + "DX-07 Q1" + ], + "min": 0, + "max": 6 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-01 Q2", + "TX-02 Q2", + "TX-03 Q2", + "TX-04 Q2", + "TX-05 Q2", + "TX-06 Q2", + "TX-07 Q2", + "SB-01 Q2", + "SB-02 Q2", + "SB-03 Q2", + "SB-04 Q2", + "SB-05 Q2", + "SB-06 Q2", + "SB-07 Q2", + "GT-01 Q2", + "GT-02 Q2", + "GT-03 Q2", + "GT-04 Q2", + "GT-05 Q2", + "HY-01 Q2", + "HY-02 Q2", + "HY-03 Q2", + "HY-04 Q2", + "DX-01 Q2", + "DX-02 Q2", + "DX-03 Q2", + "DX-04 Q2", + "DX-05 Q2", + "DX-06 Q2", + "DX-07 Q2" + ], + "min": 0, + "max": 6 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-01 Q3", + "TX-02 Q3", + "TX-03 Q3", + "TX-04 Q3", + "TX-05 Q3", + "TX-06 Q3", + "TX-07 Q3", + "SB-01 Q3", + "SB-02 Q3", + "SB-03 Q3", + "SB-04 Q3", + "SB-05 Q3", + "SB-06 Q3", + "SB-07 Q3", + "GT-01 Q3", + "GT-02 Q3", + "GT-03 Q3", + "GT-04 Q3", + "GT-05 Q3", + "HY-01 Q3", + "HY-02 Q3", + "HY-03 Q3", + "HY-04 Q3", + "DX-01 Q3", + "DX-02 Q3", + "DX-03 Q3", + "DX-04 Q3", + "DX-05 Q3", + "DX-06 Q3", + "DX-07 Q3" + ], + "min": 0, + "max": 3 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-01 Q4", + "TX-02 Q4", + "TX-03 Q4", + "TX-04 Q4", + "TX-05 Q4", + "TX-06 Q4", + "TX-07 Q4", + "SB-01 Q4", + "SB-02 Q4", + "SB-03 Q4", + "SB-04 Q4", + "SB-05 Q4", + "SB-06 Q4", + "SB-07 Q4", + "GT-01 Q4", + "GT-02 Q4", + "GT-03 Q4", + "GT-04 Q4", + "GT-05 Q4", + "HY-01 Q4", + "HY-02 Q4", + "HY-03 Q4", + "HY-04 Q4", + "DX-01 Q4", + "DX-02 Q4", + "DX-03 Q4", + "DX-04 Q4", + "DX-05 Q4", + "DX-06 Q4", + "DX-07 Q4" + ], + "min": 0, + "max": 6 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-01 Q1", + "TX-01 Q2", + "TX-01 Q3", + "TX-01 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-01 Q1", + "TX-01 Q2" + ], + "min": 1, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-02 Q1", + "TX-02 Q2", + "TX-02 Q3", + "TX-02 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-03 Q1", + "TX-03 Q2", + "TX-03 Q3", + "TX-03 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-04 Q1", + "TX-04 Q2", + "TX-04 Q3", + "TX-04 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-04 Q1", + "TX-04 Q2" + ], + "min": 1, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-05 Q1", + "TX-05 Q2", + "TX-05 Q3", + "TX-05 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-06 Q1", + "TX-06 Q2", + "TX-06 Q3", + "TX-06 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-07 Q1", + "TX-07 Q2", + "TX-07 Q3", + "TX-07 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "SB-01 Q1", + "SB-01 Q2", + "SB-01 Q3", + "SB-01 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "SB-01 Q1", + "SB-01 Q2" + ], + "min": 1, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "SB-02 Q1", + "SB-02 Q2", + "SB-02 Q3", + "SB-02 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "SB-02 Q1", + "SB-02 Q2" + ], + "min": 1, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "SB-03 Q2", + "SB-03 Q3", + "SB-03 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "SB-03 Q2" + ], + "min": 1, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "SB-04 Q1", + "SB-04 Q2", + "SB-04 Q3", + "SB-04 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "SB-05 Q1", + "SB-05 Q2", + "SB-05 Q3", + "SB-05 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "SB-06 Q2", + "SB-06 Q3", + "SB-06 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "SB-07 Q1", + "SB-07 Q2", + "SB-07 Q3", + "SB-07 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "GT-01 Q1", + "GT-01 Q2", + "GT-01 Q3", + "GT-01 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "GT-02 Q1", + "GT-02 Q2", + "GT-02 Q3", + "GT-02 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "GT-03 Q2", + "GT-03 Q3", + "GT-03 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "GT-04 Q1", + "GT-04 Q2", + "GT-04 Q3", + "GT-04 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "GT-04 Q1", + "GT-04 Q2" + ], + "min": 1, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "GT-05 Q1", + "GT-05 Q2", + "GT-05 Q3", + "GT-05 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "HY-01 Q1", + "HY-01 Q2", + "HY-01 Q3", + "HY-01 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "HY-02 Q1", + "HY-02 Q2", + "HY-02 Q3", + "HY-02 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "HY-02 Q1", + "HY-02 Q2" + ], + "min": 1, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "HY-03 Q1", + "HY-03 Q2", + "HY-03 Q3", + "HY-03 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "HY-04 Q2", + "HY-04 Q3", + "HY-04 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "DX-01 Q1", + "DX-01 Q2", + "DX-01 Q3", + "DX-01 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "DX-02 Q1", + "DX-02 Q2", + "DX-02 Q3", + "DX-02 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "DX-02 Q1", + "DX-02 Q2" + ], + "min": 1, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "DX-03 Q1", + "DX-03 Q2", + "DX-03 Q3", + "DX-03 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "DX-04 Q1", + "DX-04 Q2", + "DX-04 Q3", + "DX-04 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "DX-05 Q2", + "DX-05 Q3", + "DX-05 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "DX-06 Q1", + "DX-06 Q2", + "DX-06 Q3", + "DX-06 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "DX-07 Q1", + "DX-07 Q2", + "DX-07 Q3", + "DX-07 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "SB-03 Q2", + "then_option": "SB-02 Q1" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "SB-03 Q3", + "then_option": "SB-02 Q2" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "SB-03 Q4", + "then_option": "SB-02 Q3" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "SB-06 Q2", + "then_option": "SB-05 Q1" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "SB-06 Q3", + "then_option": "SB-05 Q2" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "SB-06 Q4", + "then_option": "SB-05 Q3" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "GT-03 Q2", + "then_option": "GT-02 Q1" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "GT-03 Q3", + "then_option": "GT-02 Q2" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "GT-03 Q4", + "then_option": "GT-02 Q3" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "HY-04 Q2", + "then_option": "HY-03 Q1" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "HY-04 Q3", + "then_option": "HY-03 Q2" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "HY-04 Q4", + "then_option": "HY-03 Q3" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "DX-05 Q2", + "then_option": "DX-04 Q1" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "DX-05 Q3", + "then_option": "DX-04 Q2" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "DX-05 Q4", + "then_option": "DX-04 Q3" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "TX-01 Q1", + "option_b": "TX-03 Q1" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "TX-01 Q2", + "option_b": "TX-03 Q2" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "TX-01 Q3", + "option_b": "TX-03 Q3" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "TX-01 Q4", + "option_b": "TX-03 Q4" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "TX-05 Q1", + "option_b": "TX-06 Q1" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "TX-05 Q2", + "option_b": "TX-06 Q2" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "TX-05 Q3", + "option_b": "TX-06 Q3" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "TX-05 Q4", + "option_b": "TX-06 Q4" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "DX-01 Q2", + "option_b": "DX-05 Q2" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "DX-01 Q3", + "option_b": "DX-05 Q3" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "DX-01 Q4", + "option_b": "DX-05 Q4" + } + ], + "seed_used": 1694401657, + "solver": "nsga-ii", + "exact": false, + "time_limit": null, + "time_limited": false, + "solve_fingerprint": null, + "problem_snapshot": { + "n_options": 115, + "n_objectives": 3, + "n_scores": 345, + "approach": "binary", + "aggregation_mix": { + "sum": 3 + }, + "constraint_type_counts": { + "objective_bound": 1, + "group_limit": 42, + "dependency": 15, + "exclusion_pair": 11 + }, + "interaction_matrix": false, + "scenarios": 0, + "exact_fits": true, + "exact_fits_reason": "" + } + }, + "crew_shortage_q2": { + "run_id": "27665265-67a1-4841-9ea4-fa43bac19f60", + "created_at": "2026-08-03T21:35:26.541147Z", + "mode": "fast", + "solutions": [ + { + "solution_id": 1, + "selected_options": [ + "TX-01 Q2", + "TX-02 Q4", + "TX-04 Q2", + "TX-05 Q3", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "SB-07 Q4", + "GT-01 Q1", + "GT-02 Q3", + "GT-03 Q4", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q3", + "HY-02 Q1", + "HY-03 Q3", + "DX-01 Q3", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 7456.6, + "DisruptionCost": 57.08, + "Capex": 75.86 + }, + "allocations": null, + "content_signature": "5783ff1c8c52", + "sensitivity": null + }, + { + "solution_id": 2, + "selected_options": [ + "TX-01 Q2", + "TX-02 Q4", + "TX-04 Q2", + "TX-05 Q3", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "SB-07 Q4", + "GT-02 Q3", + "GT-03 Q4", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q1", + "HY-02 Q1", + "HY-03 Q3", + "DX-01 Q3", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 7312.7, + "DisruptionCost": 54.51, + "Capex": 74.1 + }, + "allocations": null, + "content_signature": "cbb8d36a43ea", + "sensitivity": null + }, + { + "solution_id": 3, + "selected_options": [ + "TX-01 Q2", + "TX-02 Q4", + "TX-04 Q2", + "TX-05 Q3", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-04 Q4", + "SB-05 Q4", + "SB-07 Q4", + "GT-01 Q1", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q3", + "DX-01 Q3", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 7179.4, + "DisruptionCost": 51.66, + "Capex": 74.78 + }, + "allocations": null, + "content_signature": "67dc0e07364a", + "sensitivity": null + }, + { + "solution_id": 4, + "selected_options": [ + "TX-01 Q2", + "TX-02 Q4", + "TX-04 Q2", + "TX-05 Q3", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-04 Q4", + "SB-05 Q4", + "GT-01 Q1", + "GT-02 Q3", + "GT-03 Q4", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q3", + "HY-02 Q1", + "HY-03 Q3", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 7134.3, + "DisruptionCost": 56.82, + "Capex": 71.14 + }, + "allocations": null, + "content_signature": "cccda8004b1c", + "sensitivity": null + }, + { + "solution_id": 5, + "selected_options": [ + "TX-01 Q2", + "TX-02 Q4", + "TX-04 Q2", + "TX-05 Q3", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "SB-07 Q4", + "GT-01 Q1", + "GT-02 Q3", + "GT-03 Q4", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q3", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 7119.8, + "DisruptionCost": 54.39, + "Capex": 71.64 + }, + "allocations": null, + "content_signature": "392d76f06b60", + "sensitivity": null + }, + { + "solution_id": 6, + "selected_options": [ + "TX-01 Q2", + "TX-02 Q4", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-04 Q4", + "SB-05 Q4", + "SB-07 Q4", + "GT-01 Q1", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q3", + "DX-01 Q3", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 6986.3, + "DisruptionCost": 47.71, + "Capex": 73.27 + }, + "allocations": null, + "content_signature": "938ae6852dbd", + "sensitivity": null + }, + { + "solution_id": 7, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "SB-07 Q4", + "GT-01 Q1", + "GT-02 Q3", + "GT-03 Q4", + "GT-04 Q1", + "GT-05 Q3", + "HY-01 Q1", + "HY-02 Q1", + "HY-03 Q3", + "DX-01 Q3", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 6974.9, + "DisruptionCost": 51.43, + "Capex": 70.8 + }, + "allocations": null, + "content_signature": "e4b02a808896", + "sensitivity": null + }, + { + "solution_id": 8, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-05 Q3", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "GT-01 Q1", + "GT-02 Q3", + "GT-03 Q4", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q3", + "HY-02 Q1", + "HY-03 Q3", + "DX-01 Q3", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 6961.9, + "DisruptionCost": 54.0, + "Capex": 68.1 + }, + "allocations": null, + "content_signature": "c9b8e4250d44", + "sensitivity": null + }, + { + "solution_id": 9, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "SB-07 Q4", + "GT-02 Q3", + "GT-03 Q4", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q1", + "HY-02 Q1", + "HY-03 Q3", + "DX-01 Q3", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 6844.0, + "DisruptionCost": 48.5, + "Capex": 69.11 + }, + "allocations": null, + "content_signature": "e533986dd4c4", + "sensitivity": null + }, + { + "solution_id": 10, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-05 Q3", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "GT-02 Q3", + "GT-03 Q4", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q1", + "HY-02 Q1", + "HY-03 Q3", + "DX-01 Q3", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 6818.0, + "DisruptionCost": 51.43, + "Capex": 66.34 + }, + "allocations": null, + "content_signature": "c9400cd313e3", + "sensitivity": null + }, + { + "solution_id": 11, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-04 Q4", + "SB-05 Q4", + "SB-07 Q4", + "GT-01 Q1", + "GT-04 Q1", + "GT-05 Q4", + "HY-01 Q1", + "HY-02 Q1", + "HY-03 Q3", + "DX-01 Q3", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 6693.2, + "DisruptionCost": 44.67, + "Capex": 69.69 + }, + "allocations": null, + "content_signature": "995405a016b4", + "sensitivity": null + }, + { + "solution_id": 12, + "selected_options": [ + "TX-01 Q2", + "TX-02 Q4", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "GT-02 Q3", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q1", + "HY-02 Q1", + "HY-03 Q3", + "DX-01 Q3", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 6662.1, + "DisruptionCost": 47.02, + "Capex": 65.17 + }, + "allocations": null, + "content_signature": "6c4930124398", + "sensitivity": null + }, + { + "solution_id": 13, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-05 Q3", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "GT-01 Q1", + "GT-02 Q3", + "GT-03 Q4", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q3", + "HY-02 Q1", + "HY-03 Q3", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 6642.1, + "DisruptionCost": 51.79, + "Capex": 63.82 + }, + "allocations": null, + "content_signature": "0652e010c09d", + "sensitivity": null + }, + { + "solution_id": 14, + "selected_options": [ + "TX-01 Q2", + "TX-02 Q4", + "TX-04 Q2", + "TX-05 Q3", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "SB-07 Q4", + "GT-04 Q1", + "HY-01 Q1", + "HY-02 Q1", + "HY-03 Q3", + "DX-01 Q3", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 6546.9, + "DisruptionCost": 44.1, + "Capex": 67.46 + }, + "allocations": null, + "content_signature": "9f3fdc79872d", + "sensitivity": null + }, + { + "solution_id": 15, + "selected_options": [ + "TX-01 Q2", + "TX-02 Q4", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-04 Q4", + "SB-05 Q4", + "GT-01 Q1", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q3", + "HY-02 Q1", + "HY-03 Q3", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 6464.4, + "DisruptionCost": 44.96, + "Capex": 64.65 + }, + "allocations": null, + "content_signature": "d772e642d23c", + "sensitivity": null + }, + { + "solution_id": 16, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-05 Q3", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "GT-01 Q1", + "GT-02 Q3", + "GT-03 Q4", + "GT-04 Q1", + "HY-01 Q1", + "HY-02 Q1", + "HY-03 Q3", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 6389.8, + "DisruptionCost": 48.89, + "Capex": 62.02 + }, + "allocations": null, + "content_signature": "dc53e25ef6c6", + "sensitivity": null + }, + { + "solution_id": 17, + "selected_options": [ + "TX-01 Q2", + "TX-02 Q4", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "GT-02 Q3", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q1", + "HY-02 Q1", + "HY-03 Q3", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 6342.3, + "DisruptionCost": 44.81, + "Capex": 60.89 + }, + "allocations": null, + "content_signature": "9f6cef38d678", + "sensitivity": null + }, + { + "solution_id": 18, + "selected_options": [ + "TX-01 Q2", + "TX-02 Q4", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "SB-07 Q4", + "GT-04 Q1", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q3", + "DX-01 Q3", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 6300.1, + "DisruptionCost": 40.07, + "Capex": 66.15 + }, + "allocations": null, + "content_signature": "4973bdcdcdb1", + "sensitivity": null + }, + { + "solution_id": 19, + "selected_options": [ + "TX-01 Q2", + "TX-02 Q4", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "SB-07 Q4", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q3", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 6269.3, + "DisruptionCost": 40.36, + "Capex": 63.53 + }, + "allocations": null, + "content_signature": "b09614ad1475", + "sensitivity": null + }, + { + "solution_id": 20, + "selected_options": [ + "TX-01 Q2", + "TX-02 Q4", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "GT-01 Q1", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q3", + "HY-02 Q1", + "HY-03 Q3", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 6247.8, + "DisruptionCost": 41.99, + "Capex": 60.81 + }, + "allocations": null, + "content_signature": "afba87956294", + "sensitivity": null + }, + { + "solution_id": 21, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q1", + "HY-02 Q1", + "HY-03 Q3", + "DX-01 Q3", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 6148.1, + "DisruptionCost": 39.57, + "Capex": 59.85 + }, + "allocations": null, + "content_signature": "5a22e2fbde01", + "sensitivity": null + }, + { + "solution_id": 22, + "selected_options": [ + "TX-01 Q2", + "TX-02 Q4", + "TX-04 Q2", + "TX-05 Q3", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "GT-02 Q3", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q1", + "HY-02 Q1", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 6120.2, + "DisruptionCost": 46.67, + "Capex": 58.55 + }, + "allocations": null, + "content_signature": "a26ab06db1af", + "sensitivity": null + }, + { + "solution_id": 23, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "GT-02 Q3", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q3", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 6013.0, + "DisruptionCost": 42.67, + "Capex": 57.61 + }, + "allocations": null, + "content_signature": "a4f785c8a850", + "sensitivity": null + }, + { + "solution_id": 24, + "selected_options": [ + "TX-01 Q2", + "TX-02 Q4", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "SB-07 Q4", + "GT-04 Q1", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q3", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 5980.3, + "DisruptionCost": 37.86, + "Capex": 61.87 + }, + "allocations": null, + "content_signature": "ec150ec55960", + "sensitivity": null + }, + { + "solution_id": 25, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-05 Q3", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "GT-04 Q1", + "GT-05 Q4", + "HY-01 Q1", + "HY-02 Q1", + "HY-03 Q3", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 5950.2, + "DisruptionCost": 40.25, + "Capex": 57.18 + }, + "allocations": null, + "content_signature": "57840b100bb2", + "sensitivity": null + }, + { + "solution_id": 26, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-05 Q3", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "GT-01 Q1", + "GT-02 Q3", + "GT-03 Q4", + "GT-04 Q1", + "GT-05 Q1", + "HY-02 Q1", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 5887.3, + "DisruptionCost": 47.96, + "Capex": 56.45 + }, + "allocations": null, + "content_signature": "86074deb5bda", + "sensitivity": null + }, + { + "solution_id": 27, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "GT-04 Q1", + "HY-01 Q1", + "HY-02 Q1", + "HY-03 Q3", + "DX-01 Q3", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 5859.1, + "DisruptionCost": 37.07, + "Capex": 58.19 + }, + "allocations": null, + "content_signature": "ee31347e11b3", + "sensitivity": null + }, + { + "solution_id": 28, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-05 Q3", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "GT-01 Q1", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q3", + "HY-02 Q1", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 5750.1, + "DisruptionCost": 41.79, + "Capex": 54.99 + }, + "allocations": null, + "content_signature": "d04cef439493", + "sensitivity": null + }, + { + "solution_id": 29, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-05 Q3", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "GT-02 Q3", + "GT-03 Q4", + "GT-04 Q1", + "GT-05 Q1", + "HY-02 Q1", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 5706.7, + "DisruptionCost": 45.79, + "Capex": 54.83 + }, + "allocations": null, + "content_signature": "a5c0bff389c1", + "sensitivity": null + }, + { + "solution_id": 30, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "GT-04 Q1", + "GT-05 Q4", + "HY-01 Q4", + "HY-02 Q1", + "HY-03 Q3", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 5703.4, + "DisruptionCost": 36.22, + "Capex": 55.87 + }, + "allocations": null, + "content_signature": "af78585d5d1e", + "sensitivity": null + }, + { + "solution_id": 31, + "selected_options": [ + "TX-01 Q2", + "TX-02 Q4", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "SB-07 Q4", + "GT-04 Q1", + "HY-01 Q4", + "HY-02 Q1", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 5565.1, + "DisruptionCost": 35.77, + "Capex": 58.02 + }, + "allocations": null, + "content_signature": "b1a173956965", + "sensitivity": null + }, + { + "solution_id": 32, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-05 Q3", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "GT-01 Q1", + "GT-04 Q1", + "HY-01 Q1", + "HY-02 Q1", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 5497.8, + "DisruptionCost": 38.89, + "Capex": 53.19 + }, + "allocations": null, + "content_signature": "7a54ca6a4001", + "sensitivity": null + }, + { + "solution_id": 33, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q1", + "HY-02 Q1", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 5413.1, + "DisruptionCost": 35.27, + "Capex": 51.72 + }, + "allocations": null, + "content_signature": "ec36bbfa1c30", + "sensitivity": null + }, + { + "solution_id": 34, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "SB-07 Q4", + "GT-04 Q1", + "HY-02 Q1", + "HY-03 Q3", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 5382.1, + "DisruptionCost": 34.54, + "Capex": 54.81 + }, + "allocations": null, + "content_signature": "ccc0cb30c36b", + "sensitivity": null + }, + { + "solution_id": 35, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-05 Q3", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "GT-04 Q1", + "GT-05 Q1", + "HY-02 Q1", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 5229.9, + "DisruptionCost": 37.88, + "Capex": 49.85 + }, + "allocations": null, + "content_signature": "f4fd0f5d6892", + "sensitivity": null + }, + { + "solution_id": 36, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "SB-07 Q4", + "GT-04 Q1", + "GT-05 Q4", + "HY-02 Q1", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 5184.7, + "DisruptionCost": 33.89, + "Capex": 52.72 + }, + "allocations": null, + "content_signature": "5af7e70eb2a0", + "sensitivity": null + }, + { + "solution_id": 37, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "GT-01 Q1", + "GT-04 Q1", + "GT-05 Q4", + "HY-02 Q1", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 5146.2, + "DisruptionCost": 35.04, + "Capex": 50.06 + }, + "allocations": null, + "content_signature": "086db3a6c486", + "sensitivity": null + }, + { + "solution_id": 38, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "SB-07 Q4", + "GT-04 Q1", + "HY-02 Q1", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 4966.9, + "DisruptionCost": 32.45, + "Capex": 50.96 + }, + "allocations": null, + "content_signature": "2d5b3e51f05c", + "sensitivity": null + }, + { + "solution_id": 39, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "GT-01 Q1", + "GT-04 Q1", + "HY-02 Q1", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 4928.4, + "DisruptionCost": 33.6, + "Capex": 48.3 + }, + "allocations": null, + "content_signature": "6d9630b5bce5", + "sensitivity": null + }, + { + "solution_id": 40, + "selected_options": [ + "TX-01 Q2", + "TX-04 Q2", + "TX-07 Q3", + "SB-01 Q1", + "SB-02 Q1", + "SB-03 Q2", + "SB-05 Q4", + "GT-04 Q1", + "HY-02 Q1", + "DX-02 Q2", + "DX-06 Q4" + ], + "objective_values": { + "RiskReduction": 4747.8, + "DisruptionCost": 31.43, + "Capex": 46.68 + }, + "allocations": null, + "content_signature": "6a12edbc9645", + "sensitivity": null + } + ], + "total_pareto_found": 139, + "quality": { + "hypervolume_normalized": 0.5131, + "spacing_cv": 1.2226 + }, + "constraints_snapshot": [ + { + "motivated_by": "", + "type": "objective_bound", + "objective": "Capex", + "operator": "max", + "value": 76.0 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-01 Q1", + "TX-02 Q1", + "TX-03 Q1", + "TX-04 Q1", + "TX-05 Q1", + "TX-06 Q1", + "TX-07 Q1", + "SB-01 Q1", + "SB-02 Q1", + "SB-04 Q1", + "SB-05 Q1", + "SB-07 Q1", + "GT-01 Q1", + "GT-02 Q1", + "GT-04 Q1", + "GT-05 Q1", + "HY-01 Q1", + "HY-02 Q1", + "HY-03 Q1", + "DX-01 Q1", + "DX-02 Q1", + "DX-03 Q1", + "DX-04 Q1", + "DX-06 Q1", + "DX-07 Q1" + ], + "min": 0, + "max": 6 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-01 Q2", + "TX-02 Q2", + "TX-03 Q2", + "TX-04 Q2", + "TX-05 Q2", + "TX-06 Q2", + "TX-07 Q2", + "SB-01 Q2", + "SB-02 Q2", + "SB-03 Q2", + "SB-04 Q2", + "SB-05 Q2", + "SB-06 Q2", + "SB-07 Q2", + "GT-01 Q2", + "GT-02 Q2", + "GT-03 Q2", + "GT-04 Q2", + "GT-05 Q2", + "HY-01 Q2", + "HY-02 Q2", + "HY-03 Q2", + "HY-04 Q2", + "DX-01 Q2", + "DX-02 Q2", + "DX-03 Q2", + "DX-04 Q2", + "DX-05 Q2", + "DX-06 Q2", + "DX-07 Q2" + ], + "min": 0, + "max": 4 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-01 Q3", + "TX-02 Q3", + "TX-03 Q3", + "TX-04 Q3", + "TX-05 Q3", + "TX-06 Q3", + "TX-07 Q3", + "SB-01 Q3", + "SB-02 Q3", + "SB-03 Q3", + "SB-04 Q3", + "SB-05 Q3", + "SB-06 Q3", + "SB-07 Q3", + "GT-01 Q3", + "GT-02 Q3", + "GT-03 Q3", + "GT-04 Q3", + "GT-05 Q3", + "HY-01 Q3", + "HY-02 Q3", + "HY-03 Q3", + "HY-04 Q3", + "DX-01 Q3", + "DX-02 Q3", + "DX-03 Q3", + "DX-04 Q3", + "DX-05 Q3", + "DX-06 Q3", + "DX-07 Q3" + ], + "min": 0, + "max": 6 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-01 Q4", + "TX-02 Q4", + "TX-03 Q4", + "TX-04 Q4", + "TX-05 Q4", + "TX-06 Q4", + "TX-07 Q4", + "SB-01 Q4", + "SB-02 Q4", + "SB-03 Q4", + "SB-04 Q4", + "SB-05 Q4", + "SB-06 Q4", + "SB-07 Q4", + "GT-01 Q4", + "GT-02 Q4", + "GT-03 Q4", + "GT-04 Q4", + "GT-05 Q4", + "HY-01 Q4", + "HY-02 Q4", + "HY-03 Q4", + "HY-04 Q4", + "DX-01 Q4", + "DX-02 Q4", + "DX-03 Q4", + "DX-04 Q4", + "DX-05 Q4", + "DX-06 Q4", + "DX-07 Q4" + ], + "min": 0, + "max": 6 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-01 Q1", + "TX-01 Q2", + "TX-01 Q3", + "TX-01 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-01 Q1", + "TX-01 Q2" + ], + "min": 1, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-02 Q1", + "TX-02 Q2", + "TX-02 Q3", + "TX-02 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-03 Q1", + "TX-03 Q2", + "TX-03 Q3", + "TX-03 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-04 Q1", + "TX-04 Q2", + "TX-04 Q3", + "TX-04 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-04 Q1", + "TX-04 Q2" + ], + "min": 1, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-05 Q1", + "TX-05 Q2", + "TX-05 Q3", + "TX-05 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-06 Q1", + "TX-06 Q2", + "TX-06 Q3", + "TX-06 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "TX-07 Q1", + "TX-07 Q2", + "TX-07 Q3", + "TX-07 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "SB-01 Q1", + "SB-01 Q2", + "SB-01 Q3", + "SB-01 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "SB-01 Q1", + "SB-01 Q2" + ], + "min": 1, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "SB-02 Q1", + "SB-02 Q2", + "SB-02 Q3", + "SB-02 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "SB-02 Q1", + "SB-02 Q2" + ], + "min": 1, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "SB-03 Q2", + "SB-03 Q3", + "SB-03 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "SB-03 Q2" + ], + "min": 1, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "SB-04 Q1", + "SB-04 Q2", + "SB-04 Q3", + "SB-04 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "SB-05 Q1", + "SB-05 Q2", + "SB-05 Q3", + "SB-05 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "SB-06 Q2", + "SB-06 Q3", + "SB-06 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "SB-07 Q1", + "SB-07 Q2", + "SB-07 Q3", + "SB-07 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "GT-01 Q1", + "GT-01 Q2", + "GT-01 Q3", + "GT-01 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "GT-02 Q1", + "GT-02 Q2", + "GT-02 Q3", + "GT-02 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "GT-03 Q2", + "GT-03 Q3", + "GT-03 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "GT-04 Q1", + "GT-04 Q2", + "GT-04 Q3", + "GT-04 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "GT-04 Q1", + "GT-04 Q2" + ], + "min": 1, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "GT-05 Q1", + "GT-05 Q2", + "GT-05 Q3", + "GT-05 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "HY-01 Q1", + "HY-01 Q2", + "HY-01 Q3", + "HY-01 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "HY-02 Q1", + "HY-02 Q2", + "HY-02 Q3", + "HY-02 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "HY-02 Q1", + "HY-02 Q2" + ], + "min": 1, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "HY-03 Q1", + "HY-03 Q2", + "HY-03 Q3", + "HY-03 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "HY-04 Q2", + "HY-04 Q3", + "HY-04 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "DX-01 Q1", + "DX-01 Q2", + "DX-01 Q3", + "DX-01 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "DX-02 Q1", + "DX-02 Q2", + "DX-02 Q3", + "DX-02 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "DX-02 Q1", + "DX-02 Q2" + ], + "min": 1, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "DX-03 Q1", + "DX-03 Q2", + "DX-03 Q3", + "DX-03 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "DX-04 Q1", + "DX-04 Q2", + "DX-04 Q3", + "DX-04 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "DX-05 Q2", + "DX-05 Q3", + "DX-05 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "DX-06 Q1", + "DX-06 Q2", + "DX-06 Q3", + "DX-06 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "DX-07 Q1", + "DX-07 Q2", + "DX-07 Q3", + "DX-07 Q4" + ], + "min": 0, + "max": 1 + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "SB-03 Q2", + "then_option": "SB-02 Q1" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "SB-03 Q3", + "then_option": "SB-02 Q2" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "SB-03 Q4", + "then_option": "SB-02 Q3" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "SB-06 Q2", + "then_option": "SB-05 Q1" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "SB-06 Q3", + "then_option": "SB-05 Q2" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "SB-06 Q4", + "then_option": "SB-05 Q3" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "GT-03 Q2", + "then_option": "GT-02 Q1" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "GT-03 Q3", + "then_option": "GT-02 Q2" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "GT-03 Q4", + "then_option": "GT-02 Q3" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "HY-04 Q2", + "then_option": "HY-03 Q1" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "HY-04 Q3", + "then_option": "HY-03 Q2" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "HY-04 Q4", + "then_option": "HY-03 Q3" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "DX-05 Q2", + "then_option": "DX-04 Q1" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "DX-05 Q3", + "then_option": "DX-04 Q2" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "DX-05 Q4", + "then_option": "DX-04 Q3" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "TX-01 Q1", + "option_b": "TX-03 Q1" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "TX-01 Q2", + "option_b": "TX-03 Q2" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "TX-01 Q3", + "option_b": "TX-03 Q3" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "TX-01 Q4", + "option_b": "TX-03 Q4" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "TX-05 Q1", + "option_b": "TX-06 Q1" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "TX-05 Q2", + "option_b": "TX-06 Q2" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "TX-05 Q3", + "option_b": "TX-06 Q3" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "TX-05 Q4", + "option_b": "TX-06 Q4" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "DX-01 Q2", + "option_b": "DX-05 Q2" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "DX-01 Q3", + "option_b": "DX-05 Q3" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "DX-01 Q4", + "option_b": "DX-05 Q4" + } + ], + "seed_used": 1586962009, + "solver": "nsga-ii", + "exact": false, + "time_limit": null, + "time_limited": false, + "solve_fingerprint": null, + "problem_snapshot": { + "n_options": 115, + "n_objectives": 3, + "n_scores": 345, + "approach": "binary", + "aggregation_mix": { + "sum": 3 + }, + "constraint_type_counts": { + "objective_bound": 1, + "group_limit": 42, + "dependency": 15, + "exclusion_pair": 11 + }, + "interaction_matrix": false, + "scenarios": 0, + "exact_fits": true, + "exact_fits_reason": "" + } + } + }, + "created_at": "2026-08-03T21:35:26.541968Z", + "solve_fingerprint": null, + "base_fingerprint": null + } +} \ No newline at end of file diff --git a/tests/test_upstream_kits.py b/tests/test_upstream_kits.py index 87e7633..e66f532 100644 --- a/tests/test_upstream_kits.py +++ b/tests/test_upstream_kits.py @@ -52,12 +52,17 @@ def _canon_scores(scores): "value": float(r["value"])}, sort_keys=True) for r in scores) -def _assert_model(example, built_constraints, built_scores, objectives, option_key): +def _assert_model(example, built_constraints, built_scores, objectives, option_key=None, *, + option_names=None): + """``option_key`` names the CSV column that IS the option list (one row per option). + ``option_names`` is the explicit list, for a kit whose options are derived rather than + listed — e.g. one option per (row, time window).""" p, s = _bundle(example) assert [(o["name"], o["direction"], o["aggregation"]) for o in p["objectives"]] == objectives assert _canon(p["constraints"]) == _canon(built_constraints) assert _canon_scores(s["scores"]) == _canon_scores(built_scores) - assert [o["name"] for o in s["options"]] == [r[option_key] for r in _rows(example)] + expected = option_names if option_names is not None else [r[option_key] for r in _rows(example)] + assert [o["name"] for o in s["options"]] == expected return p, s @@ -412,6 +417,97 @@ def test_interconnection_kit(): assert _canon(_scenario(p, name)["constraint_overrides"]) == _canon(envelope), name +_QUARTERS = ["Q1", "Q2", "Q3", "Q4"] + + +def _outage_windows(row): + """A phase-2 job has no Q1 window — its phase 1 has to come first.""" + return _QUARTERS[1:] if row["follows"] else _QUARTERS + + +def _outage_option(project_id, quarter): + return f"{project_id} {quarter}" + + +def test_outage_program_scheduling_kit(): + """The time-phased kit: the CSVs list JOBS, the model's options are (job, quarter) pairs. + + The encoding is the agent's work, so this test does it the way the ask states it — one + option per job per quarter it could run in, scores derived from the job's base values, + its own decay rate and the seasonal table. + """ + rows = _rows("outage_program_scheduling", "projects.csv") + factors = {(f["asset_class"], f["quarter"]): f + for f in _rows("outage_program_scheduling", "quarter_factors.csv")} + options, scores = [], [] + for r in rows: + for q in _outage_windows(r): + qi, f = _QUARTERS.index(q), factors[(r["asset_class"], q)] + name = _outage_option(r["project_id"], q) + options.append(name) + decay = 1.0 - float(r["risk_decay_pct_per_quarter"]) / 100.0 + scores += [ + {"option": name, "objective": "RiskReduction", + "value": round(float(r["risk_reduction_mwh"]) * decay ** qi, 1)}, + {"option": name, "objective": "DisruptionCost", + "value": round(float(r["disruption_musd"]) * float(f["disruption_factor"]), 2)}, + {"option": name, "objective": "Capex", + "value": round(float(r["capex_musd"]) * float(f["capex_factor"]), 2)}, + ] + + built = [{"type": "objective_bound", "objective": "Capex", "operator": "max", "value": 76.0}] + # six outage crews a quarter + built += [{"type": "group_limit", + "options": [_outage_option(r["project_id"], q) for r in rows + if q in _outage_windows(r)], "min": 0, "max": 6} + for q in _QUARTERS] + for r in rows: + # a job runs at most once — and a safety-critical job exactly once, before June 30 + built.append({"type": "group_limit", + "options": [_outage_option(r["project_id"], q) for q in _outage_windows(r)], + "min": 0, "max": 1}) + if r["safety_critical"]: + built.append({"type": "group_limit", + "options": [_outage_option(r["project_id"], q) for q in _QUARTERS[:2] + if q in _outage_windows(r)], "min": 1, "max": 1}) + # phase 2 runs in the quarter right after phase 1 + built += [{"type": "dependency", + "if_option": _outage_option(r["project_id"], _QUARTERS[i]), + "then_option": _outage_option(r["follows"], _QUARTERS[i - 1])} + for r in rows if r["follows"] for i in range(1, len(_QUARTERS))] + # corridor rivals stay out of the same quarter + by_id = {r["project_id"]: r for r in rows} + for members in _groups(rows, "project_id", "corridor").values(): + for i in range(len(members)): + for j in range(i + 1, len(members)): + a, b = by_id[members[i]], by_id[members[j]] + built += [{"type": "exclusion_pair", + "option_a": _outage_option(a["project_id"], q), + "option_b": _outage_option(b["project_id"], q)} + for q in _QUARTERS + if q in _outage_windows(a) and q in _outage_windows(b)] + + p, _ = _assert_model("outage_program_scheduling", built, scores, + [("RiskReduction", "maximize", "sum"), + ("DisruptionCost", "minimize", "sum"), ("Capex", "minimize", "sum")], + option_names=options) + + def _crews(quarter, slots): + return [c if not (c["type"] == "group_limit" and c.get("max") == 6 + and all(o.endswith(" " + quarter) for o in c["options"])) + else {**c, "max": slots} for c in built] + + surge = _scenario(p, "summer_demand_surge") + assert _canon(surge["constraint_overrides"]) == _canon(_crews("Q3", 3)) + assert _canon_scores(surge["score_overrides"]) == _canon_scores( + [{"option": _outage_option(r["project_id"], "Q3"), "objective": "DisruptionCost", + "value": round(round(float(r["disruption_musd"]) + * float(factors[(r["asset_class"], "Q3")]["disruption_factor"]), 2) + * 1.6, 2)} + for r in rows if "Q3" in _outage_windows(r)]) + assert _canon(_scenario(p, "crew_shortage_q2")["constraint_overrides"]) == _canon(_crews("Q2", 4)) + + def test_shift_coverage_staffing_kit(): rows = _rows("shift_coverage_staffing") built = [{"type": "objective_bound", "objective": "Cost", "operator": "max", "value": 210.0}, @@ -517,6 +613,7 @@ def test_community_program_funding_kit(): "emergency_readiness_portfolio", "interconnection_approvals", "investment_portfolio", + "outage_program_scheduling", "production_mix", "research_cohort_selection", "scarce_supply_rationing", @@ -548,6 +645,8 @@ def test_community_program_funding_kit(): "interconnection_approvals": ["$400M", "$320M", "$480M", "$560M", "9 approvals per zone"], "investment_portfolio": ["30%", "at most 3", "20%", "15% lower", "1.5x"], + "outage_program_scheduling": ["$76M", "at most 6 outages", "June 30", "right after", + "same corridor", "60% more", "3 crews", "4 crews"], "production_mix": ["30%", "25%", "at most 2 active"], "research_cohort_selection": ["exactly 24", "at least 4", "at least 3", "at least 2", "no more than 8", "at most 4", "V-118"],