From 2199c9c7edcc1674e2951c9245ac202f6e624b36 Mon Sep 17 00:00:00 2001 From: cafzal Date: Mon, 3 Aug 2026 09:41:08 -0700 Subject: [PATCH] =?UTF-8?q?examples:=20outage=5Fprogram=5Fscheduling=20?= =?UTF-8?q?=E2=80=94=20time-phased=20selection=20with=20staging=20cascades?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The first bundled example where TIME is the structure: 30 maintenance jobs x 4 quarters, so every option is a (job, quarter) pair and WHEN carries as much value as WHETHER. 115 options, 69 constraints — six crews a quarter, a $76M budget, a June-30 deadline on the safety-critical work, phase-2 jobs staged into the window right after phase 1, and corridor rivals that stay out of the same quarter. Every number in the README is asserted by a seeded generator against the engine's own output before the bundle is baked (re-baked on the post-#136 engine; dominance counts are stated with their scope — global advisory vs same-job vs earliest-window — and SB-03's dual membership, safety-critical AND phase-2 staged, is called out where the runbook uses both labels): - WHEN is a real choice: 62 of 85 later windows survive comparison with the job's own earliest window, and the mandatory 8-job set holds three separate frontier places that differ only in quarters (+208 MWh for $4.9M). - Deferral cascades: pinning HY-03 a quarter later evicts HY-04 from Q2; of the 14 MWh the corner loses, 13 are the knock-on, not the pinned job's decay. - A value-greedy schedule overruns Q1 by 19 jobs and the budget by $48.1M; the repaired greedy is legal and beaten outright by three certified programs. - The exact overlay dominates 15 of 40 heuristic programs and sharpens the risk corner +507 MWh; both curated finalists come back dominated with a named certified counterpart. - The per-option advisory flags 82 of 115 pairs (global scope; 58 same-job), and 36 of the 82 still appear in certified-optimal programs — a "worse" window is often the only window. - Audit: no safety work in H2, Ivyloch phase 1 always in Q1, and at least 2 of 7 deadline jobs in Q1 hold over every feasible program; the tighter floor returns a witness. - Scenarios: the summer surge re-prices Q3 (+60%) and caps it at 3 crews; the Q2 crew shortage leaves 5 of 40 base programs standing. Ships the upstream kit (projects.csv + quarter_factors.csv + the step-1 ask), its reconstruction test, the ask-literal guard, and the index row. --- examples/README.md | 1 + examples/outage_program_scheduling/README.md | 68 + .../outage_program_scheduling/problem.json | 2228 +++++ .../outage_program_scheduling/projects.csv | 31 + .../quarter_factors.csv | 21 + .../outage_program_scheduling/scores.json | 2191 +++++ .../outage_program_scheduling/solutions.json | 7676 +++++++++++++++++ tests/test_upstream_kits.py | 103 +- 8 files changed, 12317 insertions(+), 2 deletions(-) create mode 100644 examples/outage_program_scheduling/README.md create mode 100644 examples/outage_program_scheduling/problem.json create mode 100644 examples/outage_program_scheduling/projects.csv create mode 100644 examples/outage_program_scheduling/quarter_factors.csv create mode 100644 examples/outage_program_scheduling/scores.json create mode 100644 examples/outage_program_scheduling/solutions.json 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"],