diff --git a/examples/README.md b/examples/README.md index 951bef6..ee82f95 100644 --- a/examples/README.md +++ b/examples/README.md @@ -20,10 +20,11 @@ Loadable Frontier problems: combinatorial, multi-objective decisions beyond a sp | **[Scarce supply rationing](scarce_supply_rationing/)** | split constrained chip supply across 36 customers (demand ~1.8× supply) – revenue / strategic value / fragility, contractual floors | frontier + fab-outage & spot-surge scenarios | LP certify + duals | [problem.json](scarce_supply_rationing/problem.json) · [scores.json](scarce_supply_rationing/scores.json) | | **[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) | **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.) -**Governance (audit):** on binary selection problems, `explore audit` proves a property across the **whole feasible space** or returns a counterexample witness. [Claims investigation triage](claims_investigation_triage/) is the flagship (a compound guarantee in one conjunctive call, with an emergent core the constraints never state); [research cohort selection](research_cohort_selection/) shows the emergent-tightening flavor; [charging network siting](charging_network_siting/) proves coverage commitments on a shape the exact solver *declines* to optimize – audit is a feasibility solve, so a quadratic objective doesn't block it; and [float-pool shift coverage](shift_coverage_staffing/) proves emergent night-coverage and minimum-spend guarantees over every legal roster. +**Governance (audit):** on binary selection problems, `explore audit` proves a property across the **whole feasible space** or returns a counterexample witness. [Claims investigation triage](claims_investigation_triage/) is the flagship (a compound guarantee in one conjunctive call, with an emergent core the constraints never state); [research cohort selection](research_cohort_selection/) shows the emergent-tightening flavor; [charging network siting](charging_network_siting/) proves coverage commitments on a shape the exact solver *declines* to optimize – audit is a feasibility solve, so a quadratic objective doesn't block it; [float-pool shift coverage](shift_coverage_staffing/) proves emergent night-coverage and minimum-spend guarantees over every legal roster; and [emergency readiness portfolio](emergency_readiness_portfolio/) — the one **`min`-aggregated (weakest-link)** objective in the library — pairs the audited coverage commitments with a *bottleneck ceiling*: a mandated group floor caps the weakest link at that group's k-th best asset, so no legal portfolio can ever be readier than 41.8, at any budget. **GPU (cuOpt):** the hosted beta is CPU-only, so the GPU backend ships as a ready-to-run Colab template – [cuopt_colab.ipynb](cuopt_colab.ipynb) runs the same explore → exact → certify → duals arc with `solver="cuopt"` on **any bundled example – or your own problem** (it scaffolds both paths): open it in Colab, switch the runtime to GPU, run top to bottom. diff --git a/examples/charging_network_siting/README.md b/examples/charging_network_siting/README.md index 4728432..b89e857 100644 --- a/examples/charging_network_siting/README.md +++ b/examples/charging_network_siting/README.md @@ -52,4 +52,4 @@ 5. *“Keep the balanced program and the max-coverage one, and write it up for the infrastructure committee.”* `explore curate` per pick → `explore curated format="markdown"`. (Asking for an exact solve here *declines by design* — see the scope note below.) -**Exact-scope note.** Ask for `solve solver="highs"` here and the engine *declines, by design*: the exact MILP optimizes additive (`sum`) objectives, and `Overlap` is `quadratic` on a binary selection — outside that scope — so the response is a redefine hint, not a silent wrong answer. The audit beats above still run: audit is a *feasibility* solve, and a quadratic objective that no bound touches never enters the constraint region. For the certifiable quadratic sibling (minimize-`quadratic` on a *proportional* mean-variance shape), see [`supplier_selection`](../supplier_selection/); for the binary certify + audit arc on an all-`sum` shape, see [`claims_investigation_triage`](../claims_investigation_triage/). +**Exact-scope note.** Ask for `solve solver="highs"` here and the engine *declines, by design*: the exact MILP optimizes additive (`sum`) objectives, and `Overlap` is `quadratic` on a binary selection — outside that scope — so the response is a redefine hint, not a silent wrong answer. The audit beats above still run: audit is a *feasibility* solve, and a quadratic objective that no bound touches never enters the constraint region. For the certifiable quadratic sibling (minimize-`quadratic` on a *proportional* mean-variance shape), see [`supplier_selection`](../supplier_selection/); for the binary certify + audit arc on an all-`sum` shape, see [`claims_investigation_triage`](../claims_investigation_triage/); for the same decline-then-audit arc on a `min`-aggregated (weakest-link) objective, see [`emergency_readiness_portfolio`](../emergency_readiness_portfolio/). diff --git a/examples/emergency_readiness_portfolio/README.md b/examples/emergency_readiness_portfolio/README.md new file mode 100644 index 0000000..b6d2f5c --- /dev/null +++ b/examples/emergency_readiness_portfolio/README.md @@ -0,0 +1,75 @@ +# Regional emergency readiness portfolio + +**The decision.** A regional resilience authority funds 20–24 of 96 response assets — standing teams, equipment caches, mobile units, and standby contracts — across five hazard lines (flood, wildfire, quake, storm, hazmat) and four subregions, under a $58M/yr budget and a 4,600 response-hour surge floor. **Readiness does not add up.** When a hazard hits, every asset the authority holds on that line is tasked, and the line performs at the level of the least-ready unit it fields — so portfolio readiness is the *weakest hazard line*, a `min`, not a total. Adding an asset can lower it. + +**Why Frontier.** 2^96 candidate portfolios, coupled by shared station crews, mobile-unit cache dependencies, and line/subregion floors and caps — and the first bundled example whose signature objective is **`min`-aggregated**, which changes what every layer does. The flagship receipt is the proof layer's: the same NSGA search, rerun under another seed, tops out at a weakest link of **38.7** while the exact audit proves **41.8** attainable — the search missed 3.1 points the proof layer found. The lesson generalizes: on a `min` (weakest-link) objective, a heuristic's best value is a lower bound on what's attainable; the audit probe confirms the true ceiling. The baked run reaches 41.8, and the same probes certify it — feasible at 41.8, every plan above 41.85 proven out of reach — a verdict a search can only approach from below. + +The naive plays fail here in ways worth naming: + +- A **capability-per-dollar ranking is illegal here before it is even suboptimal**: the top 22 by surge-hours-per-$M is 22 standby contracts, breaking 8 rules at once (no hazmat anywhere, no swift-water team, two lines over cap). Patched into legality it costs $35.2M for a weakest link of 27.2 while over-buying surge to 2.2× the floor; for the same money the frontier offers **41.8** at $33.2M, still above the surge floor and 2.7 hours faster to activate. +- **Stacking the best assets fails the other way.** The 22 highest-readiness assets read like an 81.4 roster and are illegal on 12 counts (starting with $87.2M against a $58M budget). Patched to legality — the patch buys the surge hours an elite roster never had, and the cheapest hours are the least ready — it lands at **37.7**: a 43.7-point collapse, and still short of the frontier's 41.8. +- The frontier's key finding is a **bottleneck**, not a total: no legal portfolio can ever exceed a weakest link of **41.8**, because every subregion must field a hazmat unit and the Delta's best hazmat asset is a contracted spill responder rated 41.8. Money is not the lever — that ceiling survives every budget down to $27M/yr. + +**What ships here** — the raw inputs (step 1), the canonical model they frame into, and pre-solved results: + +- **`data.csv`**: the raw inputs a resilience authority would actually have — everything step 1 pastes. +- **`problem.json`**: 4 objectives (Readiness maximize **`min`**, SurgeCapacity maximize `sum`, Cost minimize `sum`, ActivationTime minimize `avg`), binary approach, 45 constraints (the $58M budget, the 4,600-hour surge floor, the 20–24 portfolio, per-line floors of 2 and caps of 7, per-subregion floors of 3 and caps of 8, ≥2 standing swift-water teams, ≥1 hazmat unit per subregion, 8 shared-crew exclusions, 20 mobile-unit → cache dependencies), and two scenarios (`concurrent_season`, `dual_hazmat_rule`). +- **`scores.json`**: the 96 assets scored per objective. Readiness is the certified rating of the hazard line *with that asset fielded* — the number the line is judged on when that unit is the weakest thing rolling. +- **`solutions.json`**: the exploratory NSGA `run` and the per-scenario `scenario_run`. No exact overlay — see the scope note below. + +## The runbook + +1. **Frame it from the raw inputs** — paste this ask, together with `data.csv`, into a fresh session: + + > We're renewing the region's standing response portfolio (`data.csv`): 96 assets — standing + > teams, equipment caches, mobile units, and standby contracts — each with its hazard line + > (flood, wildfire, quake, storm, hazmat), its subregion, a readiness rating (0–100), the + > response-hours it can deliver in the first 72 hours, its annual cost ($M), and how long it + > takes to activate (hours). The sheet also carries the crew a unit shares with another unit, + > the cache a mobile unit deploys on, and the readiness and activation figures for the + > affected assets under a concurrent flood-and-hazmat season. + > + > The decision is which assets to fund — each is in or out. + > + > Readiness is NOT a total. When a hazard hits, every asset we hold on that line is tasked, + > and the line is only as good as the least-ready unit it fields — so the portfolio's + > readiness is its WEAKEST hazard line. Maximize that weakest line. Maximize total surge + > hours. Minimize total annual cost, and minimize the average activation time. + > + > Hard rules: + > - Total annual cost at or below $58M. + > - Total surge capacity at or above 4600 response-hours in the first 72 hours. + > - Fund between 20 and 24 assets. + > - Every hazard line gets at least 2 assets and at most 7. + > - Every subregion gets at least 3 assets and at most 8. + > - At least 2 standing swift-water teams (the flood-line teams). + > - At least 1 hazmat unit in every subregion. + > - Two units that share a station crew can't both be stood up. + > - A mobile unit only deploys with its line's cache in the same subregion — fund the unit, + > fund the cache. + > + > Two futures to stress-test: + > - **Concurrent season** — floodwater inundates tank farms and rail sidings, so the flood + > and hazmat lines answer the same event: flood assets rate 66% of their single-event + > readiness, hazmat assets 78%, and both lines activate 40% slower (the affected assets' + > figures are in the `..._under_concurrent_season` columns). Every rule stays as-is. + > - **Dual hazmat rule** — after the regional spill review, every subregion must field two + > hazmat units instead of one (which lifts the hazmat line cap from 7 to 8 to fit them). + > Every other rule stays as-is. + + Framing that input (`model create` + `model update`) lands on exactly this problem — the ask plus the data reconstruct `problem.json` and `scores.json` verbatim (guarded by `tests/test_upstream_kits.py`). `model load source="emergency_readiness_portfolio"` is the shortcut: it skips framing and restores the pre-solved runs too. + +2. *“Which assets should we fund? Show me the real choices — how ready our weakest line can be, how many surge hours we carry, what it costs, and how fast we get moving.”* + `solve run` + `solve run_scenarios` → `explore tradeoffs`: 40 plans over 2^96 portfolios — the weakest line spans **27.2 to 41.8**, surge 4,768–9,834 hours, cost $30.2–57.8M, activation 2.9–7.6 hours. The balanced plan funds 22 assets at 37.6 / 7,729h / $41.7M / 5.9h. The trade that matters is **surge against readiness** (corr −0.40): contracted hours are how a portfolio buys capacity, and they are what drags the weakest line down. Cost barely moves readiness at all (corr −0.01). +3. *“Before we sign: can you guarantee the coverage commitments hold whatever we fund — and can we count on a third swift-water team whatever we pick?”* + `explore audit` with the ten commitments as ONE conjunctive property list (≥2 swift-water teams, a hazmat unit in each of the four subregions, ≥2 assets on each of the five lines): verdict `holds` across every feasible portfolio, in one call. Tighten swift-water to 3 and it flips to `violated`, with a concrete legal 20-asset portfolio carrying exactly 2. Ask for the minimum spend and audit answers that too: **no feasible portfolio costs less than $25.5M/yr** (`holds`; at $25.6M it returns a counterexample) — a floor nobody wrote down, falling out of the surge floor, the 20-asset minimum, and the line/subregion/hazmat floors. +4. *“Give me the exact solve — I want these certified.”* + `solve solver="highs"` **declines, by design** — see the scope note. The engine says why (a redefine hint naming the out-of-scope aggregations); the walkthrough routes the proof to `explore audit`, whose feasibility solves reason through the constraint set alone. +5. *“What is actually holding readiness down, and what would move it?”* + `explore composition` + `explore sensitivity` on the ceiling plans, read against the bottleneck: **every plan on the frontier that reaches 41.8 is pinned by the same asset, HZM-DL-04** — the Delta's contracted spill responder. The ceiling is arithmetic: a floor of *k* over a group forces *k* of its members in, so the weakest link can never beat that group's *k*-th best asset; across all fifteen mandated groups the tightest bound is `hazmat in Delta` at **41.8**, and the next-tightest is 78.1, so the binder is unique. Two HiGHS feasibility probes settle it — a portfolio with every asset at or above 41.8 is *feasible*; above 41.85 it is *no feasible plan*. **The lever is not in this decision.** Procuring one credible Delta hazmat unit moves the ceiling; another $25M of budget leaves it exactly where it is. +6. *“And if the season goes bad, or the spill review changes the rule?”* + `explore scenario_results` + `explore compare_runs`: under `concurrent_season` the ceiling falls **41.8 → 32.6**, still pinned by the Delta hazmat line — the concurrency lands on the line that was already thinnest. Under `dual_hazmat_rule` it falls **41.8 → 38.2**: requiring a *second* hazmat unit per subregion *lowers* measured readiness, because the second unit the Delta can field is worse than the first. A governance tightening that reads as strengthening is worth knowing before it is signed. +7. *“Keep the ceiling plan and the balanced one, and write it up for the board.”* + `explore curate` per pick → `explore curated format="markdown"`: the handoff table, led by the audited guarantee and the 41.8 ceiling — the two things that hold whichever finalist the board picks. + +**Exact-scope note.** Ask for `solve solver="highs"` here and the engine *declines, by design*: the exact MILP optimizes additive (`sum`) objectives, and on this binary selection `Readiness` is `min` (nonlinear) and `ActivationTime` is `avg` (fractional over a variable-size pick) — outside that scope, so the response is a redefine hint, not a silent wrong answer. The proof layer is still exact: `explore audit` is a *feasibility* solve, so it reasons over the whole feasible region without ever touching the objective (steps 3 and 5). One boundary is honest to name — `explore audit`'s `objective_bound` property needs a `sum` objective, so a *bound* on `Readiness` is out of scope; the 41.8 ceiling is proven instead by force-exclude feasibility probes, which is the same MILP doing the same job through the constraint set. For the same decline-then-audit arc with a *quadratic* objective, see [`charging_network_siting`](../charging_network_siting/); for the audit flagship on an all-`sum` shape, [`claims_investigation_triage`](../claims_investigation_triage/); for the emergent-guarantee flavor on a staffing roster, [`shift_coverage_staffing`](../shift_coverage_staffing/). diff --git a/examples/emergency_readiness_portfolio/data.csv b/examples/emergency_readiness_portfolio/data.csv new file mode 100644 index 0000000..ec8bfd2 --- /dev/null +++ b/examples/emergency_readiness_portfolio/data.csv @@ -0,0 +1,97 @@ +asset,kind,hazard_line,subregion,readiness_0_100,surge_hours_72h,annual_cost_musd,activation_hours,shares_crew_with,requires_cache,readiness_under_concurrent_season,activation_under_concurrent_season +FLD-NB-01,Team,Flood,North Basin,91.5,272,3.71,1.1,,,60.4,1.5 +FLD-NB-02,Team,Flood,North Basin,87.7,275,3.63,1.7,WFR-NB-02,,57.9,2.4 +FLD-NB-03,Cache,Flood,North Basin,66.2,69,0.80,4.4,,,43.7,6.2 +FLD-NB-04,Mobile,Flood,North Basin,68.4,430,3.85,2.7,,FLD-NB-03,45.1,3.8 +FLD-NB-05,Contract,Flood,North Basin,54.1,406,1.30,5.4,,,35.7,7.6 +FLD-NB-06,Contract,Flood,North Basin,37.7,584,1.39,8.7,,,24.9,12.2 +WFR-NB-01,Team,Wildfire,North Basin,94.2,275,3.98,1.5,,,, +WFR-NB-02,Team,Wildfire,North Basin,90.3,221,3.66,1.0,,,, +WFR-NB-03,Cache,Wildfire,North Basin,69.6,69,1.03,5.3,,,, +WFR-NB-04,Mobile,Wildfire,North Basin,81.4,468,4.46,2.4,,WFR-NB-03,, +WFR-NB-05,Contract,Wildfire,North Basin,36.0,441,1.34,10.6,,,, +QKE-NB-01,Team,Quake,North Basin,90.7,252,4.10,1.1,HZM-NB-01,,, +QKE-NB-02,Cache,Quake,North Basin,56.5,77,1.24,4.1,,,, +QKE-NB-03,Mobile,Quake,North Basin,69.4,398,4.25,2.5,,QKE-NB-02,, +QKE-NB-04,Contract,Quake,North Basin,35.9,416,1.60,9.4,,,, +STM-NB-01,Team,Storm,North Basin,75.1,243,3.02,1.0,,,, +STM-NB-02,Cache,Storm,North Basin,65.7,45,0.53,3.9,,,, +STM-NB-03,Mobile,Storm,North Basin,66.9,428,3.61,3.0,,STM-NB-02,, +STM-NB-04,Contract,Storm,North Basin,38.7,485,1.04,5.9,,,, +STM-NB-05,Contract,Storm,North Basin,37.4,464,0.99,8.8,,,, +HZM-NB-01,Team,Hazmat,North Basin,92.2,258,4.26,0.7,,,71.9,1.0 +HZM-NB-02,Cache,Hazmat,North Basin,80.6,72,1.54,2.0,,,62.9,2.8 +HZM-NB-03,Mobile,Hazmat,North Basin,74.5,341,4.24,2.8,,HZM-NB-02,58.1,3.9 +HZM-NB-04,Contract,Hazmat,North Basin,44.6,466,1.88,11.5,,,34.8,16.1 +FLD-HR-01,Team,Flood,Harbor Reach,83.4,257,3.46,1.1,,,55.0,1.5 +FLD-HR-02,Team,Flood,Harbor Reach,86.7,272,3.60,1.4,WFR-HR-02,,57.2,2.0 +FLD-HR-03,Cache,Flood,Harbor Reach,64.5,91,0.85,2.8,,,42.6,3.9 +FLD-HR-04,Mobile,Flood,Harbor Reach,71.9,451,4.00,3.5,,FLD-HR-03,47.5,4.9 +FLD-HR-05,Contract,Flood,Harbor Reach,44.7,395,1.17,7.8,,,29.5,10.9 +FLD-HR-06,Contract,Flood,Harbor Reach,52.5,463,1.37,8.8,,,34.6,12.3 +WFR-HR-01,Team,Wildfire,Harbor Reach,75.1,247,3.44,1.5,,,, +WFR-HR-02,Team,Wildfire,Harbor Reach,82.2,297,3.81,1.3,,,, +WFR-HR-03,Cache,Wildfire,Harbor Reach,75.3,99,1.17,3.2,,,, +WFR-HR-04,Mobile,Wildfire,Harbor Reach,73.1,373,3.93,2.5,,WFR-HR-03,, +WFR-HR-05,Contract,Wildfire,Harbor Reach,37.6,468,1.40,8.4,,,, +QKE-HR-01,Team,Quake,Harbor Reach,78.6,237,3.77,0.9,HZM-HR-01,,, +QKE-HR-02,Cache,Quake,Harbor Reach,59.4,82,1.28,5.3,,,, +QKE-HR-03,Mobile,Quake,Harbor Reach,65.9,394,4.17,3.2,,QKE-HR-02,, +QKE-HR-04,Contract,Quake,Harbor Reach,49.2,383,1.70,9.0,,,, +STM-HR-01,Team,Storm,Harbor Reach,82.6,298,3.42,0.5,,,, +STM-HR-02,Cache,Storm,Harbor Reach,50.9,83,0.51,4.6,,,, +STM-HR-03,Mobile,Storm,Harbor Reach,57.9,455,3.54,1.9,,STM-HR-02,, +STM-HR-04,Contract,Storm,Harbor Reach,48.7,505,1.19,8.5,,,, +STM-HR-05,Contract,Storm,Harbor Reach,27.2,436,0.82,9.1,,,, +HZM-HR-01,Team,Hazmat,Harbor Reach,93.7,244,4.24,0.8,,,73.1,1.1 +HZM-HR-02,Cache,Hazmat,Harbor Reach,62.4,69,1.37,3.4,,,48.7,4.8 +HZM-HR-03,Mobile,Hazmat,Harbor Reach,87.6,335,4.47,2.1,,HZM-HR-02,68.3,2.9 +HZM-HR-04,Contract,Hazmat,Harbor Reach,44.7,359,1.71,8.6,,,34.9,12.0 +FLD-UP-01,Team,Flood,Uplands,95.0,284,3.83,0.7,,,62.7,1.0 +FLD-UP-02,Team,Flood,Uplands,83.1,298,3.63,1.2,WFR-UP-02,,54.8,1.7 +FLD-UP-03,Cache,Flood,Uplands,73.5,157,1.13,4.3,,,48.5,6.0 +FLD-UP-04,Mobile,Flood,Uplands,70.7,436,3.92,2.6,,FLD-UP-03,46.7,3.6 +FLD-UP-05,Contract,Flood,Uplands,43.1,383,1.13,6.2,,,28.4,8.7 +FLD-UP-06,Contract,Flood,Uplands,52.1,491,1.41,7.3,,,34.4,10.2 +WFR-UP-01,Team,Wildfire,Uplands,80.6,313,3.84,2.1,,,, +WFR-UP-02,Team,Wildfire,Uplands,92.8,357,4.29,1.5,,,, +WFR-UP-03,Cache,Wildfire,Uplands,67.2,77,1.04,5.4,,,, +WFR-UP-04,Mobile,Wildfire,Uplands,88.0,420,4.41,1.9,,WFR-UP-03,, +WFR-UP-05,Contract,Wildfire,Uplands,52.3,422,1.50,7.4,,,, +QKE-UP-01,Team,Quake,Uplands,88.0,260,4.08,2.2,HZM-UP-01,,, +QKE-UP-02,Cache,Quake,Uplands,63.1,73,1.29,3.3,,,, +QKE-UP-03,Mobile,Quake,Uplands,69.2,342,4.03,0.8,,QKE-UP-02,, +QKE-UP-04,Contract,Quake,Uplands,42.7,421,1.69,10.4,,,, +STM-UP-01,Team,Storm,Uplands,78.1,318,3.40,1.3,,,, +STM-UP-02,Cache,Storm,Uplands,52.7,56,0.44,3.6,,,, +STM-UP-03,Mobile,Storm,Uplands,74.3,353,3.48,2.6,,STM-UP-02,, +STM-UP-04,Contract,Storm,Uplands,49.6,477,1.16,9.7,,,, +STM-UP-05,Contract,Storm,Uplands,28.0,404,0.78,9.6,,,, +HZM-UP-01,Team,Hazmat,Uplands,88.0,259,4.17,1.2,,,68.6,1.7 +HZM-UP-02,Cache,Hazmat,Uplands,79.3,67,1.51,4.1,,,61.9,5.7 +HZM-UP-03,Mobile,Hazmat,Uplands,75.9,313,4.16,4.0,,HZM-UP-02,59.2,5.6 +HZM-UP-04,Contract,Hazmat,Uplands,43.1,348,1.67,9.8,,,33.6,13.7 +FLD-DL-01,Team,Flood,Delta,82.6,324,3.73,0.9,,,54.5,1.3 +FLD-DL-02,Team,Flood,Delta,80.9,243,3.35,0.4,WFR-DL-02,,53.4,0.6 +FLD-DL-03,Cache,Flood,Delta,54.8,89,0.76,3.4,,,36.2,4.8 +FLD-DL-04,Mobile,Flood,Delta,79.1,420,4.03,2.3,,FLD-DL-03,52.2,3.2 +FLD-DL-05,Contract,Flood,Delta,42.9,544,1.39,7.9,,,28.3,11.1 +FLD-DL-06,Contract,Flood,Delta,38.6,488,1.24,12.3,,,25.5,17.2 +WFR-DL-01,Team,Wildfire,Delta,90.3,310,4.04,0.5,,,, +WFR-DL-02,Team,Wildfire,Delta,91.4,339,4.18,1.1,,,, +WFR-DL-03,Cache,Wildfire,Delta,70.3,100,1.13,4.0,,,, +WFR-DL-04,Mobile,Wildfire,Delta,73.1,430,4.15,2.3,,WFR-DL-03,, +WFR-DL-05,Contract,Wildfire,Delta,37.2,543,1.52,10.6,,,, +QKE-DL-01,Team,Quake,Delta,77.6,219,3.68,1.6,HZM-DL-01,,, +QKE-DL-02,Cache,Quake,Delta,65.2,95,1.37,3.9,,,, +QKE-DL-03,Mobile,Quake,Delta,74.8,433,4.49,1.6,,QKE-DL-02,, +QKE-DL-04,Contract,Quake,Delta,44.0,367,1.62,7.2,,,, +STM-DL-01,Team,Storm,Delta,65.7,334,3.20,1.3,,,, +STM-DL-02,Cache,Storm,Delta,59.8,125,0.71,2.1,,,, +STM-DL-03,Mobile,Storm,Delta,69.9,483,3.88,2.4,,STM-DL-02,, +STM-DL-04,Contract,Storm,Delta,30.5,491,0.95,3.1,,,, +STM-DL-05,Contract,Storm,Delta,33.8,456,0.94,11.4,,,, +HZM-DL-01,Team,Hazmat,Delta,38.2,234,2.97,1.7,,,29.8,2.4 +HZM-DL-02,Cache,Hazmat,Delta,30.9,135,1.28,4.2,,,24.1,5.9 +HZM-DL-03,Mobile,Hazmat,Delta,33.4,336,3.39,2.0,,HZM-DL-02,26.1,2.8 +HZM-DL-04,Contract,Hazmat,Delta,41.8,388,1.72,8.6,,,32.6,12.0 diff --git a/examples/emergency_readiness_portfolio/problem.json b/examples/emergency_readiness_portfolio/problem.json new file mode 100644 index 0000000..73688ee --- /dev/null +++ b/examples/emergency_readiness_portfolio/problem.json @@ -0,0 +1,1400 @@ +{ + "name": "Regional emergency readiness portfolio", + "domain": "Emergency management / disaster response", + "context": "A regional resilience authority renews its standing response portfolio: 96 assets \u2014 standing teams, equipment caches, mobile units, and standby contracts \u2014 across five hazard lines (flood, wildfire, quake, storm, hazmat) and four subregions, of which 20-24 are funded. Readiness does not add up: when a hazard hits, every asset the authority holds on that line is tasked, and the line performs at the level of the least-ready unit it fields. Portfolio readiness is therefore the WEAKEST hazard line \u2014 a min, not a total \u2014 so a low-readiness asset drags the whole portfolio down, and buying more capability on a strong line cannot move it.", + "approach": "binary", + "objectives": [ + { + "name": "Readiness", + "direction": "maximize", + "unit": "0-100 (weakest line)", + "aggregation": "min" + }, + { + "name": "SurgeCapacity", + "direction": "maximize", + "unit": "response-hours/72h", + "aggregation": "sum" + }, + { + "name": "Cost", + "direction": "minimize", + "unit": "$M/yr", + "aggregation": "sum" + }, + { + "name": "ActivationTime", + "direction": "minimize", + "unit": "hours", + "aggregation": "avg" + } + ], + "constraints": [ + { + "type": "objective_bound", + "objective": "Cost", + "operator": "max", + "value": 58.0 + }, + { + "type": "objective_bound", + "objective": "SurgeCapacity", + "operator": "min", + "value": 4600.0 + }, + { + "type": "cardinality", + "min": 20, + "max": 24 + }, + { + "type": "group_limit", + "options": [ + "FLD-NB-01", + "FLD-NB-02", + "FLD-NB-03", + "FLD-NB-04", + "FLD-NB-05", + "FLD-NB-06", + "FLD-HR-01", + "FLD-HR-02", + "FLD-HR-03", + "FLD-HR-04", + "FLD-HR-05", + "FLD-HR-06", + "FLD-UP-01", + "FLD-UP-02", + "FLD-UP-03", + "FLD-UP-04", + "FLD-UP-05", + "FLD-UP-06", + "FLD-DL-01", + "FLD-DL-02", + "FLD-DL-03", + "FLD-DL-04", + "FLD-DL-05", + "FLD-DL-06" + ], + "min": 2, + "max": 7 + }, + { + "type": "group_limit", + "options": [ + "WFR-NB-01", + "WFR-NB-02", + "WFR-NB-03", + "WFR-NB-04", + "WFR-NB-05", + "WFR-HR-01", + "WFR-HR-02", + "WFR-HR-03", + "WFR-HR-04", + "WFR-HR-05", + "WFR-UP-01", + "WFR-UP-02", + "WFR-UP-03", + "WFR-UP-04", + "WFR-UP-05", + "WFR-DL-01", + "WFR-DL-02", + "WFR-DL-03", + "WFR-DL-04", + "WFR-DL-05" + ], + "min": 2, + "max": 7 + }, + { + "type": "group_limit", + "options": [ + "QKE-NB-01", + "QKE-NB-02", + "QKE-NB-03", + "QKE-NB-04", + "QKE-HR-01", + "QKE-HR-02", + "QKE-HR-03", + "QKE-HR-04", + "QKE-UP-01", + "QKE-UP-02", + "QKE-UP-03", + "QKE-UP-04", + "QKE-DL-01", + "QKE-DL-02", + "QKE-DL-03", + "QKE-DL-04" + ], + "min": 2, + "max": 7 + }, + { + "type": "group_limit", + "options": [ + "STM-NB-01", + "STM-NB-02", + "STM-NB-03", + "STM-NB-04", + "STM-NB-05", + "STM-HR-01", + "STM-HR-02", + "STM-HR-03", + "STM-HR-04", + "STM-HR-05", + "STM-UP-01", + "STM-UP-02", + "STM-UP-03", + "STM-UP-04", + "STM-UP-05", + "STM-DL-01", + "STM-DL-02", + "STM-DL-03", + "STM-DL-04", + "STM-DL-05" + ], + "min": 2, + "max": 7 + }, + { + "type": "group_limit", + "options": [ + "HZM-NB-01", + "HZM-NB-02", + "HZM-NB-03", + "HZM-NB-04", + "HZM-HR-01", + "HZM-HR-02", + "HZM-HR-03", + "HZM-HR-04", + "HZM-UP-01", + "HZM-UP-02", + "HZM-UP-03", + "HZM-UP-04", + "HZM-DL-01", + "HZM-DL-02", + "HZM-DL-03", + "HZM-DL-04" + ], + "min": 2, + "max": 7 + }, + { + "type": "group_limit", + "options": [ + "FLD-NB-01", + "FLD-NB-02", + "FLD-NB-03", + "FLD-NB-04", + "FLD-NB-05", + "FLD-NB-06", + "WFR-NB-01", + "WFR-NB-02", + "WFR-NB-03", + "WFR-NB-04", + "WFR-NB-05", + "QKE-NB-01", + "QKE-NB-02", + "QKE-NB-03", + "QKE-NB-04", + "STM-NB-01", + "STM-NB-02", + "STM-NB-03", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-01", + "HZM-NB-02", + "HZM-NB-03", + "HZM-NB-04" + ], + "min": 3, + "max": 8 + }, + { + "type": "group_limit", + "options": [ + "FLD-HR-01", + "FLD-HR-02", + "FLD-HR-03", + "FLD-HR-04", + "FLD-HR-05", + "FLD-HR-06", + "WFR-HR-01", + "WFR-HR-02", + "WFR-HR-03", + "WFR-HR-04", + "WFR-HR-05", + "QKE-HR-01", + "QKE-HR-02", + "QKE-HR-03", + "QKE-HR-04", + "STM-HR-01", + "STM-HR-02", + "STM-HR-03", + "STM-HR-04", + "STM-HR-05", + "HZM-HR-01", + "HZM-HR-02", + "HZM-HR-03", + "HZM-HR-04" + ], + "min": 3, + "max": 8 + }, + { + "type": "group_limit", + "options": [ + "FLD-UP-01", + "FLD-UP-02", + "FLD-UP-03", + "FLD-UP-04", + "FLD-UP-05", + "FLD-UP-06", + "WFR-UP-01", + "WFR-UP-02", + "WFR-UP-03", + "WFR-UP-04", + "WFR-UP-05", + "QKE-UP-01", + "QKE-UP-02", + "QKE-UP-03", + "QKE-UP-04", + "STM-UP-01", + "STM-UP-02", + "STM-UP-03", + "STM-UP-04", + "STM-UP-05", + "HZM-UP-01", + "HZM-UP-02", + "HZM-UP-03", + "HZM-UP-04" + ], + "min": 3, + "max": 8 + }, + { + "type": "group_limit", + "options": [ + "FLD-DL-01", + "FLD-DL-02", + "FLD-DL-03", + "FLD-DL-04", + "FLD-DL-05", + "FLD-DL-06", + "WFR-DL-01", + "WFR-DL-02", + "WFR-DL-03", + "WFR-DL-04", + "WFR-DL-05", + "QKE-DL-01", + "QKE-DL-02", + "QKE-DL-03", + "QKE-DL-04", + "STM-DL-01", + "STM-DL-02", + "STM-DL-03", + "STM-DL-04", + "STM-DL-05", + "HZM-DL-01", + "HZM-DL-02", + "HZM-DL-03", + "HZM-DL-04" + ], + "min": 3, + "max": 8 + }, + { + "type": "group_limit", + "options": [ + "FLD-NB-01", + "FLD-NB-02", + "FLD-HR-01", + "FLD-HR-02", + "FLD-UP-01", + "FLD-UP-02", + "FLD-DL-01", + "FLD-DL-02" + ], + "min": 2, + "max": 8 + }, + { + "type": "group_limit", + "options": [ + "HZM-NB-01", + "HZM-NB-02", + "HZM-NB-03", + "HZM-NB-04" + ], + "min": 1, + "max": 4 + }, + { + "type": "group_limit", + "options": [ + "HZM-HR-01", + "HZM-HR-02", + "HZM-HR-03", + "HZM-HR-04" + ], + "min": 1, + "max": 4 + }, + { + "type": "group_limit", + "options": [ + "HZM-UP-01", + "HZM-UP-02", + "HZM-UP-03", + "HZM-UP-04" + ], + "min": 1, + "max": 4 + }, + { + "type": "group_limit", + "options": [ + "HZM-DL-01", + "HZM-DL-02", + "HZM-DL-03", + "HZM-DL-04" + ], + "min": 1, + "max": 4 + }, + { + "type": "exclusion_pair", + "option_a": "FLD-NB-02", + "option_b": "WFR-NB-02" + }, + { + "type": "exclusion_pair", + "option_a": "QKE-NB-01", + "option_b": "HZM-NB-01" + }, + { + "type": "exclusion_pair", + "option_a": "FLD-HR-02", + "option_b": "WFR-HR-02" + }, + { + "type": "exclusion_pair", + "option_a": "QKE-HR-01", + "option_b": "HZM-HR-01" + }, + { + "type": "exclusion_pair", + "option_a": "FLD-UP-02", + "option_b": "WFR-UP-02" + }, + { + "type": "exclusion_pair", + "option_a": "QKE-UP-01", + "option_b": "HZM-UP-01" + }, + { + "type": "exclusion_pair", + "option_a": "FLD-DL-02", + "option_b": "WFR-DL-02" + }, + { + "type": "exclusion_pair", + "option_a": "QKE-DL-01", + "option_b": "HZM-DL-01" + }, + { + "type": "dependency", + "if_option": "FLD-NB-04", + "then_option": "FLD-NB-03" + }, + { + "type": "dependency", + "if_option": "WFR-NB-04", + "then_option": "WFR-NB-03" + }, + { + "type": "dependency", + "if_option": "QKE-NB-03", + "then_option": "QKE-NB-02" + }, + { + "type": "dependency", + "if_option": "STM-NB-03", + "then_option": "STM-NB-02" + }, + { + "type": "dependency", + "if_option": "HZM-NB-03", + "then_option": "HZM-NB-02" + }, + { + "type": "dependency", + "if_option": "FLD-HR-04", + "then_option": "FLD-HR-03" + }, + { + "type": "dependency", + "if_option": "WFR-HR-04", + "then_option": "WFR-HR-03" + }, + { + "type": "dependency", + "if_option": "QKE-HR-03", + "then_option": "QKE-HR-02" + }, + { + "type": "dependency", + "if_option": "STM-HR-03", + "then_option": "STM-HR-02" + }, + { + "type": "dependency", + "if_option": "HZM-HR-03", + "then_option": "HZM-HR-02" + }, + { + "type": "dependency", + "if_option": "FLD-UP-04", + "then_option": "FLD-UP-03" + }, + { + "type": "dependency", + "if_option": "WFR-UP-04", + "then_option": "WFR-UP-03" + }, + { + "type": "dependency", + "if_option": "QKE-UP-03", + "then_option": "QKE-UP-02" + }, + { + "type": "dependency", + "if_option": "STM-UP-03", + "then_option": "STM-UP-02" + }, + { + "type": "dependency", + "if_option": "HZM-UP-03", + "then_option": "HZM-UP-02" + }, + { + "type": "dependency", + "if_option": "FLD-DL-04", + "then_option": "FLD-DL-03" + }, + { + "type": "dependency", + "if_option": "WFR-DL-04", + "then_option": "WFR-DL-03" + }, + { + "type": "dependency", + "if_option": "QKE-DL-03", + "then_option": "QKE-DL-02" + }, + { + "type": "dependency", + "if_option": "STM-DL-03", + "then_option": "STM-DL-02" + }, + { + "type": "dependency", + "if_option": "HZM-DL-03", + "then_option": "HZM-DL-02" + } + ], + "scenarios": [ + { + "name": "concurrent_season", + "probability": null, + "description": "A two-hazard-concurrent season: floodwater inundates tank farms and rail sidings, so the flood and hazmat lines answer the same event and split across it \u2014 flood assets rate 66% of their single-event readiness, hazmat assets 78%, and both lines activate 40% slower. Every rule stays as-is.", + "base_constraints_fingerprint": "", + "score_overrides": [ + { + "option": "FLD-NB-01", + "objective": "Readiness", + "value": 60.4 + }, + { + "option": "FLD-NB-01", + "objective": "ActivationTime", + "value": 1.5 + }, + { + "option": "FLD-NB-02", + "objective": "Readiness", + "value": 57.9 + }, + { + "option": "FLD-NB-02", + "objective": "ActivationTime", + "value": 2.4 + }, + { + "option": "FLD-NB-03", + "objective": "Readiness", + "value": 43.7 + }, + { + "option": "FLD-NB-03", + "objective": "ActivationTime", + "value": 6.2 + }, + { + "option": "FLD-NB-04", + "objective": "Readiness", + "value": 45.1 + }, + { + "option": "FLD-NB-04", + "objective": "ActivationTime", + "value": 3.8 + }, + { + "option": "FLD-NB-05", + "objective": "Readiness", + "value": 35.7 + }, + { + "option": "FLD-NB-05", + "objective": "ActivationTime", + "value": 7.6 + }, + { + "option": "FLD-NB-06", + "objective": "Readiness", + "value": 24.9 + }, + { + "option": "FLD-NB-06", + "objective": "ActivationTime", + "value": 12.2 + }, + { + "option": "HZM-NB-01", + "objective": "Readiness", + "value": 71.9 + }, + { + "option": "HZM-NB-01", + "objective": "ActivationTime", + "value": 1.0 + }, + { + "option": "HZM-NB-02", + "objective": "Readiness", + "value": 62.9 + }, + { + "option": "HZM-NB-02", + "objective": "ActivationTime", + "value": 2.8 + }, + { + "option": "HZM-NB-03", + "objective": "Readiness", + "value": 58.1 + }, + { + "option": "HZM-NB-03", + "objective": "ActivationTime", + "value": 3.9 + }, + { + "option": "HZM-NB-04", + "objective": "Readiness", + "value": 34.8 + }, + { + "option": "HZM-NB-04", + "objective": "ActivationTime", + "value": 16.1 + }, + { + "option": "FLD-HR-01", + "objective": "Readiness", + "value": 55.0 + }, + { + "option": "FLD-HR-01", + "objective": "ActivationTime", + "value": 1.5 + }, + { + "option": "FLD-HR-02", + "objective": "Readiness", + "value": 57.2 + }, + { + "option": "FLD-HR-02", + "objective": "ActivationTime", + "value": 2.0 + }, + { + "option": "FLD-HR-03", + "objective": "Readiness", + "value": 42.6 + }, + { + "option": "FLD-HR-03", + "objective": "ActivationTime", + "value": 3.9 + }, + { + "option": "FLD-HR-04", + "objective": "Readiness", + "value": 47.5 + }, + { + "option": "FLD-HR-04", + "objective": "ActivationTime", + "value": 4.9 + }, + { + "option": "FLD-HR-05", + "objective": "Readiness", + "value": 29.5 + }, + { + "option": "FLD-HR-05", + "objective": "ActivationTime", + "value": 10.9 + }, + { + "option": "FLD-HR-06", + "objective": "Readiness", + "value": 34.6 + }, + { + "option": "FLD-HR-06", + "objective": "ActivationTime", + "value": 12.3 + }, + { + "option": "HZM-HR-01", + "objective": "Readiness", + "value": 73.1 + }, + { + "option": "HZM-HR-01", + "objective": "ActivationTime", + "value": 1.1 + }, + { + "option": "HZM-HR-02", + "objective": "Readiness", + "value": 48.7 + }, + { + "option": "HZM-HR-02", + "objective": "ActivationTime", + "value": 4.8 + }, + { + "option": "HZM-HR-03", + "objective": "Readiness", + "value": 68.3 + }, + { + "option": "HZM-HR-03", + "objective": "ActivationTime", + "value": 2.9 + }, + { + "option": "HZM-HR-04", + "objective": "Readiness", + "value": 34.9 + }, + { + "option": "HZM-HR-04", + "objective": "ActivationTime", + "value": 12.0 + }, + { + "option": "FLD-UP-01", + "objective": "Readiness", + "value": 62.7 + }, + { + "option": "FLD-UP-01", + "objective": "ActivationTime", + "value": 1.0 + }, + { + "option": "FLD-UP-02", + "objective": "Readiness", + "value": 54.8 + }, + { + "option": "FLD-UP-02", + "objective": "ActivationTime", + "value": 1.7 + }, + { + "option": "FLD-UP-03", + "objective": "Readiness", + "value": 48.5 + }, + { + "option": "FLD-UP-03", + "objective": "ActivationTime", + "value": 6.0 + }, + { + "option": "FLD-UP-04", + "objective": "Readiness", + "value": 46.7 + }, + { + "option": "FLD-UP-04", + "objective": "ActivationTime", + "value": 3.6 + }, + { + "option": "FLD-UP-05", + "objective": "Readiness", + "value": 28.4 + }, + { + "option": "FLD-UP-05", + "objective": "ActivationTime", + "value": 8.7 + }, + { + "option": "FLD-UP-06", + "objective": "Readiness", + "value": 34.4 + }, + { + "option": "FLD-UP-06", + "objective": "ActivationTime", + "value": 10.2 + }, + { + "option": "HZM-UP-01", + "objective": "Readiness", + "value": 68.6 + }, + { + "option": "HZM-UP-01", + "objective": "ActivationTime", + "value": 1.7 + }, + { + "option": "HZM-UP-02", + "objective": "Readiness", + "value": 61.9 + }, + { + "option": "HZM-UP-02", + "objective": "ActivationTime", + "value": 5.7 + }, + { + "option": "HZM-UP-03", + "objective": "Readiness", + "value": 59.2 + }, + { + "option": "HZM-UP-03", + "objective": "ActivationTime", + "value": 5.6 + }, + { + "option": "HZM-UP-04", + "objective": "Readiness", + "value": 33.6 + }, + { + "option": "HZM-UP-04", + "objective": "ActivationTime", + "value": 13.7 + }, + { + "option": "FLD-DL-01", + "objective": "Readiness", + "value": 54.5 + }, + { + "option": "FLD-DL-01", + "objective": "ActivationTime", + "value": 1.3 + }, + { + "option": "FLD-DL-02", + "objective": "Readiness", + "value": 53.4 + }, + { + "option": "FLD-DL-02", + "objective": "ActivationTime", + "value": 0.6 + }, + { + "option": "FLD-DL-03", + "objective": "Readiness", + "value": 36.2 + }, + { + "option": "FLD-DL-03", + "objective": "ActivationTime", + "value": 4.8 + }, + { + "option": "FLD-DL-04", + "objective": "Readiness", + "value": 52.2 + }, + { + "option": "FLD-DL-04", + "objective": "ActivationTime", + "value": 3.2 + }, + { + "option": "FLD-DL-05", + "objective": "Readiness", + "value": 28.3 + }, + { + "option": "FLD-DL-05", + "objective": "ActivationTime", + "value": 11.1 + }, + { + "option": "FLD-DL-06", + "objective": "Readiness", + "value": 25.5 + }, + { + "option": "FLD-DL-06", + "objective": "ActivationTime", + "value": 17.2 + }, + { + "option": "HZM-DL-01", + "objective": "Readiness", + "value": 29.8 + }, + { + "option": "HZM-DL-01", + "objective": "ActivationTime", + "value": 2.4 + }, + { + "option": "HZM-DL-02", + "objective": "Readiness", + "value": 24.1 + }, + { + "option": "HZM-DL-02", + "objective": "ActivationTime", + "value": 5.9 + }, + { + "option": "HZM-DL-03", + "objective": "Readiness", + "value": 26.1 + }, + { + "option": "HZM-DL-03", + "objective": "ActivationTime", + "value": 2.8 + }, + { + "option": "HZM-DL-04", + "objective": "Readiness", + "value": 32.6 + }, + { + "option": "HZM-DL-04", + "objective": "ActivationTime", + "value": 12.0 + } + ], + "score_adjustments": [], + "constraint_overrides": [], + "interaction_matrix_overrides": [] + }, + { + "name": "dual_hazmat_rule", + "probability": null, + "description": "A rule change after the regional spill review: every subregion must field TWO hazmat units instead of one. Every other rule \u2014 the $58M budget, the surge floor, the portfolio size, the line and subregion floors and caps, the shared crews, the mobile-unit caches \u2014 stays as-is.", + "base_constraints_fingerprint": "", + "score_overrides": [], + "score_adjustments": [], + "constraint_overrides": [ + { + "type": "objective_bound", + "objective": "Cost", + "operator": "max", + "value": 58.0 + }, + { + "type": "objective_bound", + "objective": "SurgeCapacity", + "operator": "min", + "value": 4600.0 + }, + { + "type": "cardinality", + "min": 20, + "max": 24 + }, + { + "type": "group_limit", + "options": [ + "FLD-NB-01", + "FLD-NB-02", + "FLD-NB-03", + "FLD-NB-04", + "FLD-NB-05", + "FLD-NB-06", + "FLD-HR-01", + "FLD-HR-02", + "FLD-HR-03", + "FLD-HR-04", + "FLD-HR-05", + "FLD-HR-06", + "FLD-UP-01", + "FLD-UP-02", + "FLD-UP-03", + "FLD-UP-04", + "FLD-UP-05", + "FLD-UP-06", + "FLD-DL-01", + "FLD-DL-02", + "FLD-DL-03", + "FLD-DL-04", + "FLD-DL-05", + "FLD-DL-06" + ], + "min": 2, + "max": 7 + }, + { + "type": "group_limit", + "options": [ + "WFR-NB-01", + "WFR-NB-02", + "WFR-NB-03", + "WFR-NB-04", + "WFR-NB-05", + "WFR-HR-01", + "WFR-HR-02", + "WFR-HR-03", + "WFR-HR-04", + "WFR-HR-05", + "WFR-UP-01", + "WFR-UP-02", + "WFR-UP-03", + "WFR-UP-04", + "WFR-UP-05", + "WFR-DL-01", + "WFR-DL-02", + "WFR-DL-03", + "WFR-DL-04", + "WFR-DL-05" + ], + "min": 2, + "max": 7 + }, + { + "type": "group_limit", + "options": [ + "QKE-NB-01", + "QKE-NB-02", + "QKE-NB-03", + "QKE-NB-04", + "QKE-HR-01", + "QKE-HR-02", + "QKE-HR-03", + "QKE-HR-04", + "QKE-UP-01", + "QKE-UP-02", + "QKE-UP-03", + "QKE-UP-04", + "QKE-DL-01", + "QKE-DL-02", + "QKE-DL-03", + "QKE-DL-04" + ], + "min": 2, + "max": 7 + }, + { + "type": "group_limit", + "options": [ + "STM-NB-01", + "STM-NB-02", + "STM-NB-03", + "STM-NB-04", + "STM-NB-05", + "STM-HR-01", + "STM-HR-02", + "STM-HR-03", + "STM-HR-04", + "STM-HR-05", + "STM-UP-01", + "STM-UP-02", + "STM-UP-03", + "STM-UP-04", + "STM-UP-05", + "STM-DL-01", + "STM-DL-02", + "STM-DL-03", + "STM-DL-04", + "STM-DL-05" + ], + "min": 2, + "max": 7 + }, + { + "type": "group_limit", + "options": [ + "HZM-NB-01", + "HZM-NB-02", + "HZM-NB-03", + "HZM-NB-04", + "HZM-HR-01", + "HZM-HR-02", + "HZM-HR-03", + "HZM-HR-04", + "HZM-UP-01", + "HZM-UP-02", + "HZM-UP-03", + "HZM-UP-04", + "HZM-DL-01", + "HZM-DL-02", + "HZM-DL-03", + "HZM-DL-04" + ], + "min": 2, + "max": 8 + }, + { + "type": "group_limit", + "options": [ + "FLD-NB-01", + "FLD-NB-02", + "FLD-NB-03", + "FLD-NB-04", + "FLD-NB-05", + "FLD-NB-06", + "WFR-NB-01", + "WFR-NB-02", + "WFR-NB-03", + "WFR-NB-04", + "WFR-NB-05", + "QKE-NB-01", + "QKE-NB-02", + "QKE-NB-03", + "QKE-NB-04", + "STM-NB-01", + "STM-NB-02", + "STM-NB-03", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-01", + "HZM-NB-02", + "HZM-NB-03", + "HZM-NB-04" + ], + "min": 3, + "max": 8 + }, + { + "type": "group_limit", + "options": [ + "FLD-HR-01", + "FLD-HR-02", + "FLD-HR-03", + "FLD-HR-04", + "FLD-HR-05", + "FLD-HR-06", + "WFR-HR-01", + "WFR-HR-02", + "WFR-HR-03", + "WFR-HR-04", + "WFR-HR-05", + "QKE-HR-01", + "QKE-HR-02", + "QKE-HR-03", + "QKE-HR-04", + "STM-HR-01", + "STM-HR-02", + "STM-HR-03", + "STM-HR-04", + "STM-HR-05", + "HZM-HR-01", + "HZM-HR-02", + "HZM-HR-03", + "HZM-HR-04" + ], + "min": 3, + "max": 8 + }, + { + "type": "group_limit", + "options": [ + "FLD-UP-01", + "FLD-UP-02", + "FLD-UP-03", + "FLD-UP-04", + "FLD-UP-05", + "FLD-UP-06", + "WFR-UP-01", + "WFR-UP-02", + "WFR-UP-03", + "WFR-UP-04", + "WFR-UP-05", + "QKE-UP-01", + "QKE-UP-02", + "QKE-UP-03", + "QKE-UP-04", + "STM-UP-01", + "STM-UP-02", + "STM-UP-03", + "STM-UP-04", + "STM-UP-05", + "HZM-UP-01", + "HZM-UP-02", + "HZM-UP-03", + "HZM-UP-04" + ], + "min": 3, + "max": 8 + }, + { + "type": "group_limit", + "options": [ + "FLD-DL-01", + "FLD-DL-02", + "FLD-DL-03", + "FLD-DL-04", + "FLD-DL-05", + "FLD-DL-06", + "WFR-DL-01", + "WFR-DL-02", + "WFR-DL-03", + "WFR-DL-04", + "WFR-DL-05", + "QKE-DL-01", + "QKE-DL-02", + "QKE-DL-03", + "QKE-DL-04", + "STM-DL-01", + "STM-DL-02", + "STM-DL-03", + "STM-DL-04", + "STM-DL-05", + "HZM-DL-01", + "HZM-DL-02", + "HZM-DL-03", + "HZM-DL-04" + ], + "min": 3, + "max": 8 + }, + { + "type": "group_limit", + "options": [ + "FLD-NB-01", + "FLD-NB-02", + "FLD-HR-01", + "FLD-HR-02", + "FLD-UP-01", + "FLD-UP-02", + "FLD-DL-01", + "FLD-DL-02" + ], + "min": 2, + "max": 8 + }, + { + "type": "group_limit", + "options": [ + "HZM-NB-01", + "HZM-NB-02", + "HZM-NB-03", + "HZM-NB-04" + ], + "min": 2, + "max": 4 + }, + { + "type": "group_limit", + "options": [ + "HZM-HR-01", + "HZM-HR-02", + "HZM-HR-03", + "HZM-HR-04" + ], + "min": 2, + "max": 4 + }, + { + "type": "group_limit", + "options": [ + "HZM-UP-01", + "HZM-UP-02", + "HZM-UP-03", + "HZM-UP-04" + ], + "min": 2, + "max": 4 + }, + { + "type": "group_limit", + "options": [ + "HZM-DL-01", + "HZM-DL-02", + "HZM-DL-03", + "HZM-DL-04" + ], + "min": 2, + "max": 4 + }, + { + "type": "exclusion_pair", + "option_a": "FLD-NB-02", + "option_b": "WFR-NB-02" + }, + { + "type": "exclusion_pair", + "option_a": "QKE-NB-01", + "option_b": "HZM-NB-01" + }, + { + "type": "exclusion_pair", + "option_a": "FLD-HR-02", + "option_b": "WFR-HR-02" + }, + { + "type": "exclusion_pair", + "option_a": "QKE-HR-01", + "option_b": "HZM-HR-01" + }, + { + "type": "exclusion_pair", + "option_a": "FLD-UP-02", + "option_b": "WFR-UP-02" + }, + { + "type": "exclusion_pair", + "option_a": "QKE-UP-01", + "option_b": "HZM-UP-01" + }, + { + "type": "exclusion_pair", + "option_a": "FLD-DL-02", + "option_b": "WFR-DL-02" + }, + { + "type": "exclusion_pair", + "option_a": "QKE-DL-01", + "option_b": "HZM-DL-01" + }, + { + "type": "dependency", + "if_option": "FLD-NB-04", + "then_option": "FLD-NB-03" + }, + { + "type": "dependency", + "if_option": "WFR-NB-04", + "then_option": "WFR-NB-03" + }, + { + "type": "dependency", + "if_option": "QKE-NB-03", + "then_option": "QKE-NB-02" + }, + { + "type": "dependency", + "if_option": "STM-NB-03", + "then_option": "STM-NB-02" + }, + { + "type": "dependency", + "if_option": "HZM-NB-03", + "then_option": "HZM-NB-02" + }, + { + "type": "dependency", + "if_option": "FLD-HR-04", + "then_option": "FLD-HR-03" + }, + { + "type": "dependency", + "if_option": "WFR-HR-04", + "then_option": "WFR-HR-03" + }, + { + "type": "dependency", + "if_option": "QKE-HR-03", + "then_option": "QKE-HR-02" + }, + { + "type": "dependency", + "if_option": "STM-HR-03", + "then_option": "STM-HR-02" + }, + { + "type": "dependency", + "if_option": "HZM-HR-03", + "then_option": "HZM-HR-02" + }, + { + "type": "dependency", + "if_option": "FLD-UP-04", + "then_option": "FLD-UP-03" + }, + { + "type": "dependency", + "if_option": "WFR-UP-04", + "then_option": "WFR-UP-03" + }, + { + "type": "dependency", + "if_option": "QKE-UP-03", + "then_option": "QKE-UP-02" + }, + { + "type": "dependency", + "if_option": "STM-UP-03", + "then_option": "STM-UP-02" + }, + { + "type": "dependency", + "if_option": "HZM-UP-03", + "then_option": "HZM-UP-02" + }, + { + "type": "dependency", + "if_option": "FLD-DL-04", + "then_option": "FLD-DL-03" + }, + { + "type": "dependency", + "if_option": "WFR-DL-04", + "then_option": "WFR-DL-03" + }, + { + "type": "dependency", + "if_option": "QKE-DL-03", + "then_option": "QKE-DL-02" + }, + { + "type": "dependency", + "if_option": "STM-DL-03", + "then_option": "STM-DL-02" + }, + { + "type": "dependency", + "if_option": "HZM-DL-03", + "then_option": "HZM-DL-02" + } + ], + "interaction_matrix_overrides": [] + } + ] +} \ No newline at end of file diff --git a/examples/emergency_readiness_portfolio/scores.json b/examples/emergency_readiness_portfolio/scores.json new file mode 100644 index 0000000..cc937f6 --- /dev/null +++ b/examples/emergency_readiness_portfolio/scores.json @@ -0,0 +1,2310 @@ +{ + "options": [ + { + "name": "FLD-NB-01", + "description": "Flood standing team - North Basin" + }, + { + "name": "FLD-NB-02", + "description": "Flood standing team - North Basin" + }, + { + "name": "FLD-NB-03", + "description": "Flood equipment cache - North Basin" + }, + { + "name": "FLD-NB-04", + "description": "Flood mobile unit - North Basin" + }, + { + "name": "FLD-NB-05", + "description": "Flood standby contract - North Basin" + }, + { + "name": "FLD-NB-06", + "description": "Flood standby contract - North Basin" + }, + { + "name": "WFR-NB-01", + "description": "Wildfire standing team - North Basin" + }, + { + "name": "WFR-NB-02", + "description": "Wildfire standing team - North Basin" + }, + { + "name": "WFR-NB-03", + "description": "Wildfire equipment cache - North Basin" + }, + { + "name": "WFR-NB-04", + "description": "Wildfire mobile unit - North Basin" + }, + { + "name": "WFR-NB-05", + "description": "Wildfire standby contract - North Basin" + }, + { + "name": "QKE-NB-01", + "description": "Quake standing team - North Basin" + }, + { + "name": "QKE-NB-02", + "description": "Quake equipment cache - North Basin" + }, + { + "name": "QKE-NB-03", + "description": "Quake mobile unit - North Basin" + }, + { + "name": "QKE-NB-04", + "description": "Quake standby contract - North Basin" + }, + { + "name": "STM-NB-01", + "description": "Storm standing team - North Basin" + }, + { + "name": "STM-NB-02", + "description": "Storm equipment cache - North Basin" + }, + { + "name": "STM-NB-03", + "description": "Storm mobile unit - North Basin" + }, + { + "name": "STM-NB-04", + "description": "Storm standby contract - North Basin" + }, + { + "name": "STM-NB-05", + "description": "Storm standby contract - North Basin" + }, + { + "name": "HZM-NB-01", + "description": "Hazmat standing team - North Basin" + }, + { + "name": "HZM-NB-02", + "description": "Hazmat equipment cache - North Basin" + }, + { + "name": "HZM-NB-03", + "description": "Hazmat mobile unit - North Basin" + }, + { + "name": "HZM-NB-04", + "description": "Hazmat standby contract - North Basin" + }, + { + "name": "FLD-HR-01", + "description": "Flood standing team - Harbor Reach" + }, + { + "name": "FLD-HR-02", + "description": "Flood standing team - Harbor Reach" + }, + { + "name": "FLD-HR-03", + "description": "Flood equipment cache - Harbor Reach" + }, + { + "name": "FLD-HR-04", + "description": "Flood mobile unit - Harbor Reach" + }, + { + "name": "FLD-HR-05", + "description": "Flood standby contract - Harbor Reach" + }, + { + "name": "FLD-HR-06", + "description": "Flood standby contract - Harbor Reach" + }, + { + "name": "WFR-HR-01", + "description": "Wildfire standing team - Harbor Reach" + }, + { + "name": "WFR-HR-02", + "description": "Wildfire standing team - Harbor Reach" + }, + { + "name": "WFR-HR-03", + "description": "Wildfire equipment cache - Harbor Reach" + }, + { + "name": "WFR-HR-04", + "description": "Wildfire mobile unit - Harbor Reach" + }, + { + "name": "WFR-HR-05", + "description": "Wildfire standby contract - Harbor Reach" + }, + { + "name": "QKE-HR-01", + "description": "Quake standing team - Harbor Reach" + }, + { + "name": "QKE-HR-02", + "description": "Quake equipment cache - Harbor Reach" + }, + { + "name": "QKE-HR-03", + "description": "Quake mobile unit - Harbor Reach" + }, + { + "name": "QKE-HR-04", + "description": "Quake standby contract - Harbor Reach" + }, + { + "name": "STM-HR-01", + "description": "Storm standing team - Harbor Reach" + }, + { + "name": "STM-HR-02", + "description": "Storm equipment cache - Harbor Reach" + }, + { + "name": "STM-HR-03", + "description": "Storm mobile unit - Harbor Reach" + }, + { + "name": "STM-HR-04", + "description": "Storm standby contract - Harbor Reach" + }, + { + "name": "STM-HR-05", + "description": "Storm standby contract - Harbor Reach" + }, + { + "name": "HZM-HR-01", + "description": "Hazmat standing team - Harbor Reach" + }, + { + "name": "HZM-HR-02", + "description": "Hazmat equipment cache - Harbor Reach" + }, + { + "name": "HZM-HR-03", + "description": "Hazmat mobile unit - Harbor Reach" + }, + { + "name": "HZM-HR-04", + "description": "Hazmat standby contract - Harbor Reach" + }, + { + "name": "FLD-UP-01", + "description": "Flood standing team - Uplands" + }, + { + "name": "FLD-UP-02", + "description": "Flood standing team - Uplands" + }, + { + "name": "FLD-UP-03", + "description": "Flood equipment cache - Uplands" + }, + { + "name": "FLD-UP-04", + "description": "Flood mobile unit - Uplands" + }, + { + "name": "FLD-UP-05", + "description": "Flood standby contract - Uplands" + }, + { + "name": "FLD-UP-06", + "description": "Flood standby contract - Uplands" + }, + { + "name": "WFR-UP-01", + "description": "Wildfire standing team - Uplands" + }, + { + "name": "WFR-UP-02", + "description": "Wildfire standing team - Uplands" + }, + { + "name": "WFR-UP-03", + "description": "Wildfire equipment cache - Uplands" + }, + { + "name": "WFR-UP-04", + "description": "Wildfire mobile unit - Uplands" + }, + { + "name": "WFR-UP-05", + "description": "Wildfire standby contract - Uplands" + }, + { + "name": "QKE-UP-01", + "description": "Quake standing team - Uplands" + }, + { + "name": "QKE-UP-02", + "description": "Quake equipment cache - Uplands" + }, + { + "name": "QKE-UP-03", + "description": "Quake mobile unit - Uplands" + }, + { + "name": "QKE-UP-04", + "description": "Quake standby contract - Uplands" + }, + { + "name": "STM-UP-01", + "description": "Storm standing team - Uplands" + }, + { + "name": "STM-UP-02", + "description": "Storm equipment cache - Uplands" + }, + { + "name": "STM-UP-03", + "description": "Storm mobile unit - Uplands" + }, + { + "name": "STM-UP-04", + "description": "Storm standby contract - Uplands" + }, + { + "name": "STM-UP-05", + "description": "Storm standby contract - Uplands" + }, + { + "name": "HZM-UP-01", + "description": "Hazmat standing team - Uplands" + }, + { + "name": "HZM-UP-02", + "description": "Hazmat equipment cache - Uplands" + }, + { + "name": "HZM-UP-03", + "description": "Hazmat mobile unit - Uplands" + }, + { + "name": "HZM-UP-04", + "description": "Hazmat standby contract - Uplands" + }, + { + "name": "FLD-DL-01", + "description": "Flood standing team - Delta" + }, + { + "name": "FLD-DL-02", + "description": "Flood standing team - Delta" + }, + { + "name": "FLD-DL-03", + "description": "Flood equipment cache - Delta" + }, + { + "name": "FLD-DL-04", + "description": "Flood mobile unit - Delta" + }, + { + "name": "FLD-DL-05", + "description": "Flood standby contract - Delta" + }, + { + "name": "FLD-DL-06", + "description": "Flood standby contract - Delta" + }, + { + "name": "WFR-DL-01", + "description": "Wildfire standing team - Delta" + }, + { + "name": "WFR-DL-02", + "description": "Wildfire standing team - Delta" + }, + { + "name": "WFR-DL-03", + "description": "Wildfire equipment cache - Delta" + }, + { + "name": "WFR-DL-04", + "description": "Wildfire mobile unit - Delta" + }, + { + "name": "WFR-DL-05", + "description": "Wildfire standby contract - Delta" + }, + { + "name": "QKE-DL-01", + "description": "Quake standing team - Delta" + }, + { + "name": "QKE-DL-02", + "description": "Quake equipment cache - Delta" + }, + { + "name": "QKE-DL-03", + "description": "Quake mobile unit - Delta" + }, + { + "name": "QKE-DL-04", + "description": "Quake standby contract - Delta" + }, + { + "name": "STM-DL-01", + "description": "Storm standing team - Delta" + }, + { + "name": "STM-DL-02", + "description": "Storm equipment cache - Delta" + }, + { + "name": "STM-DL-03", + "description": "Storm mobile unit - Delta" + }, + { + "name": "STM-DL-04", + "description": "Storm standby contract - Delta" + }, + { + "name": "STM-DL-05", + "description": "Storm standby contract - Delta" + }, + { + "name": "HZM-DL-01", + "description": "Hazmat standing team - Delta" + }, + { + "name": "HZM-DL-02", + "description": "Hazmat equipment cache - Delta" + }, + { + "name": "HZM-DL-03", + "description": "Hazmat mobile unit - Delta" + }, + { + "name": "HZM-DL-04", + "description": "Hazmat standby contract - Delta" + } + ], + "scores": [ + { + "option": "FLD-NB-01", + "objective": "Readiness", + "value": 91.5 + }, + { + "option": "FLD-NB-01", + "objective": "SurgeCapacity", + "value": 272.0 + }, + { + "option": "FLD-NB-01", + "objective": "Cost", + "value": 3.71 + }, + { + "option": "FLD-NB-01", + "objective": "ActivationTime", + "value": 1.1 + }, + { + "option": "FLD-NB-02", + "objective": "Readiness", + "value": 87.7 + }, + { + "option": "FLD-NB-02", + "objective": "SurgeCapacity", + "value": 275.0 + }, + { + "option": "FLD-NB-02", + "objective": "Cost", + "value": 3.63 + }, + { + "option": "FLD-NB-02", + "objective": "ActivationTime", + "value": 1.7 + }, + { + "option": "FLD-NB-03", + "objective": "Readiness", + "value": 66.2 + }, + { + "option": "FLD-NB-03", + "objective": "SurgeCapacity", + "value": 69.0 + }, + { + "option": "FLD-NB-03", + "objective": "Cost", + "value": 0.8 + }, + { + "option": "FLD-NB-03", + "objective": "ActivationTime", + "value": 4.4 + }, + { + "option": "FLD-NB-04", + "objective": "Readiness", + "value": 68.4 + }, + { + "option": "FLD-NB-04", + "objective": "SurgeCapacity", + "value": 430.0 + }, + { + "option": "FLD-NB-04", + "objective": "Cost", + "value": 3.85 + }, + { + "option": "FLD-NB-04", + "objective": "ActivationTime", + "value": 2.7 + }, + { + "option": "FLD-NB-05", + "objective": "Readiness", + "value": 54.1 + }, + { + "option": "FLD-NB-05", + "objective": "SurgeCapacity", + "value": 406.0 + }, + { + "option": "FLD-NB-05", + "objective": "Cost", + "value": 1.3 + }, + { + "option": "FLD-NB-05", + "objective": "ActivationTime", + "value": 5.4 + }, + { + "option": "FLD-NB-06", + "objective": "Readiness", + "value": 37.7 + }, + { + "option": "FLD-NB-06", + "objective": "SurgeCapacity", + "value": 584.0 + }, + { + "option": "FLD-NB-06", + "objective": "Cost", + "value": 1.39 + }, + { + "option": "FLD-NB-06", + "objective": "ActivationTime", + "value": 8.7 + }, + { + "option": "WFR-NB-01", + "objective": "Readiness", + "value": 94.2 + }, + { + "option": "WFR-NB-01", + "objective": "SurgeCapacity", + "value": 275.0 + }, + { + "option": "WFR-NB-01", + "objective": "Cost", + "value": 3.98 + }, + { + "option": "WFR-NB-01", + "objective": "ActivationTime", + "value": 1.5 + }, + { + "option": "WFR-NB-02", + "objective": "Readiness", + "value": 90.3 + }, + { + "option": "WFR-NB-02", + "objective": "SurgeCapacity", + "value": 221.0 + }, + { + "option": "WFR-NB-02", + "objective": "Cost", + "value": 3.66 + }, + { + "option": "WFR-NB-02", + "objective": "ActivationTime", + "value": 1.0 + }, + { + "option": "WFR-NB-03", + "objective": "Readiness", + "value": 69.6 + }, + { + "option": "WFR-NB-03", + "objective": "SurgeCapacity", + "value": 69.0 + }, + { + "option": "WFR-NB-03", + "objective": "Cost", + "value": 1.03 + }, + { + "option": "WFR-NB-03", + "objective": "ActivationTime", + "value": 5.3 + }, + { + "option": "WFR-NB-04", + "objective": "Readiness", + "value": 81.4 + }, + { + "option": "WFR-NB-04", + "objective": "SurgeCapacity", + "value": 468.0 + }, + { + "option": "WFR-NB-04", + "objective": "Cost", + "value": 4.46 + }, + { + "option": "WFR-NB-04", + "objective": "ActivationTime", + "value": 2.4 + }, + { + "option": "WFR-NB-05", + "objective": "Readiness", + "value": 36.0 + }, + { + "option": "WFR-NB-05", + "objective": "SurgeCapacity", + "value": 441.0 + }, + { + "option": "WFR-NB-05", + "objective": "Cost", + "value": 1.34 + }, + { + "option": "WFR-NB-05", + "objective": "ActivationTime", + "value": 10.6 + }, + { + "option": "QKE-NB-01", + "objective": "Readiness", + "value": 90.7 + }, + { + "option": "QKE-NB-01", + "objective": "SurgeCapacity", + "value": 252.0 + }, + { + "option": "QKE-NB-01", + "objective": "Cost", + "value": 4.1 + }, + { + "option": "QKE-NB-01", + "objective": "ActivationTime", + "value": 1.1 + }, + { + "option": "QKE-NB-02", + "objective": "Readiness", + "value": 56.5 + }, + { + "option": "QKE-NB-02", + "objective": "SurgeCapacity", + "value": 77.0 + }, + { + "option": "QKE-NB-02", + "objective": "Cost", + "value": 1.24 + }, + { + "option": "QKE-NB-02", + "objective": "ActivationTime", + "value": 4.1 + }, + { + "option": "QKE-NB-03", + "objective": "Readiness", + "value": 69.4 + }, + { + "option": "QKE-NB-03", + "objective": "SurgeCapacity", + "value": 398.0 + }, + { + "option": "QKE-NB-03", + "objective": "Cost", + "value": 4.25 + }, + { + "option": "QKE-NB-03", + "objective": "ActivationTime", + "value": 2.5 + }, + { + "option": "QKE-NB-04", + "objective": "Readiness", + "value": 35.9 + }, + { + "option": "QKE-NB-04", + "objective": "SurgeCapacity", + "value": 416.0 + }, + { + "option": "QKE-NB-04", + "objective": "Cost", + "value": 1.6 + }, + { + "option": "QKE-NB-04", + "objective": "ActivationTime", + "value": 9.4 + }, + { + "option": "STM-NB-01", + "objective": "Readiness", + "value": 75.1 + }, + { + "option": "STM-NB-01", + "objective": "SurgeCapacity", + "value": 243.0 + }, + { + "option": "STM-NB-01", + "objective": "Cost", + "value": 3.02 + }, + { + "option": "STM-NB-01", + "objective": "ActivationTime", + "value": 1.0 + }, + { + "option": "STM-NB-02", + "objective": "Readiness", + "value": 65.7 + }, + { + "option": "STM-NB-02", + "objective": "SurgeCapacity", + "value": 45.0 + }, + { + "option": "STM-NB-02", + "objective": "Cost", + "value": 0.53 + }, + { + "option": "STM-NB-02", + "objective": "ActivationTime", + "value": 3.9 + }, + { + "option": "STM-NB-03", + "objective": "Readiness", + "value": 66.9 + }, + { + "option": "STM-NB-03", + "objective": "SurgeCapacity", + "value": 428.0 + }, + { + "option": "STM-NB-03", + "objective": "Cost", + "value": 3.61 + }, + { + "option": "STM-NB-03", + "objective": "ActivationTime", + "value": 3.0 + }, + { + "option": "STM-NB-04", + "objective": "Readiness", + "value": 38.7 + }, + { + "option": "STM-NB-04", + "objective": "SurgeCapacity", + "value": 485.0 + }, + { + "option": "STM-NB-04", + "objective": "Cost", + "value": 1.04 + }, + { + "option": "STM-NB-04", + "objective": "ActivationTime", + "value": 5.9 + }, + { + "option": "STM-NB-05", + "objective": "Readiness", + "value": 37.4 + }, + { + "option": "STM-NB-05", + "objective": "SurgeCapacity", + "value": 464.0 + }, + { + "option": "STM-NB-05", + "objective": "Cost", + "value": 0.99 + }, + { + "option": "STM-NB-05", + "objective": "ActivationTime", + "value": 8.8 + }, + { + "option": "HZM-NB-01", + "objective": "Readiness", + "value": 92.2 + }, + { + "option": "HZM-NB-01", + "objective": "SurgeCapacity", + "value": 258.0 + }, + { + "option": "HZM-NB-01", + "objective": "Cost", + "value": 4.26 + }, + { + "option": "HZM-NB-01", + "objective": "ActivationTime", + "value": 0.7 + }, + { + "option": "HZM-NB-02", + "objective": "Readiness", + "value": 80.6 + }, + { + "option": "HZM-NB-02", + "objective": "SurgeCapacity", + "value": 72.0 + }, + { + "option": "HZM-NB-02", + "objective": "Cost", + "value": 1.54 + }, + { + "option": "HZM-NB-02", + "objective": "ActivationTime", + "value": 2.0 + }, + { + "option": "HZM-NB-03", + "objective": "Readiness", + "value": 74.5 + }, + { + "option": "HZM-NB-03", + "objective": "SurgeCapacity", + "value": 341.0 + }, + { + "option": "HZM-NB-03", + "objective": "Cost", + "value": 4.24 + }, + { + "option": "HZM-NB-03", + "objective": "ActivationTime", + "value": 2.8 + }, + { + "option": "HZM-NB-04", + "objective": "Readiness", + "value": 44.6 + }, + { + "option": "HZM-NB-04", + "objective": "SurgeCapacity", + "value": 466.0 + }, + { + "option": "HZM-NB-04", + "objective": "Cost", + "value": 1.88 + }, + { + "option": "HZM-NB-04", + "objective": "ActivationTime", + "value": 11.5 + }, + { + "option": "FLD-HR-01", + "objective": "Readiness", + "value": 83.4 + }, + { + "option": "FLD-HR-01", + "objective": "SurgeCapacity", + "value": 257.0 + }, + { + "option": "FLD-HR-01", + "objective": "Cost", + "value": 3.46 + }, + { + "option": "FLD-HR-01", + "objective": "ActivationTime", + "value": 1.1 + }, + { + "option": "FLD-HR-02", + "objective": "Readiness", + "value": 86.7 + }, + { + "option": "FLD-HR-02", + "objective": "SurgeCapacity", + "value": 272.0 + }, + { + "option": "FLD-HR-02", + "objective": "Cost", + "value": 3.6 + }, + { + "option": "FLD-HR-02", + "objective": "ActivationTime", + "value": 1.4 + }, + { + "option": "FLD-HR-03", + "objective": "Readiness", + "value": 64.5 + }, + { + "option": "FLD-HR-03", + "objective": "SurgeCapacity", + "value": 91.0 + }, + { + "option": "FLD-HR-03", + "objective": "Cost", + "value": 0.85 + }, + { + "option": "FLD-HR-03", + "objective": "ActivationTime", + "value": 2.8 + }, + { + "option": "FLD-HR-04", + "objective": "Readiness", + "value": 71.9 + }, + { + "option": "FLD-HR-04", + "objective": "SurgeCapacity", + "value": 451.0 + }, + { + "option": "FLD-HR-04", + "objective": "Cost", + "value": 4.0 + }, + { + "option": "FLD-HR-04", + "objective": "ActivationTime", + "value": 3.5 + }, + { + "option": "FLD-HR-05", + "objective": "Readiness", + "value": 44.7 + }, + { + "option": "FLD-HR-05", + "objective": "SurgeCapacity", + "value": 395.0 + }, + { + "option": "FLD-HR-05", + "objective": "Cost", + "value": 1.17 + }, + { + "option": "FLD-HR-05", + "objective": "ActivationTime", + "value": 7.8 + }, + { + "option": "FLD-HR-06", + "objective": "Readiness", + "value": 52.5 + }, + { + "option": "FLD-HR-06", + "objective": "SurgeCapacity", + "value": 463.0 + }, + { + "option": "FLD-HR-06", + "objective": "Cost", + "value": 1.37 + }, + { + "option": "FLD-HR-06", + "objective": "ActivationTime", + "value": 8.8 + }, + { + "option": "WFR-HR-01", + "objective": "Readiness", + "value": 75.1 + }, + { + "option": "WFR-HR-01", + "objective": "SurgeCapacity", + "value": 247.0 + }, + { + "option": "WFR-HR-01", + "objective": "Cost", + "value": 3.44 + }, + { + "option": "WFR-HR-01", + "objective": "ActivationTime", + "value": 1.5 + }, + { + "option": "WFR-HR-02", + "objective": "Readiness", + "value": 82.2 + }, + { + "option": "WFR-HR-02", + "objective": "SurgeCapacity", + "value": 297.0 + }, + { + "option": "WFR-HR-02", + "objective": "Cost", + "value": 3.81 + }, + { + "option": "WFR-HR-02", + "objective": "ActivationTime", + "value": 1.3 + }, + { + "option": "WFR-HR-03", + "objective": "Readiness", + "value": 75.3 + }, + { + "option": "WFR-HR-03", + "objective": "SurgeCapacity", + "value": 99.0 + }, + { + "option": "WFR-HR-03", + "objective": "Cost", + "value": 1.17 + }, + { + "option": "WFR-HR-03", + "objective": "ActivationTime", + "value": 3.2 + }, + { + "option": "WFR-HR-04", + "objective": "Readiness", + "value": 73.1 + }, + { + "option": "WFR-HR-04", + "objective": "SurgeCapacity", + "value": 373.0 + }, + { + "option": "WFR-HR-04", + "objective": "Cost", + "value": 3.93 + }, + { + "option": "WFR-HR-04", + "objective": "ActivationTime", + "value": 2.5 + }, + { + "option": "WFR-HR-05", + "objective": "Readiness", + "value": 37.6 + }, + { + "option": "WFR-HR-05", + "objective": "SurgeCapacity", + "value": 468.0 + }, + { + "option": "WFR-HR-05", + "objective": "Cost", + "value": 1.4 + }, + { + "option": "WFR-HR-05", + "objective": "ActivationTime", + "value": 8.4 + }, + { + "option": "QKE-HR-01", + "objective": "Readiness", + "value": 78.6 + }, + { + "option": "QKE-HR-01", + "objective": "SurgeCapacity", + "value": 237.0 + }, + { + "option": "QKE-HR-01", + "objective": "Cost", + "value": 3.77 + }, + { + "option": "QKE-HR-01", + "objective": "ActivationTime", + "value": 0.9 + }, + { + "option": "QKE-HR-02", + "objective": "Readiness", + "value": 59.4 + }, + { + "option": "QKE-HR-02", + "objective": "SurgeCapacity", + "value": 82.0 + }, + { + "option": "QKE-HR-02", + "objective": "Cost", + "value": 1.28 + }, + { + "option": "QKE-HR-02", + "objective": "ActivationTime", + "value": 5.3 + }, + { + "option": "QKE-HR-03", + "objective": "Readiness", + "value": 65.9 + }, + { + "option": "QKE-HR-03", + "objective": "SurgeCapacity", + "value": 394.0 + }, + { + "option": "QKE-HR-03", + "objective": "Cost", + "value": 4.17 + }, + { + "option": "QKE-HR-03", + "objective": "ActivationTime", + "value": 3.2 + }, + { + "option": "QKE-HR-04", + "objective": "Readiness", + "value": 49.2 + }, + { + "option": "QKE-HR-04", + "objective": "SurgeCapacity", + "value": 383.0 + }, + { + "option": "QKE-HR-04", + "objective": "Cost", + "value": 1.7 + }, + { + "option": "QKE-HR-04", + "objective": "ActivationTime", + "value": 9.0 + }, + { + "option": "STM-HR-01", + "objective": "Readiness", + "value": 82.6 + }, + { + "option": "STM-HR-01", + "objective": "SurgeCapacity", + "value": 298.0 + }, + { + "option": "STM-HR-01", + "objective": "Cost", + "value": 3.42 + }, + { + "option": "STM-HR-01", + "objective": "ActivationTime", + "value": 0.5 + }, + { + "option": "STM-HR-02", + "objective": "Readiness", + "value": 50.9 + }, + { + "option": "STM-HR-02", + "objective": "SurgeCapacity", + "value": 83.0 + }, + { + "option": "STM-HR-02", + "objective": "Cost", + "value": 0.51 + }, + { + "option": "STM-HR-02", + "objective": "ActivationTime", + "value": 4.6 + }, + { + "option": "STM-HR-03", + "objective": "Readiness", + "value": 57.9 + }, + { + "option": "STM-HR-03", + "objective": "SurgeCapacity", + "value": 455.0 + }, + { + "option": "STM-HR-03", + "objective": "Cost", + "value": 3.54 + }, + { + "option": "STM-HR-03", + "objective": "ActivationTime", + "value": 1.9 + }, + { + "option": "STM-HR-04", + "objective": "Readiness", + "value": 48.7 + }, + { + "option": "STM-HR-04", + "objective": "SurgeCapacity", + "value": 505.0 + }, + { + "option": "STM-HR-04", + "objective": "Cost", + "value": 1.19 + }, + { + "option": "STM-HR-04", + "objective": "ActivationTime", + "value": 8.5 + }, + { + "option": "STM-HR-05", + "objective": "Readiness", + "value": 27.2 + }, + { + "option": "STM-HR-05", + "objective": "SurgeCapacity", + "value": 436.0 + }, + { + "option": "STM-HR-05", + "objective": "Cost", + "value": 0.82 + }, + { + "option": "STM-HR-05", + "objective": "ActivationTime", + "value": 9.1 + }, + { + "option": "HZM-HR-01", + "objective": "Readiness", + "value": 93.7 + }, + { + "option": "HZM-HR-01", + "objective": "SurgeCapacity", + "value": 244.0 + }, + { + "option": "HZM-HR-01", + "objective": "Cost", + "value": 4.24 + }, + { + "option": "HZM-HR-01", + "objective": "ActivationTime", + "value": 0.8 + }, + { + "option": "HZM-HR-02", + "objective": "Readiness", + "value": 62.4 + }, + { + "option": "HZM-HR-02", + "objective": "SurgeCapacity", + "value": 69.0 + }, + { + "option": "HZM-HR-02", + "objective": "Cost", + "value": 1.37 + }, + { + "option": "HZM-HR-02", + "objective": "ActivationTime", + "value": 3.4 + }, + { + "option": "HZM-HR-03", + "objective": "Readiness", + "value": 87.6 + }, + { + "option": "HZM-HR-03", + "objective": "SurgeCapacity", + "value": 335.0 + }, + { + "option": "HZM-HR-03", + "objective": "Cost", + "value": 4.47 + }, + { + "option": "HZM-HR-03", + "objective": "ActivationTime", + "value": 2.1 + }, + { + "option": "HZM-HR-04", + "objective": "Readiness", + "value": 44.7 + }, + { + "option": "HZM-HR-04", + "objective": "SurgeCapacity", + "value": 359.0 + }, + { + "option": "HZM-HR-04", + "objective": "Cost", + "value": 1.71 + }, + { + "option": "HZM-HR-04", + "objective": "ActivationTime", + "value": 8.6 + }, + { + "option": "FLD-UP-01", + "objective": "Readiness", + "value": 95.0 + }, + { + "option": "FLD-UP-01", + "objective": "SurgeCapacity", + "value": 284.0 + }, + { + "option": "FLD-UP-01", + "objective": "Cost", + "value": 3.83 + }, + { + "option": "FLD-UP-01", + "objective": "ActivationTime", + "value": 0.7 + }, + { + "option": "FLD-UP-02", + "objective": "Readiness", + "value": 83.1 + }, + { + "option": "FLD-UP-02", + "objective": "SurgeCapacity", + "value": 298.0 + }, + { + "option": "FLD-UP-02", + "objective": "Cost", + "value": 3.63 + }, + { + "option": "FLD-UP-02", + "objective": "ActivationTime", + "value": 1.2 + }, + { + "option": "FLD-UP-03", + "objective": "Readiness", + "value": 73.5 + }, + { + "option": "FLD-UP-03", + "objective": "SurgeCapacity", + "value": 157.0 + }, + { + "option": "FLD-UP-03", + "objective": "Cost", + "value": 1.13 + }, + { + "option": "FLD-UP-03", + "objective": "ActivationTime", + "value": 4.3 + }, + { + "option": "FLD-UP-04", + "objective": "Readiness", + "value": 70.7 + }, + { + "option": "FLD-UP-04", + "objective": "SurgeCapacity", + "value": 436.0 + }, + { + "option": "FLD-UP-04", + "objective": "Cost", + "value": 3.92 + }, + { + "option": "FLD-UP-04", + "objective": "ActivationTime", + "value": 2.6 + }, + { + "option": "FLD-UP-05", + "objective": "Readiness", + "value": 43.1 + }, + { + "option": "FLD-UP-05", + "objective": "SurgeCapacity", + "value": 383.0 + }, + { + "option": "FLD-UP-05", + "objective": "Cost", + "value": 1.13 + }, + { + "option": "FLD-UP-05", + "objective": "ActivationTime", + "value": 6.2 + }, + { + "option": "FLD-UP-06", + "objective": "Readiness", + "value": 52.1 + }, + { + "option": "FLD-UP-06", + "objective": "SurgeCapacity", + "value": 491.0 + }, + { + "option": "FLD-UP-06", + "objective": "Cost", + "value": 1.41 + }, + { + "option": "FLD-UP-06", + "objective": "ActivationTime", + "value": 7.3 + }, + { + "option": "WFR-UP-01", + "objective": "Readiness", + "value": 80.6 + }, + { + "option": "WFR-UP-01", + "objective": "SurgeCapacity", + "value": 313.0 + }, + { + "option": "WFR-UP-01", + "objective": "Cost", + "value": 3.84 + }, + { + "option": "WFR-UP-01", + "objective": "ActivationTime", + "value": 2.1 + }, + { + "option": "WFR-UP-02", + "objective": "Readiness", + "value": 92.8 + }, + { + "option": "WFR-UP-02", + "objective": "SurgeCapacity", + "value": 357.0 + }, + { + "option": "WFR-UP-02", + "objective": "Cost", + "value": 4.29 + }, + { + "option": "WFR-UP-02", + "objective": "ActivationTime", + "value": 1.5 + }, + { + "option": "WFR-UP-03", + "objective": "Readiness", + "value": 67.2 + }, + { + "option": "WFR-UP-03", + "objective": "SurgeCapacity", + "value": 77.0 + }, + { + "option": "WFR-UP-03", + "objective": "Cost", + "value": 1.04 + }, + { + "option": "WFR-UP-03", + "objective": "ActivationTime", + "value": 5.4 + }, + { + "option": "WFR-UP-04", + "objective": "Readiness", + "value": 88.0 + }, + { + "option": "WFR-UP-04", + "objective": "SurgeCapacity", + "value": 420.0 + }, + { + "option": "WFR-UP-04", + "objective": "Cost", + "value": 4.41 + }, + { + "option": "WFR-UP-04", + "objective": "ActivationTime", + "value": 1.9 + }, + { + "option": "WFR-UP-05", + "objective": "Readiness", + "value": 52.3 + }, + { + "option": "WFR-UP-05", + "objective": "SurgeCapacity", + "value": 422.0 + }, + { + "option": "WFR-UP-05", + "objective": "Cost", + "value": 1.5 + }, + { + "option": "WFR-UP-05", + "objective": "ActivationTime", + "value": 7.4 + }, + { + "option": "QKE-UP-01", + "objective": "Readiness", + "value": 88.0 + }, + { + "option": "QKE-UP-01", + "objective": "SurgeCapacity", + "value": 260.0 + }, + { + "option": "QKE-UP-01", + "objective": "Cost", + "value": 4.08 + }, + { + "option": "QKE-UP-01", + "objective": "ActivationTime", + "value": 2.2 + }, + { + "option": "QKE-UP-02", + "objective": "Readiness", + "value": 63.1 + }, + { + "option": "QKE-UP-02", + "objective": "SurgeCapacity", + "value": 73.0 + }, + { + "option": "QKE-UP-02", + "objective": "Cost", + "value": 1.29 + }, + { + "option": "QKE-UP-02", + "objective": "ActivationTime", + "value": 3.3 + }, + { + "option": "QKE-UP-03", + "objective": "Readiness", + "value": 69.2 + }, + { + "option": "QKE-UP-03", + "objective": "SurgeCapacity", + "value": 342.0 + }, + { + "option": "QKE-UP-03", + "objective": "Cost", + "value": 4.03 + }, + { + "option": "QKE-UP-03", + "objective": "ActivationTime", + "value": 0.8 + }, + { + "option": "QKE-UP-04", + "objective": "Readiness", + "value": 42.7 + }, + { + "option": "QKE-UP-04", + "objective": "SurgeCapacity", + "value": 421.0 + }, + { + "option": "QKE-UP-04", + "objective": "Cost", + "value": 1.69 + }, + { + "option": "QKE-UP-04", + "objective": "ActivationTime", + "value": 10.4 + }, + { + "option": "STM-UP-01", + "objective": "Readiness", + "value": 78.1 + }, + { + "option": "STM-UP-01", + "objective": "SurgeCapacity", + "value": 318.0 + }, + { + "option": "STM-UP-01", + "objective": "Cost", + "value": 3.4 + }, + { + "option": "STM-UP-01", + "objective": "ActivationTime", + "value": 1.3 + }, + { + "option": "STM-UP-02", + "objective": "Readiness", + "value": 52.7 + }, + { + "option": "STM-UP-02", + "objective": "SurgeCapacity", + "value": 56.0 + }, + { + "option": "STM-UP-02", + "objective": "Cost", + "value": 0.44 + }, + { + "option": "STM-UP-02", + "objective": "ActivationTime", + "value": 3.6 + }, + { + "option": "STM-UP-03", + "objective": "Readiness", + "value": 74.3 + }, + { + "option": "STM-UP-03", + "objective": "SurgeCapacity", + "value": 353.0 + }, + { + "option": "STM-UP-03", + "objective": "Cost", + "value": 3.48 + }, + { + "option": "STM-UP-03", + "objective": "ActivationTime", + "value": 2.6 + }, + { + "option": "STM-UP-04", + "objective": "Readiness", + "value": 49.6 + }, + { + "option": "STM-UP-04", + "objective": "SurgeCapacity", + "value": 477.0 + }, + { + "option": "STM-UP-04", + "objective": "Cost", + "value": 1.16 + }, + { + "option": "STM-UP-04", + "objective": "ActivationTime", + "value": 9.7 + }, + { + "option": "STM-UP-05", + "objective": "Readiness", + "value": 28.0 + }, + { + "option": "STM-UP-05", + "objective": "SurgeCapacity", + "value": 404.0 + }, + { + "option": "STM-UP-05", + "objective": "Cost", + "value": 0.78 + }, + { + "option": "STM-UP-05", + "objective": "ActivationTime", + "value": 9.6 + }, + { + "option": "HZM-UP-01", + "objective": "Readiness", + "value": 88.0 + }, + { + "option": "HZM-UP-01", + "objective": "SurgeCapacity", + "value": 259.0 + }, + { + "option": "HZM-UP-01", + "objective": "Cost", + "value": 4.17 + }, + { + "option": "HZM-UP-01", + "objective": "ActivationTime", + "value": 1.2 + }, + { + "option": "HZM-UP-02", + "objective": "Readiness", + "value": 79.3 + }, + { + "option": "HZM-UP-02", + "objective": "SurgeCapacity", + "value": 67.0 + }, + { + "option": "HZM-UP-02", + "objective": "Cost", + "value": 1.51 + }, + { + "option": "HZM-UP-02", + "objective": "ActivationTime", + "value": 4.1 + }, + { + "option": "HZM-UP-03", + "objective": "Readiness", + "value": 75.9 + }, + { + "option": "HZM-UP-03", + "objective": "SurgeCapacity", + "value": 313.0 + }, + { + "option": "HZM-UP-03", + "objective": "Cost", + "value": 4.16 + }, + { + "option": "HZM-UP-03", + "objective": "ActivationTime", + "value": 4.0 + }, + { + "option": "HZM-UP-04", + "objective": "Readiness", + "value": 43.1 + }, + { + "option": "HZM-UP-04", + "objective": "SurgeCapacity", + "value": 348.0 + }, + { + "option": "HZM-UP-04", + "objective": "Cost", + "value": 1.67 + }, + { + "option": "HZM-UP-04", + "objective": "ActivationTime", + "value": 9.8 + }, + { + "option": "FLD-DL-01", + "objective": "Readiness", + "value": 82.6 + }, + { + "option": "FLD-DL-01", + "objective": "SurgeCapacity", + "value": 324.0 + }, + { + "option": "FLD-DL-01", + "objective": "Cost", + "value": 3.73 + }, + { + "option": "FLD-DL-01", + "objective": "ActivationTime", + "value": 0.9 + }, + { + "option": "FLD-DL-02", + "objective": "Readiness", + "value": 80.9 + }, + { + "option": "FLD-DL-02", + "objective": "SurgeCapacity", + "value": 243.0 + }, + { + "option": "FLD-DL-02", + "objective": "Cost", + "value": 3.35 + }, + { + "option": "FLD-DL-02", + "objective": "ActivationTime", + "value": 0.4 + }, + { + "option": "FLD-DL-03", + "objective": "Readiness", + "value": 54.8 + }, + { + "option": "FLD-DL-03", + "objective": "SurgeCapacity", + "value": 89.0 + }, + { + "option": "FLD-DL-03", + "objective": "Cost", + "value": 0.76 + }, + { + "option": "FLD-DL-03", + "objective": "ActivationTime", + "value": 3.4 + }, + { + "option": "FLD-DL-04", + "objective": "Readiness", + "value": 79.1 + }, + { + "option": "FLD-DL-04", + "objective": "SurgeCapacity", + "value": 420.0 + }, + { + "option": "FLD-DL-04", + "objective": "Cost", + "value": 4.03 + }, + { + "option": "FLD-DL-04", + "objective": "ActivationTime", + "value": 2.3 + }, + { + "option": "FLD-DL-05", + "objective": "Readiness", + "value": 42.9 + }, + { + "option": "FLD-DL-05", + "objective": "SurgeCapacity", + "value": 544.0 + }, + { + "option": "FLD-DL-05", + "objective": "Cost", + "value": 1.39 + }, + { + "option": "FLD-DL-05", + "objective": "ActivationTime", + "value": 7.9 + }, + { + "option": "FLD-DL-06", + "objective": "Readiness", + "value": 38.6 + }, + { + "option": "FLD-DL-06", + "objective": "SurgeCapacity", + "value": 488.0 + }, + { + "option": "FLD-DL-06", + "objective": "Cost", + "value": 1.24 + }, + { + "option": "FLD-DL-06", + "objective": "ActivationTime", + "value": 12.3 + }, + { + "option": "WFR-DL-01", + "objective": "Readiness", + "value": 90.3 + }, + { + "option": "WFR-DL-01", + "objective": "SurgeCapacity", + "value": 310.0 + }, + { + "option": "WFR-DL-01", + "objective": "Cost", + "value": 4.04 + }, + { + "option": "WFR-DL-01", + "objective": "ActivationTime", + "value": 0.5 + }, + { + "option": "WFR-DL-02", + "objective": "Readiness", + "value": 91.4 + }, + { + "option": "WFR-DL-02", + "objective": "SurgeCapacity", + "value": 339.0 + }, + { + "option": "WFR-DL-02", + "objective": "Cost", + "value": 4.18 + }, + { + "option": "WFR-DL-02", + "objective": "ActivationTime", + "value": 1.1 + }, + { + "option": "WFR-DL-03", + "objective": "Readiness", + "value": 70.3 + }, + { + "option": "WFR-DL-03", + "objective": "SurgeCapacity", + "value": 100.0 + }, + { + "option": "WFR-DL-03", + "objective": "Cost", + "value": 1.13 + }, + { + "option": "WFR-DL-03", + "objective": "ActivationTime", + "value": 4.0 + }, + { + "option": "WFR-DL-04", + "objective": "Readiness", + "value": 73.1 + }, + { + "option": "WFR-DL-04", + "objective": "SurgeCapacity", + "value": 430.0 + }, + { + "option": "WFR-DL-04", + "objective": "Cost", + "value": 4.15 + }, + { + "option": "WFR-DL-04", + "objective": "ActivationTime", + "value": 2.3 + }, + { + "option": "WFR-DL-05", + "objective": "Readiness", + "value": 37.2 + }, + { + "option": "WFR-DL-05", + "objective": "SurgeCapacity", + "value": 543.0 + }, + { + "option": "WFR-DL-05", + "objective": "Cost", + "value": 1.52 + }, + { + "option": "WFR-DL-05", + "objective": "ActivationTime", + "value": 10.6 + }, + { + "option": "QKE-DL-01", + "objective": "Readiness", + "value": 77.6 + }, + { + "option": "QKE-DL-01", + "objective": "SurgeCapacity", + "value": 219.0 + }, + { + "option": "QKE-DL-01", + "objective": "Cost", + "value": 3.68 + }, + { + "option": "QKE-DL-01", + "objective": "ActivationTime", + "value": 1.6 + }, + { + "option": "QKE-DL-02", + "objective": "Readiness", + "value": 65.2 + }, + { + "option": "QKE-DL-02", + "objective": "SurgeCapacity", + "value": 95.0 + }, + { + "option": "QKE-DL-02", + "objective": "Cost", + "value": 1.37 + }, + { + "option": "QKE-DL-02", + "objective": "ActivationTime", + "value": 3.9 + }, + { + "option": "QKE-DL-03", + "objective": "Readiness", + "value": 74.8 + }, + { + "option": "QKE-DL-03", + "objective": "SurgeCapacity", + "value": 433.0 + }, + { + "option": "QKE-DL-03", + "objective": "Cost", + "value": 4.49 + }, + { + "option": "QKE-DL-03", + "objective": "ActivationTime", + "value": 1.6 + }, + { + "option": "QKE-DL-04", + "objective": "Readiness", + "value": 44.0 + }, + { + "option": "QKE-DL-04", + "objective": "SurgeCapacity", + "value": 367.0 + }, + { + "option": "QKE-DL-04", + "objective": "Cost", + "value": 1.62 + }, + { + "option": "QKE-DL-04", + "objective": "ActivationTime", + "value": 7.2 + }, + { + "option": "STM-DL-01", + "objective": "Readiness", + "value": 65.7 + }, + { + "option": "STM-DL-01", + "objective": "SurgeCapacity", + "value": 334.0 + }, + { + "option": "STM-DL-01", + "objective": "Cost", + "value": 3.2 + }, + { + "option": "STM-DL-01", + "objective": "ActivationTime", + "value": 1.3 + }, + { + "option": "STM-DL-02", + "objective": "Readiness", + "value": 59.8 + }, + { + "option": "STM-DL-02", + "objective": "SurgeCapacity", + "value": 125.0 + }, + { + "option": "STM-DL-02", + "objective": "Cost", + "value": 0.71 + }, + { + "option": "STM-DL-02", + "objective": "ActivationTime", + "value": 2.1 + }, + { + "option": "STM-DL-03", + "objective": "Readiness", + "value": 69.9 + }, + { + "option": "STM-DL-03", + "objective": "SurgeCapacity", + "value": 483.0 + }, + { + "option": "STM-DL-03", + "objective": "Cost", + "value": 3.88 + }, + { + "option": "STM-DL-03", + "objective": "ActivationTime", + "value": 2.4 + }, + { + "option": "STM-DL-04", + "objective": "Readiness", + "value": 30.5 + }, + { + "option": "STM-DL-04", + "objective": "SurgeCapacity", + "value": 491.0 + }, + { + "option": "STM-DL-04", + "objective": "Cost", + "value": 0.95 + }, + { + "option": "STM-DL-04", + "objective": "ActivationTime", + "value": 3.1 + }, + { + "option": "STM-DL-05", + "objective": "Readiness", + "value": 33.8 + }, + { + "option": "STM-DL-05", + "objective": "SurgeCapacity", + "value": 456.0 + }, + { + "option": "STM-DL-05", + "objective": "Cost", + "value": 0.94 + }, + { + "option": "STM-DL-05", + "objective": "ActivationTime", + "value": 11.4 + }, + { + "option": "HZM-DL-01", + "objective": "Readiness", + "value": 38.2 + }, + { + "option": "HZM-DL-01", + "objective": "SurgeCapacity", + "value": 234.0 + }, + { + "option": "HZM-DL-01", + "objective": "Cost", + "value": 2.97 + }, + { + "option": "HZM-DL-01", + "objective": "ActivationTime", + "value": 1.7 + }, + { + "option": "HZM-DL-02", + "objective": "Readiness", + "value": 30.9 + }, + { + "option": "HZM-DL-02", + "objective": "SurgeCapacity", + "value": 135.0 + }, + { + "option": "HZM-DL-02", + "objective": "Cost", + "value": 1.28 + }, + { + "option": "HZM-DL-02", + "objective": "ActivationTime", + "value": 4.2 + }, + { + "option": "HZM-DL-03", + "objective": "Readiness", + "value": 33.4 + }, + { + "option": "HZM-DL-03", + "objective": "SurgeCapacity", + "value": 336.0 + }, + { + "option": "HZM-DL-03", + "objective": "Cost", + "value": 3.39 + }, + { + "option": "HZM-DL-03", + "objective": "ActivationTime", + "value": 2.0 + }, + { + "option": "HZM-DL-04", + "objective": "Readiness", + "value": 41.8 + }, + { + "option": "HZM-DL-04", + "objective": "SurgeCapacity", + "value": 388.0 + }, + { + "option": "HZM-DL-04", + "objective": "Cost", + "value": 1.72 + }, + { + "option": "HZM-DL-04", + "objective": "ActivationTime", + "value": 8.6 + } + ] +} \ No newline at end of file diff --git a/examples/emergency_readiness_portfolio/solutions.json b/examples/emergency_readiness_portfolio/solutions.json new file mode 100644 index 0000000..3477792 --- /dev/null +++ b/examples/emergency_readiness_portfolio/solutions.json @@ -0,0 +1,5999 @@ +{ + "run": { + "run_id": "e8e7f13a-55d3-4645-af9a-5a268a271a0a", + "created_at": "2026-08-03T21:17:53.733526Z", + "mode": "fast", + "solutions": [ + { + "solution_id": 1, + "selected_options": [ + "FLD-NB-03", + "FLD-NB-05", + "WFR-NB-03", + "HZM-NB-02", + "HZM-NB-04", + "WFR-HR-03", + "QKE-HR-02", + "QKE-HR-03", + "STM-HR-01", + "STM-HR-02", + "STM-HR-03", + "HZM-HR-02", + "FLD-UP-02", + "FLD-UP-06", + "QKE-UP-04", + "STM-UP-04", + "HZM-UP-04", + "FLD-DL-01", + "FLD-DL-05", + "WFR-DL-02", + "QKE-DL-02", + "QKE-DL-03", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 41.8, + "SurgeCapacity": 6720.0, + "Cost": 48.45, + "ActivationTime": 4.9174 + }, + "allocations": null, + "content_signature": "637144ad6bdd", + "sensitivity": null + }, + { + "solution_id": 2, + "selected_options": [ + "FLD-NB-03", + "FLD-NB-05", + "WFR-NB-03", + "HZM-NB-02", + "HZM-NB-04", + "WFR-HR-03", + "STM-HR-01", + "STM-HR-02", + "STM-HR-03", + "STM-HR-04", + "HZM-HR-02", + "FLD-UP-02", + "FLD-UP-06", + "QKE-UP-04", + "STM-UP-01", + "HZM-UP-01", + "FLD-DL-01", + "FLD-DL-05", + "WFR-DL-03", + "QKE-DL-02", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 41.8, + "SurgeCapacity": 5829.0, + "Cost": 41.39, + "ActivationTime": 4.6381 + }, + "allocations": null, + "content_signature": "a9136e9564d8", + "sensitivity": null + }, + { + "solution_id": 3, + "selected_options": [ + "FLD-NB-03", + "FLD-NB-05", + "WFR-NB-03", + "HZM-NB-02", + "HZM-NB-04", + "WFR-HR-03", + "STM-HR-02", + "STM-HR-03", + "STM-HR-04", + "HZM-HR-04", + "FLD-UP-02", + "FLD-UP-06", + "WFR-UP-01", + "QKE-UP-04", + "STM-UP-04", + "HZM-UP-04", + "FLD-DL-01", + "FLD-DL-05", + "WFR-DL-03", + "QKE-DL-02", + "QKE-DL-03", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 41.8, + "SurgeCapacity": 6815.0, + "Cost": 41.9, + "ActivationTime": 5.5818 + }, + "allocations": null, + "content_signature": "72979c6f0a09", + "sensitivity": null + }, + { + "solution_id": 4, + "selected_options": [ + "FLD-NB-03", + "FLD-NB-05", + "WFR-NB-03", + "HZM-NB-01", + "HZM-NB-02", + "HZM-NB-03", + "WFR-HR-03", + "STM-HR-02", + "STM-HR-03", + "HZM-HR-04", + "FLD-UP-02", + "FLD-UP-06", + "QKE-UP-04", + "STM-UP-01", + "HZM-UP-01", + "FLD-DL-01", + "FLD-DL-05", + "WFR-DL-01", + "WFR-DL-02", + "QKE-DL-02", + "QKE-DL-03", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 41.8, + "SurgeCapacity": 6431.0, + "Cost": 55.32, + "ActivationTime": 3.8545 + }, + "allocations": null, + "content_signature": "cb67f2f6669c", + "sensitivity": null + }, + { + "solution_id": 5, + "selected_options": [ + "FLD-NB-03", + "FLD-NB-05", + "WFR-NB-03", + "HZM-NB-01", + "HZM-NB-02", + "HZM-NB-03", + "WFR-HR-03", + "STM-HR-01", + "STM-HR-02", + "HZM-HR-02", + "FLD-UP-02", + "FLD-UP-06", + "QKE-UP-04", + "STM-UP-01", + "HZM-UP-01", + "FLD-DL-01", + "WFR-DL-01", + "WFR-DL-03", + "QKE-DL-02", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 41.8, + "SurgeCapacity": 4768.0, + "Cost": 45.93, + "ActivationTime": 3.58 + }, + "allocations": null, + "content_signature": "060d59aa0e14", + "sensitivity": null + }, + { + "solution_id": 6, + "selected_options": [ + "FLD-NB-03", + "FLD-NB-05", + "WFR-NB-03", + "HZM-NB-02", + "HZM-NB-04", + "WFR-HR-03", + "QKE-HR-02", + "STM-HR-01", + "STM-HR-02", + "HZM-HR-02", + "FLD-UP-02", + "FLD-UP-06", + "QKE-UP-04", + "STM-UP-04", + "HZM-UP-04", + "FLD-DL-01", + "FLD-DL-05", + "WFR-DL-03", + "QKE-DL-02", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 41.8, + "SurgeCapacity": 5199.0, + "Cost": 33.2, + "ActivationTime": 5.465 + }, + "allocations": null, + "content_signature": "6215ffdbe419", + "sensitivity": null + }, + { + "solution_id": 7, + "selected_options": [ + "FLD-NB-03", + "WFR-NB-01", + "WFR-NB-03", + "STM-NB-04", + "HZM-NB-02", + "HZM-NB-03", + "WFR-HR-03", + "STM-HR-02", + "STM-HR-03", + "HZM-HR-02", + "FLD-UP-02", + "FLD-UP-06", + "QKE-UP-04", + "STM-UP-01", + "HZM-UP-01", + "FLD-DL-01", + "FLD-DL-05", + "WFR-DL-03", + "QKE-DL-02", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 38.7, + "SurgeCapacity": 5255.0, + "Cost": 42.86, + "ActivationTime": 4.085 + }, + "allocations": null, + "content_signature": "c47d7532a0b2", + "sensitivity": null + }, + { + "solution_id": 8, + "selected_options": [ + "WFR-NB-02", + "STM-NB-04", + "HZM-NB-02", + "HZM-NB-03", + "FLD-HR-02", + "WFR-HR-03", + "STM-HR-01", + "STM-HR-02", + "STM-HR-03", + "STM-HR-04", + "HZM-HR-04", + "FLD-UP-02", + "FLD-UP-06", + "QKE-UP-04", + "STM-UP-01", + "HZM-UP-01", + "FLD-DL-01", + "FLD-DL-05", + "WFR-DL-03", + "QKE-DL-02", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 38.7, + "SurgeCapacity": 6428.0, + "Cost": 49.26, + "ActivationTime": 4.1476 + }, + "allocations": null, + "content_signature": "af36376ca477", + "sensitivity": null + }, + { + "solution_id": 9, + "selected_options": [ + "FLD-NB-03", + "WFR-NB-01", + "QKE-NB-01", + "STM-NB-04", + "HZM-NB-02", + "HZM-NB-03", + "FLD-HR-02", + "WFR-HR-03", + "STM-HR-01", + "STM-HR-02", + "STM-HR-03", + "HZM-HR-02", + "FLD-UP-02", + "QKE-UP-04", + "STM-UP-01", + "HZM-UP-01", + "FLD-DL-01", + "WFR-DL-03", + "QKE-DL-02", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 38.7, + "SurgeCapacity": 4973.0, + "Cost": 50.15, + "ActivationTime": 3.21 + }, + "allocations": null, + "content_signature": "47909b8e5cf4", + "sensitivity": null + }, + { + "solution_id": 10, + "selected_options": [ + "FLD-NB-03", + "WFR-NB-02", + "STM-NB-04", + "HZM-NB-02", + "HZM-NB-03", + "FLD-HR-02", + "WFR-HR-03", + "STM-HR-01", + "STM-HR-02", + "STM-HR-03", + "HZM-HR-02", + "FLD-UP-02", + "QKE-UP-04", + "STM-UP-01", + "HZM-UP-01", + "FLD-DL-01", + "WFR-DL-01", + "WFR-DL-02", + "QKE-DL-02", + "QKE-DL-03", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 38.7, + "SurgeCapacity": 5649.0, + "Cost": 57.31, + "ActivationTime": 2.9429 + }, + "allocations": null, + "content_signature": "f9cf23861b30", + "sensitivity": null + }, + { + "solution_id": 11, + "selected_options": [ + "FLD-NB-03", + "WFR-NB-03", + "STM-NB-04", + "HZM-NB-02", + "HZM-NB-04", + "WFR-HR-03", + "STM-HR-01", + "STM-HR-02", + "STM-HR-03", + "STM-HR-04", + "HZM-HR-02", + "FLD-UP-02", + "FLD-UP-06", + "QKE-UP-04", + "STM-UP-04", + "HZM-UP-04", + "FLD-DL-01", + "FLD-DL-05", + "FLD-DL-06", + "QKE-DL-02", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 38.6, + "SurgeCapacity": 6544.0, + "Cost": 36.5, + "ActivationTime": 5.8667 + }, + "allocations": null, + "content_signature": "dae63ddd385a", + "sensitivity": null + }, + { + "solution_id": 12, + "selected_options": [ + "WFR-NB-02", + "STM-NB-04", + "HZM-NB-02", + "HZM-NB-03", + "FLD-HR-02", + "WFR-HR-03", + "STM-HR-01", + "STM-HR-02", + "STM-HR-03", + "STM-HR-04", + "HZM-HR-04", + "FLD-UP-02", + "FLD-UP-06", + "QKE-UP-04", + "STM-UP-04", + "HZM-UP-04", + "FLD-DL-01", + "FLD-DL-05", + "FLD-DL-06", + "QKE-DL-02", + "QKE-DL-03", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 38.6, + "SurgeCapacity": 7497.0, + "Cost": 49.12, + "ActivationTime": 5.1818 + }, + "allocations": null, + "content_signature": "2f3a3966497b", + "sensitivity": null + }, + { + "solution_id": 13, + "selected_options": [ + "FLD-NB-06", + "WFR-NB-02", + "STM-NB-04", + "HZM-NB-02", + "HZM-NB-04", + "WFR-HR-03", + "STM-HR-01", + "STM-HR-02", + "STM-HR-03", + "STM-HR-04", + "HZM-HR-02", + "FLD-UP-02", + "FLD-UP-06", + "QKE-UP-04", + "STM-UP-01", + "HZM-UP-01", + "FLD-DL-01", + "WFR-DL-01", + "WFR-DL-02", + "QKE-DL-02", + "QKE-DL-03", + "HZM-DL-01", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 37.7, + "SurgeCapacity": 7247.0, + "Cost": 57.51, + "ActivationTime": 3.9522 + }, + "allocations": null, + "content_signature": "409ca600dbeb", + "sensitivity": null + }, + { + "solution_id": 14, + "selected_options": [ + "FLD-NB-06", + "STM-NB-04", + "HZM-NB-02", + "HZM-NB-03", + "FLD-HR-02", + "WFR-HR-03", + "STM-HR-02", + "STM-HR-03", + "STM-HR-04", + "HZM-HR-04", + "FLD-UP-02", + "FLD-UP-06", + "WFR-UP-01", + "QKE-UP-04", + "STM-UP-04", + "HZM-UP-04", + "FLD-DL-01", + "FLD-DL-05", + "FLD-DL-06", + "WFR-DL-01", + "WFR-DL-02", + "QKE-DL-02", + "QKE-DL-03", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 37.7, + "SurgeCapacity": 8524.0, + "Cost": 55.49, + "ActivationTime": 5.2042 + }, + "allocations": null, + "content_signature": "57e2ee22ab46", + "sensitivity": null + }, + { + "solution_id": 15, + "selected_options": [ + "FLD-NB-06", + "STM-NB-04", + "HZM-NB-02", + "HZM-NB-04", + "WFR-HR-03", + "WFR-HR-05", + "STM-HR-02", + "STM-HR-03", + "STM-HR-04", + "HZM-HR-04", + "FLD-UP-02", + "FLD-UP-06", + "QKE-UP-04", + "STM-UP-04", + "HZM-UP-04", + "FLD-DL-01", + "FLD-DL-05", + "WFR-DL-03", + "QKE-DL-02", + "QKE-DL-03", + "HZM-DL-01", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 37.6, + "SurgeCapacity": 7729.0, + "Cost": 41.73, + "ActivationTime": 5.9227 + }, + "allocations": null, + "content_signature": "a28181e9eea7", + "sensitivity": null + }, + { + "solution_id": 16, + "selected_options": [ + "FLD-NB-03", + "WFR-NB-03", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-02", + "HZM-NB-04", + "WFR-HR-03", + "STM-HR-02", + "STM-HR-04", + "HZM-HR-02", + "FLD-UP-02", + "FLD-UP-06", + "QKE-UP-04", + "STM-UP-04", + "HZM-UP-04", + "FLD-DL-01", + "FLD-DL-05", + "WFR-DL-03", + "QKE-DL-02", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 37.4, + "SurgeCapacity": 5867.0, + "Cost": 30.42, + "ActivationTime": 6.065 + }, + "allocations": null, + "content_signature": "b48d78d6cad2", + "sensitivity": null + }, + { + "solution_id": 17, + "selected_options": [ + "FLD-NB-06", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-04", + "FLD-HR-02", + "WFR-HR-05", + "STM-HR-02", + "STM-HR-03", + "STM-HR-04", + "HZM-HR-04", + "FLD-UP-02", + "FLD-UP-06", + "WFR-UP-01", + "QKE-UP-04", + "STM-UP-04", + "HZM-UP-04", + "FLD-DL-01", + "FLD-DL-05", + "FLD-DL-06", + "WFR-DL-01", + "WFR-DL-02", + "QKE-DL-02", + "QKE-DL-03", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 37.4, + "SurgeCapacity": 9410.0, + "Cost": 52.81, + "ActivationTime": 6.0667 + }, + "allocations": null, + "content_signature": "896f3ee03e76", + "sensitivity": null + }, + { + "solution_id": 18, + "selected_options": [ + "FLD-NB-03", + "FLD-NB-05", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-04", + "FLD-HR-06", + "WFR-HR-05", + "STM-HR-02", + "STM-HR-04", + "HZM-HR-02", + "FLD-UP-02", + "FLD-UP-06", + "QKE-UP-04", + "STM-UP-04", + "HZM-UP-04", + "FLD-DL-01", + "FLD-DL-05", + "WFR-DL-03", + "QKE-DL-02", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 37.4, + "SurgeCapacity": 6964.0, + "Cost": 30.75, + "ActivationTime": 6.67 + }, + "allocations": null, + "content_signature": "2392b668ec43", + "sensitivity": null + }, + { + "solution_id": 19, + "selected_options": [ + "FLD-NB-06", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-04", + "FLD-HR-06", + "WFR-HR-05", + "STM-HR-02", + "STM-HR-04", + "HZM-HR-02", + "FLD-UP-02", + "FLD-UP-06", + "QKE-UP-04", + "STM-UP-04", + "HZM-UP-04", + "FLD-DL-01", + "FLD-DL-05", + "FLD-DL-06", + "WFR-DL-05", + "QKE-DL-02", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 37.2, + "SurgeCapacity": 8004.0, + "Cost": 31.67, + "ActivationTime": 7.56 + }, + "allocations": null, + "content_signature": "7eadbd0b421e", + "sensitivity": null + }, + { + "solution_id": 20, + "selected_options": [ + "FLD-NB-06", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-04", + "FLD-HR-06", + "WFR-HR-05", + "STM-HR-02", + "STM-HR-03", + "STM-HR-04", + "HZM-HR-04", + "FLD-UP-02", + "FLD-UP-06", + "QKE-UP-04", + "STM-UP-01", + "HZM-UP-01", + "HZM-UP-04", + "FLD-DL-01", + "FLD-DL-05", + "FLD-DL-06", + "WFR-DL-05", + "QKE-DL-02", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 37.2, + "SurgeCapacity": 8849.0, + "Cost": 41.96, + "ActivationTime": 6.8682 + }, + "allocations": null, + "content_signature": "1c31862ebb28", + "sensitivity": null + }, + { + "solution_id": 21, + "selected_options": [ + "FLD-NB-03", + "WFR-NB-03", + "STM-NB-04", + "HZM-NB-04", + "WFR-HR-03", + "WFR-HR-05", + "STM-HR-02", + "STM-HR-04", + "HZM-HR-02", + "FLD-UP-02", + "FLD-UP-06", + "QKE-UP-04", + "STM-UP-04", + "HZM-UP-04", + "FLD-DL-01", + "FLD-DL-05", + "WFR-DL-03", + "QKE-DL-02", + "STM-DL-05", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 33.8, + "SurgeCapacity": 6255.0, + "Cost": 30.23, + "ActivationTime": 6.515 + }, + "allocations": null, + "content_signature": "273381919b2c", + "sensitivity": null + }, + { + "solution_id": 22, + "selected_options": [ + "FLD-NB-03", + "WFR-NB-03", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-04", + "WFR-HR-03", + "STM-HR-02", + "STM-HR-03", + "HZM-HR-02", + "FLD-UP-02", + "FLD-UP-06", + "QKE-UP-04", + "STM-UP-01", + "HZM-UP-01", + "FLD-DL-01", + "FLD-DL-05", + "WFR-DL-03", + "QKE-DL-02", + "STM-DL-05", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 33.8, + "SurgeCapacity": 5953.0, + "Cost": 36.91, + "ActivationTime": 5.355 + }, + "allocations": null, + "content_signature": "07c2b724cadc", + "sensitivity": null + }, + { + "solution_id": 23, + "selected_options": [ + "FLD-NB-05", + "FLD-NB-06", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-04", + "FLD-HR-06", + "WFR-HR-03", + "STM-HR-02", + "STM-HR-03", + "HZM-HR-02", + "FLD-UP-02", + "QKE-UP-04", + "HZM-UP-01", + "FLD-DL-01", + "FLD-DL-05", + "WFR-DL-01", + "WFR-DL-02", + "QKE-DL-02", + "STM-DL-05", + "HZM-DL-01", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 33.8, + "SurgeCapacity": 7242.0, + "Cost": 44.39, + "ActivationTime": 5.2857 + }, + "allocations": null, + "content_signature": "3085f5670cdc", + "sensitivity": null + }, + { + "solution_id": 24, + "selected_options": [ + "FLD-NB-03", + "WFR-NB-03", + "STM-NB-04", + "HZM-NB-02", + "HZM-NB-03", + "WFR-HR-03", + "STM-HR-01", + "STM-HR-02", + "HZM-HR-02", + "FLD-UP-02", + "FLD-UP-06", + "QKE-UP-04", + "STM-UP-01", + "HZM-UP-01", + "FLD-DL-01", + "FLD-DL-05", + "WFR-DL-03", + "QKE-DL-02", + "STM-DL-05", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 33.8, + "SurgeCapacity": 5279.0, + "Cost": 39.7, + "ActivationTime": 4.51 + }, + "allocations": null, + "content_signature": "58e8bf377f8c", + "sensitivity": null + }, + { + "solution_id": 25, + "selected_options": [ + "FLD-NB-05", + "FLD-NB-06", + "STM-NB-04", + "HZM-NB-02", + "HZM-NB-03", + "FLD-HR-02", + "WFR-HR-03", + "STM-HR-02", + "STM-HR-03", + "HZM-HR-02", + "FLD-UP-02", + "FLD-UP-06", + "QKE-UP-04", + "STM-UP-04", + "HZM-UP-01", + "FLD-DL-01", + "WFR-DL-01", + "WFR-DL-02", + "QKE-DL-02", + "QKE-DL-03", + "STM-DL-05", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 33.8, + "SurgeCapacity": 7157.0, + "Cost": 52.23, + "ActivationTime": 4.4136 + }, + "allocations": null, + "content_signature": "e49fd383ce5e", + "sensitivity": null + }, + { + "solution_id": 26, + "selected_options": [ + "FLD-NB-01", + "FLD-NB-03", + "WFR-NB-02", + "STM-NB-04", + "HZM-NB-02", + "HZM-NB-03", + "FLD-HR-02", + "WFR-HR-03", + "STM-HR-02", + "STM-HR-03", + "HZM-HR-02", + "FLD-UP-02", + "QKE-UP-04", + "HZM-UP-01", + "FLD-DL-01", + "FLD-DL-05", + "WFR-DL-01", + "WFR-DL-02", + "QKE-DL-02", + "STM-DL-05", + "HZM-DL-01" + ], + "objective_values": { + "Readiness": 33.8, + "SurgeCapacity": 5718.0, + "Cost": 53.29, + "ActivationTime": 3.4238 + }, + "allocations": null, + "content_signature": "7ace7719d03b", + "sensitivity": null + }, + { + "solution_id": 27, + "selected_options": [ + "FLD-NB-05", + "FLD-NB-06", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-04", + "FLD-HR-02", + "WFR-HR-03", + "STM-HR-02", + "STM-HR-03", + "STM-HR-04", + "HZM-HR-04", + "FLD-UP-02", + "FLD-UP-06", + "QKE-UP-04", + "STM-UP-04", + "HZM-UP-01", + "FLD-DL-01", + "WFR-DL-01", + "WFR-DL-02", + "QKE-DL-02", + "QKE-DL-03", + "STM-DL-05", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 33.8, + "SurgeCapacity": 8469.0, + "Cost": 50.85, + "ActivationTime": 5.4913 + }, + "allocations": null, + "content_signature": "df4fb08685b7", + "sensitivity": null + }, + { + "solution_id": 28, + "selected_options": [ + "FLD-NB-03", + "WFR-NB-02", + "STM-NB-04", + "HZM-NB-02", + "HZM-NB-03", + "FLD-HR-02", + "WFR-HR-03", + "STM-HR-02", + "STM-HR-03", + "HZM-HR-02", + "FLD-UP-02", + "FLD-UP-06", + "QKE-UP-04", + "HZM-UP-01", + "FLD-DL-01", + "FLD-DL-05", + "WFR-DL-02", + "QKE-DL-02", + "STM-DL-05", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 33.8, + "SurgeCapacity": 5781.0, + "Cost": 45.7, + "ActivationTime": 4.225 + }, + "allocations": null, + "content_signature": "c717758576fe", + "sensitivity": null + }, + { + "solution_id": 29, + "selected_options": [ + "FLD-NB-05", + "FLD-NB-06", + "STM-NB-04", + "HZM-NB-02", + "HZM-NB-03", + "FLD-HR-02", + "WFR-HR-03", + "STM-HR-02", + "STM-HR-03", + "HZM-HR-02", + "FLD-UP-02", + "FLD-UP-06", + "WFR-UP-01", + "QKE-UP-04", + "STM-UP-04", + "HZM-UP-01", + "FLD-DL-01", + "FLD-DL-05", + "WFR-DL-01", + "WFR-DL-02", + "QKE-DL-02", + "QKE-DL-03", + "STM-DL-05", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 33.8, + "SurgeCapacity": 8014.0, + "Cost": 57.46, + "ActivationTime": 4.4625 + }, + "allocations": null, + "content_signature": "98b97edaef52", + "sensitivity": null + }, + { + "solution_id": 30, + "selected_options": [ + "FLD-NB-06", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-04", + "FLD-HR-06", + "WFR-HR-05", + "STM-HR-02", + "STM-HR-04", + "HZM-HR-02", + "FLD-UP-02", + "FLD-UP-06", + "QKE-UP-04", + "STM-UP-04", + "HZM-UP-04", + "FLD-DL-01", + "FLD-DL-05", + "WFR-DL-03", + "QKE-DL-02", + "HZM-DL-02", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 30.9, + "SurgeCapacity": 7208.0, + "Cost": 31.32, + "ActivationTime": 6.825 + }, + "allocations": null, + "content_signature": "bd8c331a8bd8", + "sensitivity": null + }, + { + "solution_id": 31, + "selected_options": [ + "WFR-NB-02", + "STM-NB-04", + "HZM-NB-02", + "HZM-NB-03", + "FLD-HR-02", + "WFR-HR-03", + "STM-HR-01", + "STM-HR-02", + "STM-HR-03", + "HZM-HR-02", + "FLD-UP-02", + "FLD-UP-06", + "QKE-UP-04", + "STM-UP-01", + "HZM-UP-01", + "FLD-DL-01", + "FLD-DL-05", + "WFR-DL-02", + "QKE-DL-02", + "QKE-DL-03", + "HZM-DL-02", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 30.9, + "SurgeCapacity": 6440.0, + "Cost": 56.55, + "ActivationTime": 3.4682 + }, + "allocations": null, + "content_signature": "52185c8d08be", + "sensitivity": null + }, + { + "solution_id": 32, + "selected_options": [ + "FLD-NB-06", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-04", + "FLD-HR-06", + "WFR-HR-05", + "STM-HR-02", + "STM-HR-04", + "HZM-HR-02", + "HZM-HR-04", + "FLD-UP-02", + "FLD-UP-06", + "QKE-UP-04", + "STM-UP-04", + "HZM-UP-04", + "FLD-DL-01", + "FLD-DL-05", + "FLD-DL-06", + "WFR-DL-02", + "QKE-DL-02", + "HZM-DL-02", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 30.9, + "SurgeCapacity": 8294.0, + "Cost": 37.32, + "ActivationTime": 7.0227 + }, + "allocations": null, + "content_signature": "36ef1afe977b", + "sensitivity": null + }, + { + "solution_id": 33, + "selected_options": [ + "FLD-NB-06", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-04", + "FLD-HR-06", + "WFR-HR-03", + "STM-HR-02", + "STM-HR-05", + "HZM-HR-04", + "FLD-UP-02", + "FLD-UP-06", + "WFR-UP-01", + "QKE-UP-04", + "STM-UP-04", + "HZM-UP-01", + "FLD-DL-01", + "FLD-DL-05", + "WFR-DL-01", + "WFR-DL-02", + "QKE-DL-02", + "QKE-DL-03", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 27.2, + "SurgeCapacity": 8131.0, + "Cost": 47.7, + "ActivationTime": 5.7091 + }, + "allocations": null, + "content_signature": "6cc6fdc2c48c", + "sensitivity": null + }, + { + "solution_id": 34, + "selected_options": [ + "FLD-NB-06", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-04", + "FLD-HR-06", + "WFR-HR-05", + "STM-HR-02", + "STM-HR-03", + "STM-HR-04", + "STM-HR-05", + "HZM-HR-04", + "FLD-UP-02", + "FLD-UP-06", + "QKE-UP-04", + "STM-UP-04", + "HZM-UP-04", + "FLD-DL-01", + "FLD-DL-05", + "FLD-DL-06", + "WFR-DL-01", + "WFR-DL-02", + "WFR-DL-05", + "QKE-DL-02", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 27.2, + "SurgeCapacity": 9834.0, + "Cost": 44.59, + "ActivationTime": 7.0417 + }, + "allocations": null, + "content_signature": "1c1d7c7a8ecb", + "sensitivity": null + }, + { + "solution_id": 35, + "selected_options": [ + "FLD-NB-06", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-04", + "FLD-HR-02", + "WFR-HR-05", + "STM-HR-02", + "STM-HR-03", + "STM-HR-05", + "HZM-HR-04", + "FLD-UP-02", + "FLD-UP-06", + "WFR-UP-01", + "QKE-UP-04", + "STM-UP-04", + "HZM-UP-01", + "FLD-DL-01", + "FLD-DL-05", + "FLD-DL-06", + "WFR-DL-01", + "WFR-DL-02", + "QKE-DL-02", + "QKE-DL-03", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 27.2, + "SurgeCapacity": 9252.0, + "Cost": 54.94, + "ActivationTime": 5.7333 + }, + "allocations": null, + "content_signature": "0c9269ad259b", + "sensitivity": null + }, + { + "solution_id": 36, + "selected_options": [ + "FLD-NB-06", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-04", + "FLD-HR-06", + "WFR-HR-03", + "WFR-HR-05", + "STM-HR-02", + "STM-HR-04", + "STM-HR-05", + "HZM-HR-02", + "FLD-UP-02", + "FLD-UP-06", + "QKE-UP-04", + "STM-UP-04", + "HZM-UP-04", + "FLD-DL-01", + "FLD-DL-05", + "WFR-DL-03", + "WFR-DL-05", + "QKE-DL-02", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 27.2, + "SurgeCapacity": 8151.0, + "Cost": 33.55, + "ActivationTime": 7.0545 + }, + "allocations": null, + "content_signature": "f60d70f1a13e", + "sensitivity": null + }, + { + "solution_id": 37, + "selected_options": [ + "FLD-NB-03", + "FLD-NB-05", + "WFR-NB-03", + "STM-NB-04", + "HZM-NB-02", + "HZM-NB-03", + "WFR-HR-03", + "STM-HR-01", + "STM-HR-02", + "STM-HR-05", + "HZM-HR-02", + "FLD-UP-02", + "FLD-UP-06", + "QKE-UP-04", + "STM-UP-01", + "HZM-UP-01", + "FLD-DL-01", + "FLD-DL-05", + "WFR-DL-03", + "QKE-DL-02", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 27.2, + "SurgeCapacity": 5665.0, + "Cost": 40.88, + "ActivationTime": 4.4429 + }, + "allocations": null, + "content_signature": "38238be2a426", + "sensitivity": null + }, + { + "solution_id": 38, + "selected_options": [ + "FLD-NB-01", + "FLD-NB-05", + "FLD-NB-06", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-04", + "FLD-HR-02", + "WFR-HR-03", + "WFR-HR-05", + "STM-HR-02", + "STM-HR-03", + "STM-HR-05", + "HZM-HR-02", + "FLD-UP-02", + "FLD-UP-06", + "QKE-UP-04", + "STM-UP-01", + "HZM-UP-01", + "FLD-DL-01", + "WFR-DL-01", + "WFR-DL-02", + "QKE-DL-02", + "QKE-DL-03", + "HZM-DL-01" + ], + "objective_values": { + "Readiness": 27.2, + "SurgeCapacity": 8081.0, + "Cost": 57.8, + "ActivationTime": 4.3542 + }, + "allocations": null, + "content_signature": "4da43cac2820", + "sensitivity": null + }, + { + "solution_id": 39, + "selected_options": [ + "FLD-NB-03", + "FLD-NB-05", + "HZM-NB-01", + "HZM-NB-02", + "HZM-NB-03", + "WFR-HR-03", + "WFR-HR-05", + "STM-HR-02", + "STM-HR-04", + "STM-HR-05", + "HZM-HR-02", + "FLD-UP-02", + "FLD-UP-06", + "QKE-UP-04", + "STM-UP-04", + "HZM-UP-04", + "FLD-DL-01", + "FLD-DL-05", + "WFR-DL-03", + "WFR-DL-05", + "QKE-DL-02", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 27.2, + "SurgeCapacity": 6835.0, + "Cost": 39.02, + "ActivationTime": 5.7636 + }, + "allocations": null, + "content_signature": "68fa64eec812", + "sensitivity": null + }, + { + "solution_id": 40, + "selected_options": [ + "FLD-NB-01", + "FLD-NB-05", + "FLD-NB-06", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-02", + "HZM-NB-03", + "WFR-HR-03", + "QKE-HR-02", + "STM-HR-01", + "STM-HR-02", + "STM-HR-05", + "HZM-HR-02", + "FLD-UP-02", + "FLD-UP-06", + "QKE-UP-04", + "STM-UP-01", + "HZM-UP-01", + "FLD-DL-01", + "FLD-DL-05", + "WFR-DL-03", + "QKE-DL-02", + "HZM-DL-01" + ], + "objective_values": { + "Readiness": 27.2, + "SurgeCapacity": 6775.0, + "Cost": 47.67, + "ActivationTime": 4.3739 + }, + "allocations": null, + "content_signature": "6bb924a384d7", + "sensitivity": null + } + ], + "total_pareto_found": 64, + "quality": { + "hypervolume_normalized": 0.4259, + "spacing_cv": 0.7885 + }, + "constraints_snapshot": [ + { + "motivated_by": "", + "type": "objective_bound", + "objective": "Cost", + "operator": "max", + "value": 58.0 + }, + { + "motivated_by": "", + "type": "objective_bound", + "objective": "SurgeCapacity", + "operator": "min", + "value": 4600.0 + }, + { + "motivated_by": "", + "type": "cardinality", + "min": 20, + "max": 24 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "FLD-NB-01", + "FLD-NB-02", + "FLD-NB-03", + "FLD-NB-04", + "FLD-NB-05", + "FLD-NB-06", + "FLD-HR-01", + "FLD-HR-02", + "FLD-HR-03", + "FLD-HR-04", + "FLD-HR-05", + "FLD-HR-06", + "FLD-UP-01", + "FLD-UP-02", + "FLD-UP-03", + "FLD-UP-04", + "FLD-UP-05", + "FLD-UP-06", + "FLD-DL-01", + "FLD-DL-02", + "FLD-DL-03", + "FLD-DL-04", + "FLD-DL-05", + "FLD-DL-06" + ], + "min": 2, + "max": 7 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "WFR-NB-01", + "WFR-NB-02", + "WFR-NB-03", + "WFR-NB-04", + "WFR-NB-05", + "WFR-HR-01", + "WFR-HR-02", + "WFR-HR-03", + "WFR-HR-04", + "WFR-HR-05", + "WFR-UP-01", + "WFR-UP-02", + "WFR-UP-03", + "WFR-UP-04", + "WFR-UP-05", + "WFR-DL-01", + "WFR-DL-02", + "WFR-DL-03", + "WFR-DL-04", + "WFR-DL-05" + ], + "min": 2, + "max": 7 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "QKE-NB-01", + "QKE-NB-02", + "QKE-NB-03", + "QKE-NB-04", + "QKE-HR-01", + "QKE-HR-02", + "QKE-HR-03", + "QKE-HR-04", + "QKE-UP-01", + "QKE-UP-02", + "QKE-UP-03", + "QKE-UP-04", + "QKE-DL-01", + "QKE-DL-02", + "QKE-DL-03", + "QKE-DL-04" + ], + "min": 2, + "max": 7 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "STM-NB-01", + "STM-NB-02", + "STM-NB-03", + "STM-NB-04", + "STM-NB-05", + "STM-HR-01", + "STM-HR-02", + "STM-HR-03", + "STM-HR-04", + "STM-HR-05", + "STM-UP-01", + "STM-UP-02", + "STM-UP-03", + "STM-UP-04", + "STM-UP-05", + "STM-DL-01", + "STM-DL-02", + "STM-DL-03", + "STM-DL-04", + "STM-DL-05" + ], + "min": 2, + "max": 7 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "HZM-NB-01", + "HZM-NB-02", + "HZM-NB-03", + "HZM-NB-04", + "HZM-HR-01", + "HZM-HR-02", + "HZM-HR-03", + "HZM-HR-04", + "HZM-UP-01", + "HZM-UP-02", + "HZM-UP-03", + "HZM-UP-04", + "HZM-DL-01", + "HZM-DL-02", + "HZM-DL-03", + "HZM-DL-04" + ], + "min": 2, + "max": 7 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "FLD-NB-01", + "FLD-NB-02", + "FLD-NB-03", + "FLD-NB-04", + "FLD-NB-05", + "FLD-NB-06", + "WFR-NB-01", + "WFR-NB-02", + "WFR-NB-03", + "WFR-NB-04", + "WFR-NB-05", + "QKE-NB-01", + "QKE-NB-02", + "QKE-NB-03", + "QKE-NB-04", + "STM-NB-01", + "STM-NB-02", + "STM-NB-03", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-01", + "HZM-NB-02", + "HZM-NB-03", + "HZM-NB-04" + ], + "min": 3, + "max": 8 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "FLD-HR-01", + "FLD-HR-02", + "FLD-HR-03", + "FLD-HR-04", + "FLD-HR-05", + "FLD-HR-06", + "WFR-HR-01", + "WFR-HR-02", + "WFR-HR-03", + "WFR-HR-04", + "WFR-HR-05", + "QKE-HR-01", + "QKE-HR-02", + "QKE-HR-03", + "QKE-HR-04", + "STM-HR-01", + "STM-HR-02", + "STM-HR-03", + "STM-HR-04", + "STM-HR-05", + "HZM-HR-01", + "HZM-HR-02", + "HZM-HR-03", + "HZM-HR-04" + ], + "min": 3, + "max": 8 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "FLD-UP-01", + "FLD-UP-02", + "FLD-UP-03", + "FLD-UP-04", + "FLD-UP-05", + "FLD-UP-06", + "WFR-UP-01", + "WFR-UP-02", + "WFR-UP-03", + "WFR-UP-04", + "WFR-UP-05", + "QKE-UP-01", + "QKE-UP-02", + "QKE-UP-03", + "QKE-UP-04", + "STM-UP-01", + "STM-UP-02", + "STM-UP-03", + "STM-UP-04", + "STM-UP-05", + "HZM-UP-01", + "HZM-UP-02", + "HZM-UP-03", + "HZM-UP-04" + ], + "min": 3, + "max": 8 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "FLD-DL-01", + "FLD-DL-02", + "FLD-DL-03", + "FLD-DL-04", + "FLD-DL-05", + "FLD-DL-06", + "WFR-DL-01", + "WFR-DL-02", + "WFR-DL-03", + "WFR-DL-04", + "WFR-DL-05", + "QKE-DL-01", + "QKE-DL-02", + "QKE-DL-03", + "QKE-DL-04", + "STM-DL-01", + "STM-DL-02", + "STM-DL-03", + "STM-DL-04", + "STM-DL-05", + "HZM-DL-01", + "HZM-DL-02", + "HZM-DL-03", + "HZM-DL-04" + ], + "min": 3, + "max": 8 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "FLD-NB-01", + "FLD-NB-02", + "FLD-HR-01", + "FLD-HR-02", + "FLD-UP-01", + "FLD-UP-02", + "FLD-DL-01", + "FLD-DL-02" + ], + "min": 2, + "max": 8 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "HZM-NB-01", + "HZM-NB-02", + "HZM-NB-03", + "HZM-NB-04" + ], + "min": 1, + "max": 4 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "HZM-HR-01", + "HZM-HR-02", + "HZM-HR-03", + "HZM-HR-04" + ], + "min": 1, + "max": 4 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "HZM-UP-01", + "HZM-UP-02", + "HZM-UP-03", + "HZM-UP-04" + ], + "min": 1, + "max": 4 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "HZM-DL-01", + "HZM-DL-02", + "HZM-DL-03", + "HZM-DL-04" + ], + "min": 1, + "max": 4 + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "FLD-NB-02", + "option_b": "WFR-NB-02" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "QKE-NB-01", + "option_b": "HZM-NB-01" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "FLD-HR-02", + "option_b": "WFR-HR-02" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "QKE-HR-01", + "option_b": "HZM-HR-01" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "FLD-UP-02", + "option_b": "WFR-UP-02" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "QKE-UP-01", + "option_b": "HZM-UP-01" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "FLD-DL-02", + "option_b": "WFR-DL-02" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "QKE-DL-01", + "option_b": "HZM-DL-01" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "FLD-NB-04", + "then_option": "FLD-NB-03" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "WFR-NB-04", + "then_option": "WFR-NB-03" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "QKE-NB-03", + "then_option": "QKE-NB-02" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "STM-NB-03", + "then_option": "STM-NB-02" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "HZM-NB-03", + "then_option": "HZM-NB-02" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "FLD-HR-04", + "then_option": "FLD-HR-03" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "WFR-HR-04", + "then_option": "WFR-HR-03" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "QKE-HR-03", + "then_option": "QKE-HR-02" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "STM-HR-03", + "then_option": "STM-HR-02" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "HZM-HR-03", + "then_option": "HZM-HR-02" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "FLD-UP-04", + "then_option": "FLD-UP-03" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "WFR-UP-04", + "then_option": "WFR-UP-03" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "QKE-UP-03", + "then_option": "QKE-UP-02" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "STM-UP-03", + "then_option": "STM-UP-02" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "HZM-UP-03", + "then_option": "HZM-UP-02" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "FLD-DL-04", + "then_option": "FLD-DL-03" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "WFR-DL-04", + "then_option": "WFR-DL-03" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "QKE-DL-03", + "then_option": "QKE-DL-02" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "STM-DL-03", + "then_option": "STM-DL-02" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "HZM-DL-03", + "then_option": "HZM-DL-02" + } + ], + "seed_used": 42, + "solver": "nsga-iii", + "exact": false, + "time_limit": null, + "time_limited": false, + "solve_fingerprint": null, + "problem_snapshot": { + "n_options": 96, + "n_objectives": 4, + "n_scores": 384, + "approach": "binary", + "aggregation_mix": { + "min": 1, + "sum": 2, + "avg": 1 + }, + "constraint_type_counts": { + "objective_bound": 2, + "cardinality": 1, + "group_limit": 14, + "exclusion_pair": 8, + "dependency": 20 + }, + "interaction_matrix": false, + "scenarios": 2, + "exact_fits": false, + "exact_fits_reason": "the exact MILP optimizes additive (sum) objectives, and on this binary selection Readiness, ActivationTime use avg, min aggregation \u2014 avg is fractional over a variable-size pick; min is nonlinear \u2014 outside the exact scope. Redefine these as sum to certify, or keep the aggregation and explore with the NSGA heuristic." + } + }, + "scenario_run": { + "scenario_runs": { + "concurrent_season": { + "run_id": "cebc7859-546d-42a3-811d-f5ceaff662f6", + "created_at": "2026-08-03T21:17:54.970606Z", + "mode": "fast", + "solutions": [ + { + "solution_id": 1, + "selected_options": [ + "WFR-NB-02", + "WFR-NB-03", + "STM-NB-04", + "HZM-NB-01", + "WFR-HR-02", + "WFR-HR-05", + "STM-HR-01", + "STM-HR-02", + "HZM-HR-01", + "FLD-UP-01", + "WFR-UP-03", + "STM-UP-01", + "HZM-UP-01", + "FLD-DL-01", + "FLD-DL-03", + "WFR-DL-05", + "QKE-DL-02", + "QKE-DL-04", + "STM-DL-02", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 32.6, + "SurgeCapacity": 5292.0, + "Cost": 47.24, + "ActivationTime": 4.02 + }, + "allocations": null, + "content_signature": "91a8f30e71d9", + "sensitivity": null + }, + { + "solution_id": 2, + "selected_options": [ + "WFR-NB-05", + "STM-NB-02", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-04", + "FLD-HR-06", + "WFR-HR-05", + "QKE-HR-02", + "STM-HR-01", + "HZM-HR-01", + "FLD-UP-01", + "FLD-UP-06", + "WFR-UP-02", + "QKE-UP-02", + "STM-UP-04", + "HZM-UP-04", + "FLD-DL-02", + "FLD-DL-03", + "QKE-DL-02", + "QKE-DL-04", + "STM-DL-02", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 32.6, + "SurgeCapacity": 6793.0, + "Cost": 40.67, + "ActivationTime": 6.4955 + }, + "allocations": null, + "content_signature": "64efd6e9581f", + "sensitivity": null + }, + { + "solution_id": 3, + "selected_options": [ + "FLD-NB-05", + "WFR-NB-01", + "WFR-NB-02", + "WFR-NB-05", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-04", + "FLD-HR-06", + "WFR-HR-05", + "STM-HR-04", + "HZM-HR-01", + "FLD-UP-01", + "FLD-UP-06", + "QKE-UP-04", + "HZM-UP-01", + "FLD-DL-01", + "FLD-DL-03", + "WFR-DL-05", + "QKE-DL-02", + "QKE-DL-04", + "STM-DL-02", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 32.6, + "SurgeCapacity": 7824.0, + "Cost": 44.92, + "ActivationTime": 6.6818 + }, + "allocations": null, + "content_signature": "e45228720723", + "sensitivity": null + }, + { + "solution_id": 4, + "selected_options": [ + "WFR-NB-01", + "WFR-NB-02", + "QKE-NB-01", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-04", + "WFR-HR-02", + "WFR-HR-05", + "STM-HR-01", + "HZM-HR-01", + "FLD-UP-01", + "FLD-UP-06", + "WFR-UP-02", + "QKE-UP-02", + "STM-UP-04", + "HZM-UP-04", + "FLD-DL-01", + "WFR-DL-05", + "QKE-DL-02", + "QKE-DL-04", + "STM-DL-02", + "STM-DL-03", + "STM-DL-05", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 32.6, + "SurgeCapacity": 8281.0, + "Cost": 57.66, + "ActivationTime": 5.6667 + }, + "allocations": null, + "content_signature": "acc0f964d588", + "sensitivity": null + }, + { + "solution_id": 5, + "selected_options": [ + "FLD-NB-05", + "WFR-NB-01", + "WFR-NB-02", + "STM-NB-04", + "HZM-NB-01", + "HZM-NB-04", + "WFR-HR-02", + "WFR-HR-05", + "STM-HR-01", + "STM-HR-02", + "HZM-HR-01", + "FLD-UP-01", + "WFR-UP-03", + "STM-UP-01", + "HZM-UP-01", + "FLD-DL-01", + "FLD-DL-03", + "WFR-DL-05", + "QKE-DL-02", + "QKE-DL-04", + "STM-DL-02", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 32.6, + "SurgeCapacity": 6370.0, + "Cost": 53.37, + "ActivationTime": 4.5591 + }, + "allocations": null, + "content_signature": "93074700c36b", + "sensitivity": null + }, + { + "solution_id": 6, + "selected_options": [ + "WFR-NB-05", + "STM-NB-02", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-04", + "FLD-HR-06", + "WFR-HR-05", + "QKE-HR-04", + "STM-HR-04", + "HZM-HR-04", + "FLD-UP-02", + "FLD-UP-06", + "QKE-UP-04", + "STM-UP-04", + "HZM-UP-04", + "FLD-DL-02", + "FLD-DL-03", + "WFR-DL-05", + "QKE-DL-02", + "QKE-DL-04", + "STM-DL-02", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 32.6, + "SurgeCapacity": 7964.0, + "Cost": 33.76, + "ActivationTime": 8.2909 + }, + "allocations": null, + "content_signature": "59dcb3ddeeac", + "sensitivity": null + }, + { + "solution_id": 7, + "selected_options": [ + "WFR-NB-05", + "STM-NB-02", + "STM-NB-04", + "HZM-NB-04", + "FLD-HR-06", + "WFR-HR-05", + "STM-HR-04", + "HZM-HR-04", + "FLD-UP-02", + "FLD-UP-06", + "WFR-UP-03", + "QKE-UP-02", + "HZM-UP-04", + "FLD-DL-02", + "FLD-DL-03", + "QKE-DL-02", + "QKE-DL-04", + "STM-DL-02", + "STM-DL-05", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 32.6, + "SurgeCapacity": 6282.0, + "Cost": 29.97, + "ActivationTime": 7.7 + }, + "allocations": null, + "content_signature": "bf8f3cd20832", + "sensitivity": null + }, + { + "solution_id": 8, + "selected_options": [ + "WFR-NB-02", + "WFR-NB-03", + "WFR-NB-05", + "QKE-NB-02", + "STM-NB-04", + "HZM-NB-01", + "WFR-HR-05", + "STM-HR-01", + "STM-HR-02", + "HZM-HR-04", + "FLD-UP-02", + "WFR-UP-03", + "QKE-UP-02", + "STM-UP-04", + "HZM-UP-04", + "FLD-DL-01", + "QKE-DL-02", + "QKE-DL-04", + "STM-DL-02", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 32.6, + "SurgeCapacity": 5331.0, + "Cost": 37.55, + "ActivationTime": 5.685 + }, + "allocations": null, + "content_signature": "d84ca6db6232", + "sensitivity": null + }, + { + "solution_id": 9, + "selected_options": [ + "WFR-NB-02", + "WFR-NB-03", + "WFR-NB-05", + "QKE-NB-02", + "STM-NB-04", + "HZM-NB-01", + "WFR-HR-02", + "WFR-HR-05", + "STM-HR-01", + "HZM-HR-04", + "FLD-UP-02", + "WFR-UP-03", + "STM-UP-04", + "HZM-UP-04", + "FLD-DL-01", + "WFR-DL-05", + "QKE-DL-02", + "QKE-DL-04", + "STM-DL-02", + "STM-DL-04", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 30.5, + "SurgeCapacity": 6506.0, + "Cost": 42.03, + "ActivationTime": 5.7524 + }, + "allocations": null, + "content_signature": "885e8882b312", + "sensitivity": null + }, + { + "solution_id": 10, + "selected_options": [ + "WFR-NB-05", + "STM-NB-02", + "STM-NB-04", + "HZM-NB-01", + "WFR-HR-05", + "STM-HR-01", + "STM-HR-02", + "HZM-HR-04", + "FLD-UP-02", + "FLD-UP-06", + "QKE-UP-04", + "STM-UP-04", + "HZM-UP-04", + "FLD-DL-01", + "WFR-DL-05", + "QKE-DL-02", + "QKE-DL-04", + "STM-DL-02", + "STM-DL-04", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 30.5, + "SurgeCapacity": 6805.0, + "Cost": 35.39, + "ActivationTime": 6.64 + }, + "allocations": null, + "content_signature": "ee9b9a366d44", + "sensitivity": null + }, + { + "solution_id": 11, + "selected_options": [ + "WFR-NB-05", + "STM-NB-02", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-04", + "WFR-HR-05", + "STM-HR-02", + "HZM-HR-04", + "FLD-UP-02", + "FLD-UP-06", + "WFR-UP-03", + "QKE-UP-02", + "HZM-UP-04", + "FLD-DL-02", + "FLD-DL-03", + "QKE-DL-02", + "QKE-DL-04", + "STM-DL-02", + "STM-DL-04", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 30.5, + "SurgeCapacity": 5896.0, + "Cost": 28.92, + "ActivationTime": 6.915 + }, + "allocations": null, + "content_signature": "ae3f5e450009", + "sensitivity": null + }, + { + "solution_id": 12, + "selected_options": [ + "WFR-NB-01", + "WFR-NB-03", + "WFR-NB-05", + "STM-NB-04", + "HZM-NB-01", + "WFR-HR-02", + "WFR-HR-05", + "STM-HR-01", + "STM-HR-02", + "HZM-HR-01", + "FLD-UP-01", + "WFR-UP-03", + "QKE-UP-02", + "HZM-UP-04", + "FLD-DL-02", + "FLD-DL-03", + "QKE-DL-02", + "STM-DL-02", + "STM-DL-04", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 30.5, + "SurgeCapacity": 5131.0, + "Cost": 41.72, + "ActivationTime": 4.505 + }, + "allocations": null, + "content_signature": "70a40d31aa66", + "sensitivity": null + }, + { + "solution_id": 13, + "selected_options": [ + "WFR-NB-01", + "WFR-NB-02", + "STM-NB-04", + "HZM-NB-01", + "WFR-HR-02", + "WFR-HR-05", + "STM-HR-01", + "STM-HR-02", + "HZM-HR-01", + "FLD-UP-01", + "WFR-UP-03", + "STM-UP-01", + "HZM-UP-01", + "FLD-DL-01", + "FLD-DL-03", + "QKE-DL-02", + "QKE-DL-04", + "STM-DL-02", + "STM-DL-04", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 30.5, + "SurgeCapacity": 5446.0, + "Cost": 49.62, + "ActivationTime": 3.455 + }, + "allocations": null, + "content_signature": "47e167360077", + "sensitivity": null + }, + { + "solution_id": 14, + "selected_options": [ + "WFR-NB-05", + "STM-NB-02", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-01", + "WFR-HR-02", + "WFR-HR-05", + "QKE-HR-02", + "HZM-HR-04", + "FLD-UP-02", + "WFR-UP-03", + "QKE-UP-02", + "HZM-UP-04", + "FLD-DL-02", + "FLD-DL-03", + "QKE-DL-02", + "QKE-DL-04", + "STM-DL-02", + "STM-DL-04", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 30.5, + "SurgeCapacity": 5493.0, + "Cost": 34.47, + "ActivationTime": 5.75 + }, + "allocations": null, + "content_signature": "fa73f869867a", + "sensitivity": null + }, + { + "solution_id": 15, + "selected_options": [ + "WFR-NB-01", + "WFR-NB-02", + "STM-NB-04", + "HZM-NB-01", + "WFR-HR-02", + "WFR-HR-05", + "STM-HR-01", + "HZM-HR-01", + "FLD-UP-01", + "FLD-UP-02", + "FLD-UP-06", + "STM-UP-01", + "HZM-UP-01", + "FLD-DL-01", + "FLD-DL-02", + "FLD-DL-03", + "QKE-DL-02", + "QKE-DL-04", + "STM-DL-02", + "STM-DL-04", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 30.5, + "SurgeCapacity": 6318.0, + "Cost": 56.46, + "ActivationTime": 3.4095 + }, + "allocations": null, + "content_signature": "3b2c7eecedf2", + "sensitivity": null + }, + { + "solution_id": 16, + "selected_options": [ + "WFR-NB-01", + "WFR-NB-02", + "WFR-NB-05", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-04", + "FLD-HR-06", + "WFR-HR-05", + "QKE-HR-04", + "STM-HR-04", + "HZM-HR-04", + "FLD-UP-02", + "FLD-UP-06", + "QKE-UP-04", + "STM-UP-04", + "HZM-UP-04", + "FLD-DL-01", + "WFR-DL-05", + "QKE-DL-02", + "QKE-DL-04", + "STM-DL-02", + "STM-DL-03", + "STM-DL-04", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 30.5, + "SurgeCapacity": 9381.0, + "Cost": 45.32, + "ActivationTime": 7.6 + }, + "allocations": null, + "content_signature": "edaa8c7388da", + "sensitivity": null + }, + { + "solution_id": 17, + "selected_options": [ + "WFR-NB-01", + "WFR-NB-02", + "QKE-NB-01", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-04", + "FLD-HR-06", + "WFR-HR-02", + "WFR-HR-05", + "STM-HR-01", + "HZM-HR-01", + "FLD-UP-01", + "WFR-UP-03", + "STM-UP-01", + "HZM-UP-01", + "FLD-DL-01", + "FLD-DL-03", + "QKE-DL-02", + "QKE-DL-04", + "STM-DL-02", + "STM-DL-03", + "STM-DL-04", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 30.5, + "SurgeCapacity": 7233.0, + "Cost": 57.07, + "ActivationTime": 4.5304 + }, + "allocations": null, + "content_signature": "09f5cff4f653", + "sensitivity": null + }, + { + "solution_id": 18, + "selected_options": [ + "WFR-NB-02", + "WFR-NB-03", + "WFR-NB-05", + "QKE-NB-02", + "STM-NB-04", + "HZM-NB-01", + "WFR-HR-02", + "WFR-HR-05", + "STM-HR-01", + "HZM-HR-04", + "FLD-UP-02", + "WFR-UP-03", + "QKE-UP-02", + "QKE-UP-04", + "STM-UP-04", + "HZM-UP-04", + "FLD-DL-01", + "WFR-DL-05", + "QKE-DL-02", + "QKE-DL-04", + "STM-DL-02", + "STM-DL-03", + "STM-DL-04", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 30.5, + "SurgeCapacity": 7483.0, + "Cost": 48.89, + "ActivationTime": 5.7042 + }, + "allocations": null, + "content_signature": "cc785047c939", + "sensitivity": null + }, + { + "solution_id": 19, + "selected_options": [ + "WFR-NB-05", + "STM-NB-02", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-04", + "FLD-HR-06", + "WFR-HR-05", + "QKE-HR-04", + "STM-HR-04", + "HZM-HR-04", + "FLD-UP-02", + "FLD-UP-06", + "QKE-UP-04", + "STM-UP-04", + "HZM-UP-04", + "FLD-DL-01", + "WFR-DL-05", + "QKE-DL-02", + "QKE-DL-04", + "STM-DL-02", + "STM-DL-04", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 30.5, + "SurgeCapacity": 8447.0, + "Cost": 34.33, + "ActivationTime": 8.2455 + }, + "allocations": null, + "content_signature": "93bd64efbc8e", + "sensitivity": null + }, + { + "solution_id": 20, + "selected_options": [ + "WFR-NB-01", + "WFR-NB-02", + "WFR-NB-05", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-04", + "FLD-HR-06", + "WFR-HR-05", + "QKE-HR-04", + "HZM-HR-04", + "FLD-UP-02", + "WFR-UP-03", + "STM-UP-04", + "HZM-UP-04", + "FLD-DL-01", + "FLD-DL-03", + "QKE-DL-02", + "QKE-DL-04", + "STM-DL-02", + "STM-DL-03", + "STM-DL-04", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 30.5, + "SurgeCapacity": 7587.0, + "Cost": 41.31, + "ActivationTime": 6.95 + }, + "allocations": null, + "content_signature": "50bb70cf93e2", + "sensitivity": null + }, + { + "solution_id": 21, + "selected_options": [ + "WFR-NB-05", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-04", + "FLD-HR-06", + "WFR-HR-05", + "QKE-HR-04", + "STM-HR-04", + "HZM-HR-04", + "FLD-UP-02", + "FLD-UP-05", + "FLD-UP-06", + "QKE-UP-04", + "STM-UP-04", + "HZM-UP-04", + "FLD-DL-01", + "WFR-DL-05", + "QKE-DL-02", + "QKE-DL-04", + "STM-DL-02", + "STM-DL-05", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 28.4, + "SurgeCapacity": 8750.0, + "Cost": 34.92, + "ActivationTime": 8.8409 + }, + "allocations": null, + "content_signature": "066b628493d0", + "sensitivity": null + }, + { + "solution_id": 22, + "selected_options": [ + "WFR-NB-05", + "STM-NB-04", + "HZM-NB-01", + "WFR-HR-02", + "WFR-HR-05", + "STM-HR-01", + "HZM-HR-01", + "FLD-UP-01", + "FLD-UP-02", + "FLD-UP-05", + "FLD-UP-06", + "QKE-UP-02", + "HZM-UP-01", + "FLD-DL-01", + "FLD-DL-03", + "QKE-DL-02", + "QKE-DL-04", + "STM-DL-02", + "STM-DL-04", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 28.4, + "SurgeCapacity": 6158.0, + "Cost": 45.83, + "ActivationTime": 4.49 + }, + "allocations": null, + "content_signature": "83685abac568", + "sensitivity": null + }, + { + "solution_id": 23, + "selected_options": [ + "WFR-NB-01", + "WFR-NB-02", + "QKE-NB-01", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-04", + "WFR-HR-05", + "STM-HR-01", + "HZM-HR-01", + "FLD-UP-02", + "FLD-UP-05", + "FLD-UP-06", + "QKE-UP-04", + "STM-UP-04", + "HZM-UP-04", + "FLD-DL-01", + "WFR-DL-05", + "QKE-DL-02", + "QKE-DL-04", + "STM-DL-02", + "STM-DL-03", + "STM-DL-04", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 28.4, + "SurgeCapacity": 8407.0, + "Cost": 50.9, + "ActivationTime": 6.1478 + }, + "allocations": null, + "content_signature": "6e0bb5b09135", + "sensitivity": null + }, + { + "solution_id": 24, + "selected_options": [ + "WFR-NB-01", + "WFR-NB-02", + "QKE-NB-01", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-04", + "WFR-HR-05", + "STM-HR-01", + "HZM-HR-01", + "FLD-UP-02", + "FLD-UP-05", + "FLD-UP-06", + "STM-UP-01", + "HZM-UP-01", + "FLD-DL-01", + "QKE-DL-02", + "QKE-DL-04", + "STM-DL-02", + "STM-DL-03", + "STM-DL-04", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 28.4, + "SurgeCapacity": 7195.0, + "Cost": 52.43, + "ActivationTime": 4.7619 + }, + "allocations": null, + "content_signature": "a4569d405fba", + "sensitivity": null + }, + { + "solution_id": 25, + "selected_options": [ + "WFR-NB-05", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-04", + "WFR-HR-05", + "QKE-HR-02", + "STM-HR-02", + "HZM-HR-01", + "FLD-UP-02", + "FLD-UP-05", + "FLD-UP-06", + "STM-UP-01", + "HZM-UP-01", + "FLD-DL-01", + "FLD-DL-03", + "QKE-DL-02", + "QKE-DL-04", + "STM-DL-02", + "STM-DL-04", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 28.4, + "SurgeCapacity": 6361.0, + "Cost": 37.28, + "ActivationTime": 5.94 + }, + "allocations": null, + "content_signature": "4ab646b16691", + "sensitivity": null + }, + { + "solution_id": 26, + "selected_options": [ + "WFR-NB-01", + "WFR-NB-02", + "WFR-NB-05", + "STM-NB-04", + "HZM-NB-01", + "WFR-HR-02", + "WFR-HR-05", + "STM-HR-01", + "HZM-HR-01", + "FLD-UP-01", + "FLD-UP-02", + "FLD-UP-05", + "FLD-UP-06", + "QKE-UP-02", + "STM-UP-04", + "HZM-UP-04", + "FLD-DL-01", + "WFR-DL-05", + "QKE-DL-02", + "QKE-DL-04", + "STM-DL-02", + "STM-DL-03", + "STM-DL-04", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 28.4, + "SurgeCapacity": 8157.0, + "Cost": 56.77, + "ActivationTime": 5.0917 + }, + "allocations": null, + "content_signature": "5135c81b3b73", + "sensitivity": null + }, + { + "solution_id": 27, + "selected_options": [ + "WFR-NB-01", + "WFR-NB-03", + "WFR-NB-05", + "STM-NB-04", + "HZM-NB-01", + "WFR-HR-02", + "WFR-HR-05", + "STM-HR-04", + "HZM-HR-04", + "FLD-UP-02", + "FLD-UP-05", + "FLD-UP-06", + "QKE-UP-04", + "STM-UP-04", + "HZM-UP-04", + "FLD-DL-01", + "FLD-DL-02", + "FLD-DL-03", + "QKE-DL-02", + "STM-DL-02", + "STM-DL-04", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 28.4, + "SurgeCapacity": 7330.0, + "Cost": 43.04, + "ActivationTime": 6.2136 + }, + "allocations": null, + "content_signature": "e41107d0365d", + "sensitivity": null + }, + { + "solution_id": 28, + "selected_options": [ + "WFR-NB-05", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-04", + "WFR-HR-05", + "STM-HR-01", + "STM-HR-02", + "STM-HR-04", + "HZM-HR-04", + "FLD-UP-02", + "FLD-UP-05", + "FLD-UP-06", + "WFR-UP-03", + "QKE-UP-02", + "HZM-UP-04", + "FLD-DL-02", + "FLD-DL-03", + "WFR-DL-05", + "QKE-DL-02", + "QKE-DL-04", + "STM-DL-02", + "STM-DL-04", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 28.4, + "SurgeCapacity": 7580.0, + "Cost": 35.65, + "ActivationTime": 7.0739 + }, + "allocations": null, + "content_signature": "2fab867a76cc", + "sensitivity": null + }, + { + "solution_id": 29, + "selected_options": [ + "WFR-NB-01", + "WFR-NB-02", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-04", + "FLD-HR-06", + "WFR-HR-05", + "STM-HR-04", + "HZM-HR-04", + "FLD-UP-02", + "FLD-UP-05", + "FLD-UP-06", + "QKE-UP-04", + "HZM-UP-04", + "FLD-DL-01", + "WFR-DL-05", + "QKE-DL-02", + "QKE-DL-04", + "STM-DL-02", + "STM-DL-03", + "STM-DL-04", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 28.4, + "SurgeCapacity": 8463.0, + "Cost": 42.25, + "ActivationTime": 7.3545 + }, + "allocations": null, + "content_signature": "6aa8982db884", + "sensitivity": null + }, + { + "solution_id": 30, + "selected_options": [ + "WFR-NB-05", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-04", + "FLD-HR-06", + "WFR-HR-05", + "HZM-HR-04", + "FLD-UP-02", + "FLD-UP-06", + "QKE-UP-04", + "STM-UP-04", + "HZM-UP-04", + "FLD-DL-01", + "FLD-DL-05", + "FLD-DL-06", + "QKE-DL-02", + "QKE-DL-04", + "STM-DL-02", + "STM-DL-05", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 25.5, + "SurgeCapacity": 7968.0, + "Cost": 32.01, + "ActivationTime": 9.3 + }, + "allocations": null, + "content_signature": "84e70439f992", + "sensitivity": null + }, + { + "solution_id": 31, + "selected_options": [ + "WFR-NB-05", + "STM-NB-02", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-04", + "FLD-HR-06", + "WFR-HR-05", + "QKE-HR-04", + "STM-HR-04", + "HZM-HR-04", + "FLD-UP-02", + "FLD-UP-05", + "FLD-UP-06", + "QKE-UP-04", + "STM-UP-04", + "HZM-UP-04", + "FLD-DL-01", + "FLD-DL-05", + "FLD-DL-06", + "QKE-DL-02", + "QKE-DL-04", + "STM-DL-02", + "STM-DL-05", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 25.5, + "SurgeCapacity": 9284.0, + "Cost": 36.56, + "ActivationTime": 9.0042 + }, + "allocations": null, + "content_signature": "1c0c65fb4056", + "sensitivity": null + }, + { + "solution_id": 32, + "selected_options": [ + "WFR-NB-02", + "WFR-NB-03", + "WFR-NB-05", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-04", + "FLD-HR-06", + "WFR-HR-05", + "STM-HR-04", + "HZM-HR-01", + "FLD-UP-01", + "FLD-UP-05", + "FLD-UP-06", + "QKE-UP-04", + "STM-UP-04", + "HZM-UP-04", + "FLD-DL-01", + "FLD-DL-05", + "FLD-DL-06", + "QKE-DL-02", + "QKE-DL-04", + "STM-DL-01", + "STM-DL-04", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 25.5, + "SurgeCapacity": 9261.0, + "Cost": 44.25, + "ActivationTime": 7.8667 + }, + "allocations": null, + "content_signature": "068078b1d797", + "sensitivity": null + }, + { + "solution_id": 33, + "selected_options": [ + "FLD-NB-06", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-04", + "WFR-HR-05", + "STM-HR-01", + "STM-HR-02", + "HZM-HR-04", + "FLD-UP-02", + "WFR-UP-03", + "QKE-UP-02", + "STM-UP-04", + "HZM-UP-04", + "FLD-DL-02", + "FLD-DL-03", + "QKE-DL-02", + "QKE-DL-04", + "STM-DL-02", + "STM-DL-04", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 24.9, + "SurgeCapacity": 6278.0, + "Cost": 31.61, + "ActivationTime": 6.8 + }, + "allocations": null, + "content_signature": "2bf520d23902", + "sensitivity": null + }, + { + "solution_id": 34, + "selected_options": [ + "FLD-NB-01", + "FLD-NB-06", + "WFR-NB-01", + "WFR-NB-05", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-04", + "FLD-HR-06", + "WFR-HR-05", + "STM-HR-04", + "HZM-HR-01", + "FLD-UP-02", + "FLD-UP-05", + "FLD-UP-06", + "STM-UP-01", + "HZM-UP-04", + "FLD-DL-01", + "WFR-DL-05", + "QKE-DL-02", + "QKE-DL-04", + "STM-DL-02", + "STM-DL-03", + "STM-DL-04", + "HZM-DL-01" + ], + "objective_values": { + "Readiness": 24.9, + "SurgeCapacity": 9167.0, + "Cost": 50.52, + "ActivationTime": 6.4792 + }, + "allocations": null, + "content_signature": "9eba31f28e9a", + "sensitivity": null + }, + { + "solution_id": 35, + "selected_options": [ + "FLD-NB-01", + "WFR-NB-02", + "WFR-NB-03", + "STM-NB-04", + "HZM-NB-01", + "HZM-NB-04", + "FLD-HR-06", + "WFR-HR-05", + "QKE-HR-04", + "STM-HR-04", + "HZM-HR-01", + "FLD-UP-01", + "WFR-UP-03", + "STM-UP-01", + "HZM-UP-01", + "FLD-DL-01", + "FLD-DL-03", + "QKE-DL-02", + "QKE-DL-04", + "STM-DL-02", + "STM-DL-04", + "HZM-DL-02" + ], + "objective_values": { + "Readiness": 24.1, + "SurgeCapacity": 6398.0, + "Cost": 48.34, + "ActivationTime": 4.9 + }, + "allocations": null, + "content_signature": "a7e547006313", + "sensitivity": null + }, + { + "solution_id": 36, + "selected_options": [ + "FLD-NB-01", + "WFR-NB-02", + "WFR-NB-03", + "STM-NB-04", + "HZM-NB-01", + "WFR-HR-02", + "WFR-HR-05", + "STM-HR-01", + "STM-HR-02", + "HZM-HR-01", + "FLD-UP-01", + "FLD-UP-02", + "FLD-UP-06", + "STM-UP-01", + "HZM-UP-01", + "FLD-DL-01", + "FLD-DL-02", + "FLD-DL-03", + "QKE-DL-02", + "QKE-DL-04", + "STM-DL-02", + "STM-DL-04", + "HZM-DL-02" + ], + "objective_values": { + "Readiness": 24.1, + "SurgeCapacity": 6214.0, + "Cost": 57.29, + "ActivationTime": 3.2783 + }, + "allocations": null, + "content_signature": "65ebe3677cd0", + "sensitivity": null + }, + { + "solution_id": 37, + "selected_options": [ + "FLD-NB-01", + "WFR-NB-02", + "WFR-NB-03", + "STM-NB-04", + "HZM-NB-01", + "WFR-HR-02", + "WFR-HR-05", + "STM-HR-01", + "HZM-HR-01", + "FLD-UP-01", + "WFR-UP-03", + "STM-UP-01", + "HZM-UP-01", + "FLD-DL-01", + "FLD-DL-03", + "QKE-DL-02", + "QKE-DL-04", + "STM-DL-02", + "STM-DL-04", + "HZM-DL-02" + ], + "objective_values": { + "Readiness": 24.1, + "SurgeCapacity": 5176.0, + "Cost": 49.43, + "ActivationTime": 3.185 + }, + "allocations": null, + "content_signature": "e9e710a48192", + "sensitivity": null + }, + { + "solution_id": 38, + "selected_options": [ + "FLD-NB-01", + "WFR-NB-05", + "STM-NB-02", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-04", + "FLD-HR-06", + "WFR-HR-05", + "STM-HR-04", + "HZM-HR-04", + "FLD-UP-02", + "FLD-UP-06", + "QKE-UP-04", + "STM-UP-04", + "HZM-UP-04", + "FLD-DL-01", + "FLD-DL-02", + "FLD-DL-03", + "QKE-DL-02", + "QKE-DL-04", + "STM-DL-02", + "STM-DL-04", + "HZM-DL-02" + ], + "objective_values": { + "Readiness": 24.1, + "SurgeCapacity": 7872.0, + "Cost": 38.49, + "ActivationTime": 7.0696 + }, + "allocations": null, + "content_signature": "885a335ad262", + "sensitivity": null + }, + { + "solution_id": 39, + "selected_options": [ + "FLD-NB-01", + "WFR-NB-02", + "WFR-NB-03", + "STM-NB-04", + "HZM-NB-01", + "WFR-HR-05", + "STM-HR-01", + "STM-HR-02", + "HZM-HR-04", + "FLD-UP-02", + "WFR-UP-03", + "STM-UP-04", + "HZM-UP-04", + "FLD-DL-01", + "FLD-DL-03", + "QKE-DL-02", + "QKE-DL-04", + "STM-DL-02", + "STM-DL-04", + "HZM-DL-02" + ], + "objective_values": { + "Readiness": 24.1, + "SurgeCapacity": 5339.0, + "Cost": 38.66, + "ActivationTime": 4.95 + }, + "allocations": null, + "content_signature": "79b11bfc9a0b", + "sensitivity": null + }, + { + "solution_id": 40, + "selected_options": [ + "FLD-NB-01", + "WFR-NB-01", + "WFR-NB-02", + "QKE-NB-01", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-04", + "FLD-HR-06", + "WFR-HR-05", + "QKE-HR-04", + "STM-HR-04", + "HZM-HR-04", + "FLD-UP-02", + "FLD-UP-06", + "STM-UP-01", + "HZM-UP-01", + "FLD-DL-01", + "FLD-DL-02", + "FLD-DL-03", + "QKE-DL-02", + "QKE-DL-04", + "STM-DL-02", + "STM-DL-04", + "HZM-DL-02" + ], + "objective_values": { + "Readiness": 24.1, + "SurgeCapacity": 7848.0, + "Cost": 53.11, + "ActivationTime": 5.4125 + }, + "allocations": null, + "content_signature": "bc4ba4c3afa8", + "sensitivity": null + } + ], + "total_pareto_found": 70, + "quality": { + "hypervolume_normalized": 0.4843, + "spacing_cv": 1.0656 + }, + "constraints_snapshot": [ + { + "motivated_by": "", + "type": "objective_bound", + "objective": "Cost", + "operator": "max", + "value": 58.0 + }, + { + "motivated_by": "", + "type": "objective_bound", + "objective": "SurgeCapacity", + "operator": "min", + "value": 4600.0 + }, + { + "motivated_by": "", + "type": "cardinality", + "min": 20, + "max": 24 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "FLD-NB-01", + "FLD-NB-02", + "FLD-NB-03", + "FLD-NB-04", + "FLD-NB-05", + "FLD-NB-06", + "FLD-HR-01", + "FLD-HR-02", + "FLD-HR-03", + "FLD-HR-04", + "FLD-HR-05", + "FLD-HR-06", + "FLD-UP-01", + "FLD-UP-02", + "FLD-UP-03", + "FLD-UP-04", + "FLD-UP-05", + "FLD-UP-06", + "FLD-DL-01", + "FLD-DL-02", + "FLD-DL-03", + "FLD-DL-04", + "FLD-DL-05", + "FLD-DL-06" + ], + "min": 2, + "max": 7 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "WFR-NB-01", + "WFR-NB-02", + "WFR-NB-03", + "WFR-NB-04", + "WFR-NB-05", + "WFR-HR-01", + "WFR-HR-02", + "WFR-HR-03", + "WFR-HR-04", + "WFR-HR-05", + "WFR-UP-01", + "WFR-UP-02", + "WFR-UP-03", + "WFR-UP-04", + "WFR-UP-05", + "WFR-DL-01", + "WFR-DL-02", + "WFR-DL-03", + "WFR-DL-04", + "WFR-DL-05" + ], + "min": 2, + "max": 7 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "QKE-NB-01", + "QKE-NB-02", + "QKE-NB-03", + "QKE-NB-04", + "QKE-HR-01", + "QKE-HR-02", + "QKE-HR-03", + "QKE-HR-04", + "QKE-UP-01", + "QKE-UP-02", + "QKE-UP-03", + "QKE-UP-04", + "QKE-DL-01", + "QKE-DL-02", + "QKE-DL-03", + "QKE-DL-04" + ], + "min": 2, + "max": 7 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "STM-NB-01", + "STM-NB-02", + "STM-NB-03", + "STM-NB-04", + "STM-NB-05", + "STM-HR-01", + "STM-HR-02", + "STM-HR-03", + "STM-HR-04", + "STM-HR-05", + "STM-UP-01", + "STM-UP-02", + "STM-UP-03", + "STM-UP-04", + "STM-UP-05", + "STM-DL-01", + "STM-DL-02", + "STM-DL-03", + "STM-DL-04", + "STM-DL-05" + ], + "min": 2, + "max": 7 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "HZM-NB-01", + "HZM-NB-02", + "HZM-NB-03", + "HZM-NB-04", + "HZM-HR-01", + "HZM-HR-02", + "HZM-HR-03", + "HZM-HR-04", + "HZM-UP-01", + "HZM-UP-02", + "HZM-UP-03", + "HZM-UP-04", + "HZM-DL-01", + "HZM-DL-02", + "HZM-DL-03", + "HZM-DL-04" + ], + "min": 2, + "max": 7 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "FLD-NB-01", + "FLD-NB-02", + "FLD-NB-03", + "FLD-NB-04", + "FLD-NB-05", + "FLD-NB-06", + "WFR-NB-01", + "WFR-NB-02", + "WFR-NB-03", + "WFR-NB-04", + "WFR-NB-05", + "QKE-NB-01", + "QKE-NB-02", + "QKE-NB-03", + "QKE-NB-04", + "STM-NB-01", + "STM-NB-02", + "STM-NB-03", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-01", + "HZM-NB-02", + "HZM-NB-03", + "HZM-NB-04" + ], + "min": 3, + "max": 8 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "FLD-HR-01", + "FLD-HR-02", + "FLD-HR-03", + "FLD-HR-04", + "FLD-HR-05", + "FLD-HR-06", + "WFR-HR-01", + "WFR-HR-02", + "WFR-HR-03", + "WFR-HR-04", + "WFR-HR-05", + "QKE-HR-01", + "QKE-HR-02", + "QKE-HR-03", + "QKE-HR-04", + "STM-HR-01", + "STM-HR-02", + "STM-HR-03", + "STM-HR-04", + "STM-HR-05", + "HZM-HR-01", + "HZM-HR-02", + "HZM-HR-03", + "HZM-HR-04" + ], + "min": 3, + "max": 8 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "FLD-UP-01", + "FLD-UP-02", + "FLD-UP-03", + "FLD-UP-04", + "FLD-UP-05", + "FLD-UP-06", + "WFR-UP-01", + "WFR-UP-02", + "WFR-UP-03", + "WFR-UP-04", + "WFR-UP-05", + "QKE-UP-01", + "QKE-UP-02", + "QKE-UP-03", + "QKE-UP-04", + "STM-UP-01", + "STM-UP-02", + "STM-UP-03", + "STM-UP-04", + "STM-UP-05", + "HZM-UP-01", + "HZM-UP-02", + "HZM-UP-03", + "HZM-UP-04" + ], + "min": 3, + "max": 8 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "FLD-DL-01", + "FLD-DL-02", + "FLD-DL-03", + "FLD-DL-04", + "FLD-DL-05", + "FLD-DL-06", + "WFR-DL-01", + "WFR-DL-02", + "WFR-DL-03", + "WFR-DL-04", + "WFR-DL-05", + "QKE-DL-01", + "QKE-DL-02", + "QKE-DL-03", + "QKE-DL-04", + "STM-DL-01", + "STM-DL-02", + "STM-DL-03", + "STM-DL-04", + "STM-DL-05", + "HZM-DL-01", + "HZM-DL-02", + "HZM-DL-03", + "HZM-DL-04" + ], + "min": 3, + "max": 8 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "FLD-NB-01", + "FLD-NB-02", + "FLD-HR-01", + "FLD-HR-02", + "FLD-UP-01", + "FLD-UP-02", + "FLD-DL-01", + "FLD-DL-02" + ], + "min": 2, + "max": 8 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "HZM-NB-01", + "HZM-NB-02", + "HZM-NB-03", + "HZM-NB-04" + ], + "min": 1, + "max": 4 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "HZM-HR-01", + "HZM-HR-02", + "HZM-HR-03", + "HZM-HR-04" + ], + "min": 1, + "max": 4 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "HZM-UP-01", + "HZM-UP-02", + "HZM-UP-03", + "HZM-UP-04" + ], + "min": 1, + "max": 4 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "HZM-DL-01", + "HZM-DL-02", + "HZM-DL-03", + "HZM-DL-04" + ], + "min": 1, + "max": 4 + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "FLD-NB-02", + "option_b": "WFR-NB-02" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "QKE-NB-01", + "option_b": "HZM-NB-01" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "FLD-HR-02", + "option_b": "WFR-HR-02" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "QKE-HR-01", + "option_b": "HZM-HR-01" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "FLD-UP-02", + "option_b": "WFR-UP-02" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "QKE-UP-01", + "option_b": "HZM-UP-01" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "FLD-DL-02", + "option_b": "WFR-DL-02" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "QKE-DL-01", + "option_b": "HZM-DL-01" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "FLD-NB-04", + "then_option": "FLD-NB-03" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "WFR-NB-04", + "then_option": "WFR-NB-03" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "QKE-NB-03", + "then_option": "QKE-NB-02" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "STM-NB-03", + "then_option": "STM-NB-02" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "HZM-NB-03", + "then_option": "HZM-NB-02" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "FLD-HR-04", + "then_option": "FLD-HR-03" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "WFR-HR-04", + "then_option": "WFR-HR-03" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "QKE-HR-03", + "then_option": "QKE-HR-02" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "STM-HR-03", + "then_option": "STM-HR-02" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "HZM-HR-03", + "then_option": "HZM-HR-02" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "FLD-UP-04", + "then_option": "FLD-UP-03" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "WFR-UP-04", + "then_option": "WFR-UP-03" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "QKE-UP-03", + "then_option": "QKE-UP-02" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "STM-UP-03", + "then_option": "STM-UP-02" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "HZM-UP-03", + "then_option": "HZM-UP-02" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "FLD-DL-04", + "then_option": "FLD-DL-03" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "WFR-DL-04", + "then_option": "WFR-DL-03" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "QKE-DL-03", + "then_option": "QKE-DL-02" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "STM-DL-03", + "then_option": "STM-DL-02" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "HZM-DL-03", + "then_option": "HZM-DL-02" + } + ], + "seed_used": 1281644631, + "solver": "nsga-iii", + "exact": false, + "time_limit": null, + "time_limited": false, + "solve_fingerprint": null, + "problem_snapshot": { + "n_options": 96, + "n_objectives": 4, + "n_scores": 384, + "approach": "binary", + "aggregation_mix": { + "min": 1, + "sum": 2, + "avg": 1 + }, + "constraint_type_counts": { + "objective_bound": 2, + "cardinality": 1, + "group_limit": 14, + "exclusion_pair": 8, + "dependency": 20 + }, + "interaction_matrix": false, + "scenarios": 0, + "exact_fits": false, + "exact_fits_reason": "the exact MILP optimizes additive (sum) objectives, and on this binary selection Readiness, ActivationTime use avg, min aggregation \u2014 avg is fractional over a variable-size pick; min is nonlinear \u2014 outside the exact scope. Redefine these as sum to certify, or keep the aggregation and explore with the NSGA heuristic." + } + }, + "dual_hazmat_rule": { + "run_id": "20c21937-96a8-4529-befa-992b655c7843", + "created_at": "2026-08-03T21:17:54.977269Z", + "mode": "fast", + "solutions": [ + { + "solution_id": 1, + "selected_options": [ + "WFR-NB-03", + "QKE-NB-01", + "HZM-NB-02", + "HZM-NB-03", + "FLD-HR-01", + "FLD-HR-03", + "QKE-HR-02", + "STM-HR-01", + "HZM-HR-02", + "HZM-HR-04", + "WFR-UP-01", + "WFR-UP-02", + "STM-UP-02", + "HZM-UP-02", + "HZM-UP-03", + "FLD-DL-01", + "FLD-DL-02", + "FLD-DL-05", + "STM-DL-01", + "STM-DL-02", + "HZM-DL-01", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 38.2, + "SurgeCapacity": 5188.0, + "Cost": 54.31, + "ActivationTime": 3.2318 + }, + "allocations": null, + "content_signature": "4aa138efcbda", + "sensitivity": null + }, + { + "solution_id": 2, + "selected_options": [ + "WFR-NB-03", + "QKE-NB-02", + "STM-NB-02", + "HZM-NB-02", + "HZM-NB-04", + "FLD-HR-01", + "FLD-HR-03", + "QKE-HR-02", + "STM-HR-02", + "STM-HR-04", + "HZM-HR-02", + "HZM-HR-04", + "FLD-UP-06", + "WFR-UP-02", + "STM-UP-04", + "HZM-UP-02", + "HZM-UP-04", + "FLD-DL-01", + "FLD-DL-02", + "FLD-DL-05", + "STM-DL-02", + "HZM-DL-01", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 38.2, + "SurgeCapacity": 5773.0, + "Cost": 40.5, + "ActivationTime": 5.0043 + }, + "allocations": null, + "content_signature": "9eca58cf5908", + "sensitivity": null + }, + { + "solution_id": 3, + "selected_options": [ + "WFR-NB-03", + "QKE-NB-02", + "HZM-NB-02", + "HZM-NB-04", + "FLD-HR-01", + "FLD-HR-03", + "QKE-HR-02", + "STM-HR-04", + "HZM-HR-02", + "HZM-HR-04", + "WFR-UP-03", + "STM-UP-02", + "STM-UP-04", + "HZM-UP-02", + "HZM-UP-04", + "FLD-DL-02", + "FLD-DL-05", + "STM-DL-02", + "HZM-DL-01", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 38.2, + "SurgeCapacity": 4606.0, + "Cost": 31.51, + "ActivationTime": 5.295 + }, + "allocations": null, + "content_signature": "68fcf59a5841", + "sensitivity": null + }, + { + "solution_id": 4, + "selected_options": [ + "WFR-NB-03", + "QKE-NB-02", + "STM-NB-02", + "HZM-NB-02", + "HZM-NB-03", + "FLD-HR-01", + "FLD-HR-03", + "QKE-HR-02", + "STM-HR-01", + "STM-HR-04", + "HZM-HR-02", + "HZM-HR-04", + "FLD-UP-06", + "WFR-UP-02", + "STM-UP-04", + "HZM-UP-02", + "HZM-UP-04", + "FLD-DL-02", + "FLD-DL-03", + "FLD-DL-05", + "STM-DL-01", + "STM-DL-02", + "HZM-DL-01", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 38.2, + "SurgeCapacity": 5962.0, + "Cost": 46.0, + "ActivationTime": 4.4208 + }, + "allocations": null, + "content_signature": "bcc7367352ba", + "sensitivity": null + }, + { + "solution_id": 5, + "selected_options": [ + "FLD-NB-06", + "WFR-NB-03", + "QKE-NB-02", + "HZM-NB-02", + "HZM-NB-03", + "FLD-HR-01", + "FLD-HR-03", + "QKE-HR-02", + "HZM-HR-02", + "HZM-HR-04", + "FLD-UP-06", + "WFR-UP-03", + "STM-UP-02", + "HZM-UP-02", + "HZM-UP-03", + "FLD-DL-01", + "FLD-DL-02", + "STM-DL-01", + "STM-DL-02", + "HZM-DL-01", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 37.7, + "SurgeCapacity": 4653.0, + "Cost": 42.35, + "ActivationTime": 3.9762 + }, + "allocations": null, + "content_signature": "7de137f21b7f", + "sensitivity": null + }, + { + "solution_id": 6, + "selected_options": [ + "FLD-NB-06", + "WFR-NB-03", + "QKE-NB-01", + "HZM-NB-02", + "HZM-NB-03", + "FLD-HR-01", + "FLD-HR-03", + "QKE-HR-02", + "STM-HR-01", + "HZM-HR-02", + "HZM-HR-04", + "FLD-UP-06", + "WFR-UP-01", + "WFR-UP-02", + "STM-UP-04", + "HZM-UP-01", + "HZM-UP-04", + "FLD-DL-01", + "FLD-DL-02", + "STM-DL-01", + "STM-DL-02", + "HZM-DL-01", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 37.7, + "SurgeCapacity": 6367.0, + "Cost": 56.61, + "ActivationTime": 3.8348 + }, + "allocations": null, + "content_signature": "ef48d07bcf37", + "sensitivity": null + }, + { + "solution_id": 7, + "selected_options": [ + "FLD-NB-06", + "WFR-NB-03", + "QKE-NB-01", + "HZM-NB-02", + "HZM-NB-03", + "FLD-HR-01", + "FLD-HR-03", + "QKE-HR-02", + "STM-HR-01", + "STM-HR-04", + "HZM-HR-02", + "HZM-HR-04", + "FLD-UP-06", + "WFR-UP-02", + "STM-UP-04", + "HZM-UP-01", + "HZM-UP-04", + "FLD-DL-01", + "FLD-DL-02", + "FLD-DL-05", + "STM-DL-01", + "STM-DL-02", + "HZM-DL-01", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 37.7, + "SurgeCapacity": 7103.0, + "Cost": 55.35, + "ActivationTime": 4.2708 + }, + "allocations": null, + "content_signature": "d34f42496cf0", + "sensitivity": null + }, + { + "solution_id": 8, + "selected_options": [ + "FLD-NB-06", + "WFR-NB-03", + "QKE-NB-02", + "HZM-NB-02", + "HZM-NB-04", + "FLD-HR-02", + "FLD-HR-03", + "WFR-HR-05", + "QKE-HR-02", + "STM-HR-04", + "HZM-HR-02", + "HZM-HR-04", + "FLD-UP-06", + "WFR-UP-03", + "STM-UP-04", + "HZM-UP-02", + "HZM-UP-04", + "FLD-DL-02", + "FLD-DL-03", + "FLD-DL-05", + "STM-DL-01", + "STM-DL-02", + "HZM-DL-01", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 37.6, + "SurgeCapacity": 6531.0, + "Cost": 39.37, + "ActivationTime": 5.4875 + }, + "allocations": null, + "content_signature": "630f1116d5f3", + "sensitivity": null + }, + { + "solution_id": 9, + "selected_options": [ + "WFR-NB-03", + "QKE-NB-04", + "HZM-NB-02", + "HZM-NB-03", + "FLD-HR-01", + "FLD-HR-03", + "QKE-HR-02", + "STM-HR-04", + "HZM-HR-02", + "HZM-HR-04", + "WFR-UP-03", + "HZM-UP-02", + "HZM-UP-04", + "FLD-DL-02", + "FLD-DL-03", + "FLD-DL-05", + "STM-DL-01", + "STM-DL-02", + "HZM-DL-01", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 35.9, + "SurgeCapacity": 4710.0, + "Cost": 36.59, + "ActivationTime": 4.695 + }, + "allocations": null, + "content_signature": "eb7b786079fd", + "sensitivity": null + }, + { + "solution_id": 10, + "selected_options": [ + "FLD-NB-06", + "WFR-NB-03", + "QKE-NB-04", + "STM-NB-04", + "HZM-NB-02", + "HZM-NB-04", + "FLD-HR-01", + "FLD-HR-03", + "WFR-HR-05", + "QKE-HR-02", + "STM-HR-04", + "HZM-HR-02", + "HZM-HR-04", + "FLD-UP-06", + "WFR-UP-03", + "STM-UP-04", + "HZM-UP-02", + "HZM-UP-04", + "FLD-DL-02", + "FLD-DL-05", + "FLD-DL-06", + "STM-DL-02", + "HZM-DL-01", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 35.9, + "SurgeCapacity": 7405.0, + "Cost": 37.91, + "ActivationTime": 6.2583 + }, + "allocations": null, + "content_signature": "eaf2d7245b5a", + "sensitivity": null + }, + { + "solution_id": 11, + "selected_options": [ + "FLD-NB-06", + "WFR-NB-03", + "QKE-NB-04", + "HZM-NB-02", + "HZM-NB-04", + "FLD-HR-01", + "FLD-HR-03", + "QKE-HR-02", + "STM-HR-04", + "HZM-HR-02", + "HZM-HR-04", + "FLD-UP-06", + "WFR-UP-02", + "STM-UP-04", + "HZM-UP-01", + "HZM-UP-04", + "FLD-DL-01", + "FLD-DL-02", + "FLD-DL-05", + "STM-DL-01", + "STM-DL-02", + "HZM-DL-01", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 35.9, + "SurgeCapacity": 7094.0, + "Cost": 47.07, + "ActivationTime": 5.1739 + }, + "allocations": null, + "content_signature": "bd49c27772d2", + "sensitivity": null + }, + { + "solution_id": 12, + "selected_options": [ + "WFR-NB-03", + "QKE-NB-04", + "HZM-NB-02", + "HZM-NB-03", + "FLD-HR-01", + "FLD-HR-03", + "QKE-HR-02", + "STM-HR-01", + "HZM-HR-02", + "HZM-HR-04", + "WFR-UP-01", + "WFR-UP-02", + "HZM-UP-02", + "HZM-UP-03", + "FLD-DL-01", + "FLD-DL-02", + "STM-DL-01", + "STM-DL-02", + "HZM-DL-01", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 35.9, + "SurgeCapacity": 4752.0, + "Cost": 49.98, + "ActivationTime": 3.395 + }, + "allocations": null, + "content_signature": "d1713b17bd34", + "sensitivity": null + }, + { + "solution_id": 13, + "selected_options": [ + "WFR-NB-03", + "QKE-NB-04", + "HZM-NB-02", + "HZM-NB-03", + "FLD-HR-01", + "FLD-HR-03", + "QKE-HR-02", + "STM-HR-01", + "STM-HR-04", + "HZM-HR-02", + "HZM-HR-04", + "FLD-UP-06", + "WFR-UP-02", + "STM-UP-04", + "HZM-UP-01", + "HZM-UP-04", + "FLD-DL-01", + "FLD-DL-02", + "FLD-DL-05", + "STM-DL-02", + "HZM-DL-01", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 35.9, + "SurgeCapacity": 6349.0, + "Cost": 48.26, + "ActivationTime": 4.5818 + }, + "allocations": null, + "content_signature": "4759a46b0ec3", + "sensitivity": null + }, + { + "solution_id": 14, + "selected_options": [ + "FLD-NB-06", + "WFR-NB-03", + "QKE-NB-04", + "HZM-NB-02", + "HZM-NB-04", + "FLD-HR-01", + "FLD-HR-03", + "QKE-HR-02", + "STM-HR-04", + "HZM-HR-02", + "HZM-HR-04", + "WFR-UP-03", + "STM-UP-04", + "HZM-UP-02", + "HZM-UP-04", + "FLD-DL-02", + "FLD-DL-05", + "STM-DL-02", + "HZM-DL-01", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 35.9, + "SurgeCapacity": 5473.0, + "Cost": 32.82, + "ActivationTime": 5.815 + }, + "allocations": null, + "content_signature": "c13e68f6f5f3", + "sensitivity": null + }, + { + "solution_id": 15, + "selected_options": [ + "WFR-NB-03", + "QKE-NB-04", + "HZM-NB-02", + "HZM-NB-03", + "FLD-HR-01", + "FLD-HR-03", + "QKE-HR-02", + "STM-HR-01", + "HZM-HR-02", + "HZM-HR-04", + "FLD-UP-06", + "WFR-UP-02", + "HZM-UP-02", + "HZM-UP-03", + "FLD-DL-01", + "FLD-DL-02", + "FLD-DL-05", + "STM-DL-01", + "STM-DL-02", + "HZM-DL-01", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 35.9, + "SurgeCapacity": 5474.0, + "Cost": 48.94, + "ActivationTime": 3.8571 + }, + "allocations": null, + "content_signature": "1cb8add15ddd", + "sensitivity": null + }, + { + "solution_id": 16, + "selected_options": [ + "FLD-NB-06", + "WFR-NB-03", + "QKE-NB-04", + "HZM-NB-02", + "HZM-NB-03", + "FLD-HR-01", + "FLD-HR-03", + "QKE-HR-02", + "STM-HR-01", + "HZM-HR-02", + "HZM-HR-04", + "FLD-UP-06", + "WFR-UP-02", + "STM-UP-02", + "HZM-UP-02", + "HZM-UP-04", + "FLD-DL-02", + "FLD-DL-03", + "FLD-DL-05", + "STM-DL-02", + "HZM-DL-01", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 35.9, + "SurgeCapacity": 5580.0, + "Cost": 42.11, + "ActivationTime": 4.5591 + }, + "allocations": null, + "content_signature": "249bb4cd5b56", + "sensitivity": null + }, + { + "solution_id": 17, + "selected_options": [ + "FLD-NB-06", + "WFR-NB-03", + "QKE-NB-02", + "HZM-NB-02", + "HZM-NB-03", + "FLD-HR-02", + "FLD-HR-03", + "WFR-HR-05", + "QKE-HR-02", + "STM-HR-04", + "HZM-HR-02", + "HZM-HR-04", + "FLD-UP-06", + "WFR-UP-02", + "HZM-UP-02", + "HZM-UP-03", + "FLD-DL-01", + "FLD-DL-02", + "FLD-DL-05", + "STM-DL-01", + "STM-DL-02", + "STM-DL-05", + "HZM-DL-01", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 33.8, + "SurgeCapacity": 6865.0, + "Cost": 50.22, + "ActivationTime": 4.6875 + }, + "allocations": null, + "content_signature": "ef3e22dbdde2", + "sensitivity": null + }, + { + "solution_id": 18, + "selected_options": [ + "FLD-NB-06", + "WFR-NB-03", + "QKE-NB-02", + "HZM-NB-02", + "HZM-NB-04", + "FLD-HR-01", + "FLD-HR-03", + "WFR-HR-05", + "QKE-HR-02", + "STM-HR-04", + "HZM-HR-02", + "HZM-HR-04", + "FLD-UP-06", + "WFR-UP-03", + "STM-UP-02", + "HZM-UP-02", + "HZM-UP-04", + "FLD-DL-02", + "FLD-DL-03", + "FLD-DL-05", + "STM-DL-02", + "STM-DL-05", + "HZM-DL-01", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 33.8, + "SurgeCapacity": 6217.0, + "Cost": 36.25, + "ActivationTime": 5.6417 + }, + "allocations": null, + "content_signature": "42a06ca26d21", + "sensitivity": null + }, + { + "solution_id": 19, + "selected_options": [ + "FLD-NB-06", + "WFR-NB-03", + "QKE-NB-04", + "HZM-NB-02", + "HZM-NB-04", + "FLD-HR-01", + "FLD-HR-03", + "WFR-HR-05", + "QKE-HR-02", + "STM-HR-01", + "STM-HR-04", + "HZM-HR-02", + "HZM-HR-04", + "FLD-UP-06", + "WFR-UP-02", + "STM-UP-04", + "HZM-UP-02", + "HZM-UP-04", + "FLD-DL-02", + "FLD-DL-05", + "STM-DL-02", + "STM-DL-05", + "HZM-DL-01", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 33.8, + "SurgeCapacity": 7466.0, + "Cost": 43.24, + "ActivationTime": 5.8333 + }, + "allocations": null, + "content_signature": "1175c4413f97", + "sensitivity": null + }, + { + "solution_id": 20, + "selected_options": [ + "FLD-NB-06", + "WFR-NB-03", + "QKE-NB-02", + "HZM-NB-02", + "HZM-NB-03", + "FLD-HR-02", + "FLD-HR-03", + "QKE-HR-02", + "STM-HR-01", + "HZM-HR-02", + "HZM-HR-04", + "FLD-UP-06", + "WFR-UP-02", + "HZM-UP-02", + "HZM-UP-03", + "FLD-DL-01", + "FLD-DL-02", + "FLD-DL-05", + "STM-DL-01", + "STM-DL-02", + "STM-DL-05", + "HZM-DL-01", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 33.8, + "SurgeCapacity": 6190.0, + "Cost": 51.05, + "ActivationTime": 4.1783 + }, + "allocations": null, + "content_signature": "895e54656979", + "sensitivity": null + }, + { + "solution_id": 21, + "selected_options": [ + "FLD-NB-06", + "WFR-NB-03", + "QKE-NB-04", + "HZM-NB-02", + "HZM-NB-04", + "FLD-HR-01", + "FLD-HR-03", + "WFR-HR-05", + "QKE-HR-02", + "STM-HR-04", + "HZM-HR-02", + "HZM-HR-04", + "FLD-UP-06", + "WFR-UP-03", + "STM-UP-02", + "STM-UP-04", + "HZM-UP-02", + "HZM-UP-04", + "FLD-DL-02", + "FLD-DL-05", + "STM-DL-02", + "STM-DL-05", + "HZM-DL-01", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 33.8, + "SurgeCapacity": 6944.0, + "Cost": 37.01, + "ActivationTime": 6.125 + }, + "allocations": null, + "content_signature": "01699f2e455b", + "sensitivity": null + }, + { + "solution_id": 22, + "selected_options": [ + "FLD-NB-06", + "WFR-NB-03", + "QKE-NB-04", + "HZM-NB-02", + "HZM-NB-04", + "FLD-HR-01", + "FLD-HR-03", + "QKE-HR-02", + "STM-HR-04", + "HZM-HR-02", + "HZM-HR-04", + "WFR-UP-03", + "HZM-UP-02", + "HZM-UP-04", + "FLD-DL-02", + "FLD-DL-03", + "STM-DL-02", + "STM-DL-05", + "HZM-DL-02", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 30.9, + "SurgeCapacity": 4898.0, + "Cost": 30.28, + "ActivationTime": 5.8 + }, + "allocations": null, + "content_signature": "4a8ee6a1382a", + "sensitivity": null + }, + { + "solution_id": 23, + "selected_options": [ + "FLD-NB-06", + "WFR-NB-03", + "QKE-NB-04", + "HZM-NB-02", + "HZM-NB-04", + "FLD-HR-01", + "FLD-HR-03", + "WFR-HR-05", + "QKE-HR-02", + "STM-HR-04", + "HZM-HR-02", + "HZM-HR-04", + "FLD-UP-06", + "WFR-UP-02", + "WFR-UP-05", + "STM-UP-04", + "HZM-UP-02", + "HZM-UP-04", + "FLD-DL-02", + "FLD-DL-05", + "STM-DL-02", + "STM-DL-05", + "HZM-DL-02", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 30.9, + "SurgeCapacity": 7491.0, + "Cost": 39.63, + "ActivationTime": 6.225 + }, + "allocations": null, + "content_signature": "34e0d9fc2fd1", + "sensitivity": null + }, + { + "solution_id": 24, + "selected_options": [ + "FLD-NB-01", + "WFR-NB-03", + "QKE-NB-02", + "QKE-NB-04", + "STM-NB-02", + "HZM-NB-02", + "HZM-NB-03", + "FLD-HR-02", + "FLD-HR-03", + "QKE-HR-02", + "STM-HR-01", + "HZM-HR-02", + "HZM-HR-04", + "FLD-UP-06", + "WFR-UP-02", + "STM-UP-02", + "HZM-UP-02", + "HZM-UP-04", + "FLD-DL-02", + "FLD-DL-05", + "STM-DL-02", + "HZM-DL-01", + "HZM-DL-02" + ], + "objective_values": { + "Readiness": 30.9, + "SurgeCapacity": 5063.0, + "Cost": 45.14, + "ActivationTime": 4.0522 + }, + "allocations": null, + "content_signature": "3e0c775d47e6", + "sensitivity": null + }, + { + "solution_id": 25, + "selected_options": [ + "FLD-NB-01", + "WFR-NB-03", + "QKE-NB-04", + "HZM-NB-02", + "HZM-NB-04", + "FLD-HR-02", + "FLD-HR-03", + "WFR-HR-05", + "QKE-HR-02", + "STM-HR-04", + "HZM-HR-02", + "HZM-HR-04", + "FLD-UP-06", + "WFR-UP-03", + "STM-UP-02", + "STM-UP-04", + "HZM-UP-02", + "HZM-UP-03", + "FLD-DL-01", + "FLD-DL-02", + "FLD-DL-05", + "STM-DL-02", + "HZM-DL-01", + "HZM-DL-02" + ], + "objective_values": { + "Readiness": 30.9, + "SurgeCapacity": 6227.0, + "Cost": 44.31, + "ActivationTime": 4.9583 + }, + "allocations": null, + "content_signature": "656f3de69558", + "sensitivity": null + }, + { + "solution_id": 26, + "selected_options": [ + "FLD-NB-03", + "WFR-NB-03", + "QKE-NB-02", + "STM-NB-02", + "HZM-NB-02", + "HZM-NB-04", + "FLD-HR-01", + "FLD-HR-03", + "QKE-HR-02", + "STM-HR-04", + "HZM-HR-02", + "HZM-HR-04", + "WFR-UP-01", + "WFR-UP-02", + "STM-UP-02", + "HZM-UP-02", + "HZM-UP-04", + "FLD-DL-02", + "FLD-DL-03", + "FLD-DL-05", + "STM-DL-02", + "STM-DL-05", + "HZM-DL-02", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 30.9, + "SurgeCapacity": 5282.0, + "Cost": 38.78, + "ActivationTime": 5.0 + }, + "allocations": null, + "content_signature": "2158d72e4ede", + "sensitivity": null + }, + { + "solution_id": 27, + "selected_options": [ + "FLD-NB-06", + "WFR-NB-03", + "QKE-NB-01", + "QKE-NB-04", + "HZM-NB-02", + "HZM-NB-04", + "FLD-HR-01", + "FLD-HR-03", + "WFR-HR-05", + "STM-HR-01", + "HZM-HR-02", + "HZM-HR-04", + "FLD-UP-06", + "WFR-UP-02", + "HZM-UP-01", + "HZM-UP-04", + "FLD-DL-01", + "FLD-DL-02", + "FLD-DL-05", + "STM-DL-02", + "STM-DL-04", + "STM-DL-05", + "HZM-DL-01", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 30.5, + "SurgeCapacity": 7661.0, + "Cost": 51.05, + "ActivationTime": 4.9458 + }, + "allocations": null, + "content_signature": "62fc6fe8b040", + "sensitivity": null + }, + { + "solution_id": 28, + "selected_options": [ + "WFR-NB-03", + "QKE-NB-02", + "HZM-NB-02", + "HZM-NB-04", + "FLD-HR-01", + "FLD-HR-03", + "QKE-HR-02", + "HZM-HR-02", + "HZM-HR-04", + "FLD-UP-06", + "WFR-UP-03", + "STM-UP-02", + "HZM-UP-02", + "HZM-UP-04", + "FLD-DL-02", + "FLD-DL-05", + "STM-DL-02", + "STM-DL-04", + "HZM-DL-01", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 30.5, + "SurgeCapacity": 4606.0, + "Cost": 31.52, + "ActivationTime": 4.905 + }, + "allocations": null, + "content_signature": "0760f7bbfabc", + "sensitivity": null + }, + { + "solution_id": 29, + "selected_options": [ + "WFR-NB-03", + "QKE-NB-02", + "HZM-NB-02", + "HZM-NB-03", + "FLD-HR-01", + "FLD-HR-03", + "QKE-HR-02", + "STM-HR-01", + "HZM-HR-02", + "HZM-HR-04", + "FLD-UP-06", + "WFR-UP-02", + "STM-UP-02", + "HZM-UP-02", + "HZM-UP-04", + "FLD-DL-02", + "FLD-DL-03", + "STM-DL-02", + "STM-DL-04", + "HZM-DL-01", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 30.5, + "SurgeCapacity": 4604.0, + "Cost": 39.92, + "ActivationTime": 3.881 + }, + "allocations": null, + "content_signature": "5c8b4634b4e7", + "sensitivity": null + }, + { + "solution_id": 30, + "selected_options": [ + "FLD-NB-01", + "WFR-NB-03", + "QKE-NB-02", + "HZM-NB-02", + "HZM-NB-03", + "FLD-HR-02", + "FLD-HR-03", + "QKE-HR-02", + "STM-HR-01", + "HZM-HR-02", + "HZM-HR-04", + "WFR-UP-01", + "WFR-UP-02", + "HZM-UP-01", + "HZM-UP-04", + "FLD-DL-01", + "FLD-DL-02", + "FLD-DL-03", + "STM-DL-01", + "STM-DL-02", + "STM-DL-04", + "HZM-DL-01", + "HZM-DL-02" + ], + "objective_values": { + "Readiness": 30.5, + "SurgeCapacity": 5254.0, + "Cost": 54.91, + "ActivationTime": 3.0 + }, + "allocations": null, + "content_signature": "2ed09e19a82a", + "sensitivity": null + }, + { + "solution_id": 31, + "selected_options": [ + "FLD-NB-01", + "WFR-NB-03", + "QKE-NB-02", + "HZM-NB-02", + "HZM-NB-03", + "FLD-HR-02", + "FLD-HR-03", + "QKE-HR-02", + "STM-HR-01", + "HZM-HR-02", + "HZM-HR-04", + "WFR-UP-03", + "HZM-UP-01", + "HZM-UP-04", + "FLD-DL-01", + "FLD-DL-02", + "FLD-DL-03", + "STM-DL-01", + "STM-DL-02", + "STM-DL-04", + "HZM-DL-01", + "HZM-DL-02" + ], + "objective_values": { + "Readiness": 30.5, + "SurgeCapacity": 4661.0, + "Cost": 47.82, + "ActivationTime": 3.2182 + }, + "allocations": null, + "content_signature": "89611024eb15", + "sensitivity": null + }, + { + "solution_id": 32, + "selected_options": [ + "WFR-NB-03", + "QKE-NB-04", + "HZM-NB-02", + "HZM-NB-03", + "FLD-HR-02", + "FLD-HR-03", + "QKE-HR-02", + "STM-HR-04", + "HZM-HR-02", + "HZM-HR-04", + "FLD-UP-06", + "WFR-UP-02", + "STM-UP-05", + "HZM-UP-02", + "HZM-UP-03", + "FLD-DL-01", + "FLD-DL-02", + "FLD-DL-05", + "STM-DL-02", + "STM-DL-04", + "STM-DL-05", + "HZM-DL-01", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 28.0, + "SurgeCapacity": 6713.0, + "Cost": 46.32, + "ActivationTime": 4.8739 + }, + "allocations": null, + "content_signature": "2d8084261fe9", + "sensitivity": null + }, + { + "solution_id": 33, + "selected_options": [ + "FLD-NB-06", + "WFR-NB-03", + "QKE-NB-02", + "QKE-NB-04", + "HZM-NB-02", + "HZM-NB-04", + "FLD-HR-01", + "FLD-HR-03", + "QKE-HR-02", + "STM-HR-04", + "HZM-HR-02", + "HZM-HR-04", + "FLD-UP-06", + "WFR-UP-02", + "STM-UP-05", + "HZM-UP-02", + "HZM-UP-04", + "FLD-DL-02", + "FLD-DL-03", + "FLD-DL-05", + "STM-DL-02", + "STM-DL-05", + "HZM-DL-02", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 28.0, + "SurgeCapacity": 6694.0, + "Cost": 38.35, + "ActivationTime": 5.875 + }, + "allocations": null, + "content_signature": "ab429fff01ad", + "sensitivity": null + }, + { + "solution_id": 34, + "selected_options": [ + "FLD-NB-06", + "WFR-NB-03", + "QKE-NB-01", + "HZM-NB-02", + "HZM-NB-03", + "FLD-HR-02", + "FLD-HR-03", + "QKE-HR-02", + "STM-HR-01", + "HZM-HR-02", + "HZM-HR-04", + "WFR-UP-01", + "WFR-UP-02", + "QKE-UP-04", + "STM-UP-05", + "HZM-UP-02", + "HZM-UP-03", + "FLD-DL-01", + "FLD-DL-02", + "FLD-DL-05", + "STM-DL-02", + "STM-DL-04", + "HZM-DL-01", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 28.0, + "SurgeCapacity": 6713.0, + "Cost": 55.62, + "ActivationTime": 4.0958 + }, + "allocations": null, + "content_signature": "f2e91d47b3ff", + "sensitivity": null + }, + { + "solution_id": 35, + "selected_options": [ + "WFR-NB-03", + "QKE-NB-02", + "HZM-NB-02", + "HZM-NB-03", + "FLD-HR-02", + "FLD-HR-03", + "QKE-HR-02", + "STM-HR-04", + "HZM-HR-02", + "HZM-HR-04", + "WFR-UP-03", + "STM-UP-02", + "STM-UP-05", + "HZM-UP-02", + "HZM-UP-03", + "FLD-DL-01", + "FLD-DL-02", + "STM-DL-01", + "STM-DL-02", + "STM-DL-04", + "HZM-DL-01", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 28.0, + "SurgeCapacity": 4993.0, + "Cost": 42.61, + "ActivationTime": 4.0455 + }, + "allocations": null, + "content_signature": "c059d6e76cf5", + "sensitivity": null + }, + { + "solution_id": 36, + "selected_options": [ + "FLD-NB-06", + "WFR-NB-03", + "QKE-NB-04", + "HZM-NB-02", + "HZM-NB-03", + "FLD-HR-01", + "FLD-HR-03", + "QKE-HR-02", + "STM-HR-01", + "HZM-HR-02", + "HZM-HR-04", + "WFR-UP-03", + "STM-UP-02", + "STM-UP-05", + "HZM-UP-02", + "HZM-UP-03", + "FLD-DL-01", + "FLD-DL-02", + "STM-DL-01", + "STM-DL-02", + "STM-DL-04", + "HZM-DL-01", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 28.0, + "SurgeCapacity": 5694.0, + "Cost": 46.45, + "ActivationTime": 4.1174 + }, + "allocations": null, + "content_signature": "207da45935a8", + "sensitivity": null + }, + { + "solution_id": 37, + "selected_options": [ + "FLD-NB-06", + "WFR-NB-03", + "QKE-NB-04", + "HZM-NB-02", + "HZM-NB-03", + "FLD-HR-01", + "FLD-HR-03", + "QKE-HR-02", + "STM-HR-04", + "STM-HR-05", + "HZM-HR-02", + "HZM-HR-04", + "WFR-UP-03", + "STM-UP-02", + "STM-UP-04", + "HZM-UP-02", + "HZM-UP-04", + "FLD-DL-02", + "FLD-DL-03", + "STM-DL-01", + "STM-DL-02", + "HZM-DL-01", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 27.2, + "SurgeCapacity": 5719.0, + "Cost": 39.01, + "ActivationTime": 5.0913 + }, + "allocations": null, + "content_signature": "aedbe00c2685", + "sensitivity": null + }, + { + "solution_id": 38, + "selected_options": [ + "WFR-NB-03", + "QKE-NB-02", + "STM-NB-02", + "HZM-NB-02", + "HZM-NB-04", + "FLD-HR-01", + "FLD-HR-03", + "QKE-HR-02", + "STM-HR-04", + "STM-HR-05", + "HZM-HR-02", + "HZM-HR-04", + "WFR-UP-03", + "HZM-UP-02", + "HZM-UP-04", + "FLD-DL-02", + "FLD-DL-03", + "FLD-DL-05", + "STM-DL-02", + "HZM-DL-01", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 27.2, + "SurgeCapacity": 4643.0, + "Cost": 32.02, + "ActivationTime": 5.1905 + }, + "allocations": null, + "content_signature": "bc324d716b50", + "sensitivity": null + }, + { + "solution_id": 39, + "selected_options": [ + "FLD-NB-06", + "WFR-NB-03", + "QKE-NB-04", + "HZM-NB-02", + "HZM-NB-04", + "FLD-HR-01", + "FLD-HR-03", + "QKE-HR-02", + "STM-HR-04", + "STM-HR-05", + "HZM-HR-02", + "HZM-HR-04", + "FLD-UP-06", + "WFR-UP-02", + "STM-UP-04", + "HZM-UP-02", + "HZM-UP-03", + "FLD-DL-01", + "FLD-DL-02", + "FLD-DL-05", + "STM-DL-02", + "STM-DL-04", + "HZM-DL-01", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 27.2, + "SurgeCapacity": 7460.0, + "Cost": 45.47, + "ActivationTime": 5.2917 + }, + "allocations": null, + "content_signature": "ed9127ea758e", + "sensitivity": null + }, + { + "solution_id": 40, + "selected_options": [ + "FLD-NB-06", + "WFR-NB-03", + "QKE-NB-04", + "HZM-NB-02", + "HZM-NB-04", + "FLD-HR-01", + "FLD-HR-03", + "STM-HR-05", + "HZM-HR-02", + "HZM-HR-04", + "WFR-UP-03", + "QKE-UP-04", + "STM-UP-05", + "HZM-UP-02", + "HZM-UP-04", + "FLD-DL-02", + "STM-DL-02", + "STM-DL-05", + "HZM-DL-02", + "HZM-DL-04" + ], + "objective_values": { + "Readiness": 27.2, + "SurgeCapacity": 5483.0, + "Cost": 30.34, + "ActivationTime": 6.395 + }, + "allocations": null, + "content_signature": "785b1e4f9a54", + "sensitivity": null + } + ], + "total_pareto_found": 66, + "quality": { + "hypervolume_normalized": 0.4223, + "spacing_cv": 0.9145 + }, + "constraints_snapshot": [ + { + "motivated_by": "", + "type": "objective_bound", + "objective": "Cost", + "operator": "max", + "value": 58.0 + }, + { + "motivated_by": "", + "type": "objective_bound", + "objective": "SurgeCapacity", + "operator": "min", + "value": 4600.0 + }, + { + "motivated_by": "", + "type": "cardinality", + "min": 20, + "max": 24 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "FLD-NB-01", + "FLD-NB-02", + "FLD-NB-03", + "FLD-NB-04", + "FLD-NB-05", + "FLD-NB-06", + "FLD-HR-01", + "FLD-HR-02", + "FLD-HR-03", + "FLD-HR-04", + "FLD-HR-05", + "FLD-HR-06", + "FLD-UP-01", + "FLD-UP-02", + "FLD-UP-03", + "FLD-UP-04", + "FLD-UP-05", + "FLD-UP-06", + "FLD-DL-01", + "FLD-DL-02", + "FLD-DL-03", + "FLD-DL-04", + "FLD-DL-05", + "FLD-DL-06" + ], + "min": 2, + "max": 7 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "WFR-NB-01", + "WFR-NB-02", + "WFR-NB-03", + "WFR-NB-04", + "WFR-NB-05", + "WFR-HR-01", + "WFR-HR-02", + "WFR-HR-03", + "WFR-HR-04", + "WFR-HR-05", + "WFR-UP-01", + "WFR-UP-02", + "WFR-UP-03", + "WFR-UP-04", + "WFR-UP-05", + "WFR-DL-01", + "WFR-DL-02", + "WFR-DL-03", + "WFR-DL-04", + "WFR-DL-05" + ], + "min": 2, + "max": 7 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "QKE-NB-01", + "QKE-NB-02", + "QKE-NB-03", + "QKE-NB-04", + "QKE-HR-01", + "QKE-HR-02", + "QKE-HR-03", + "QKE-HR-04", + "QKE-UP-01", + "QKE-UP-02", + "QKE-UP-03", + "QKE-UP-04", + "QKE-DL-01", + "QKE-DL-02", + "QKE-DL-03", + "QKE-DL-04" + ], + "min": 2, + "max": 7 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "STM-NB-01", + "STM-NB-02", + "STM-NB-03", + "STM-NB-04", + "STM-NB-05", + "STM-HR-01", + "STM-HR-02", + "STM-HR-03", + "STM-HR-04", + "STM-HR-05", + "STM-UP-01", + "STM-UP-02", + "STM-UP-03", + "STM-UP-04", + "STM-UP-05", + "STM-DL-01", + "STM-DL-02", + "STM-DL-03", + "STM-DL-04", + "STM-DL-05" + ], + "min": 2, + "max": 7 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "HZM-NB-01", + "HZM-NB-02", + "HZM-NB-03", + "HZM-NB-04", + "HZM-HR-01", + "HZM-HR-02", + "HZM-HR-03", + "HZM-HR-04", + "HZM-UP-01", + "HZM-UP-02", + "HZM-UP-03", + "HZM-UP-04", + "HZM-DL-01", + "HZM-DL-02", + "HZM-DL-03", + "HZM-DL-04" + ], + "min": 2, + "max": 8 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "FLD-NB-01", + "FLD-NB-02", + "FLD-NB-03", + "FLD-NB-04", + "FLD-NB-05", + "FLD-NB-06", + "WFR-NB-01", + "WFR-NB-02", + "WFR-NB-03", + "WFR-NB-04", + "WFR-NB-05", + "QKE-NB-01", + "QKE-NB-02", + "QKE-NB-03", + "QKE-NB-04", + "STM-NB-01", + "STM-NB-02", + "STM-NB-03", + "STM-NB-04", + "STM-NB-05", + "HZM-NB-01", + "HZM-NB-02", + "HZM-NB-03", + "HZM-NB-04" + ], + "min": 3, + "max": 8 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "FLD-HR-01", + "FLD-HR-02", + "FLD-HR-03", + "FLD-HR-04", + "FLD-HR-05", + "FLD-HR-06", + "WFR-HR-01", + "WFR-HR-02", + "WFR-HR-03", + "WFR-HR-04", + "WFR-HR-05", + "QKE-HR-01", + "QKE-HR-02", + "QKE-HR-03", + "QKE-HR-04", + "STM-HR-01", + "STM-HR-02", + "STM-HR-03", + "STM-HR-04", + "STM-HR-05", + "HZM-HR-01", + "HZM-HR-02", + "HZM-HR-03", + "HZM-HR-04" + ], + "min": 3, + "max": 8 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "FLD-UP-01", + "FLD-UP-02", + "FLD-UP-03", + "FLD-UP-04", + "FLD-UP-05", + "FLD-UP-06", + "WFR-UP-01", + "WFR-UP-02", + "WFR-UP-03", + "WFR-UP-04", + "WFR-UP-05", + "QKE-UP-01", + "QKE-UP-02", + "QKE-UP-03", + "QKE-UP-04", + "STM-UP-01", + "STM-UP-02", + "STM-UP-03", + "STM-UP-04", + "STM-UP-05", + "HZM-UP-01", + "HZM-UP-02", + "HZM-UP-03", + "HZM-UP-04" + ], + "min": 3, + "max": 8 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "FLD-DL-01", + "FLD-DL-02", + "FLD-DL-03", + "FLD-DL-04", + "FLD-DL-05", + "FLD-DL-06", + "WFR-DL-01", + "WFR-DL-02", + "WFR-DL-03", + "WFR-DL-04", + "WFR-DL-05", + "QKE-DL-01", + "QKE-DL-02", + "QKE-DL-03", + "QKE-DL-04", + "STM-DL-01", + "STM-DL-02", + "STM-DL-03", + "STM-DL-04", + "STM-DL-05", + "HZM-DL-01", + "HZM-DL-02", + "HZM-DL-03", + "HZM-DL-04" + ], + "min": 3, + "max": 8 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "FLD-NB-01", + "FLD-NB-02", + "FLD-HR-01", + "FLD-HR-02", + "FLD-UP-01", + "FLD-UP-02", + "FLD-DL-01", + "FLD-DL-02" + ], + "min": 2, + "max": 8 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "HZM-NB-01", + "HZM-NB-02", + "HZM-NB-03", + "HZM-NB-04" + ], + "min": 2, + "max": 4 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "HZM-HR-01", + "HZM-HR-02", + "HZM-HR-03", + "HZM-HR-04" + ], + "min": 2, + "max": 4 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "HZM-UP-01", + "HZM-UP-02", + "HZM-UP-03", + "HZM-UP-04" + ], + "min": 2, + "max": 4 + }, + { + "motivated_by": "", + "type": "group_limit", + "options": [ + "HZM-DL-01", + "HZM-DL-02", + "HZM-DL-03", + "HZM-DL-04" + ], + "min": 2, + "max": 4 + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "FLD-NB-02", + "option_b": "WFR-NB-02" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "QKE-NB-01", + "option_b": "HZM-NB-01" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "FLD-HR-02", + "option_b": "WFR-HR-02" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "QKE-HR-01", + "option_b": "HZM-HR-01" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "FLD-UP-02", + "option_b": "WFR-UP-02" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "QKE-UP-01", + "option_b": "HZM-UP-01" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "FLD-DL-02", + "option_b": "WFR-DL-02" + }, + { + "motivated_by": "", + "type": "exclusion_pair", + "option_a": "QKE-DL-01", + "option_b": "HZM-DL-01" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "FLD-NB-04", + "then_option": "FLD-NB-03" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "WFR-NB-04", + "then_option": "WFR-NB-03" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "QKE-NB-03", + "then_option": "QKE-NB-02" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "STM-NB-03", + "then_option": "STM-NB-02" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "HZM-NB-03", + "then_option": "HZM-NB-02" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "FLD-HR-04", + "then_option": "FLD-HR-03" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "WFR-HR-04", + "then_option": "WFR-HR-03" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "QKE-HR-03", + "then_option": "QKE-HR-02" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "STM-HR-03", + "then_option": "STM-HR-02" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "HZM-HR-03", + "then_option": "HZM-HR-02" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "FLD-UP-04", + "then_option": "FLD-UP-03" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "WFR-UP-04", + "then_option": "WFR-UP-03" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "QKE-UP-03", + "then_option": "QKE-UP-02" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "STM-UP-03", + "then_option": "STM-UP-02" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "HZM-UP-03", + "then_option": "HZM-UP-02" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "FLD-DL-04", + "then_option": "FLD-DL-03" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "WFR-DL-04", + "then_option": "WFR-DL-03" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "QKE-DL-03", + "then_option": "QKE-DL-02" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "STM-DL-03", + "then_option": "STM-DL-02" + }, + { + "motivated_by": "", + "type": "dependency", + "if_option": "HZM-DL-03", + "then_option": "HZM-DL-02" + } + ], + "seed_used": 1540331095, + "solver": "nsga-iii", + "exact": false, + "time_limit": null, + "time_limited": false, + "solve_fingerprint": null, + "problem_snapshot": { + "n_options": 96, + "n_objectives": 4, + "n_scores": 384, + "approach": "binary", + "aggregation_mix": { + "min": 1, + "sum": 2, + "avg": 1 + }, + "constraint_type_counts": { + "objective_bound": 2, + "cardinality": 1, + "group_limit": 14, + "exclusion_pair": 8, + "dependency": 20 + }, + "interaction_matrix": false, + "scenarios": 0, + "exact_fits": false, + "exact_fits_reason": "the exact MILP optimizes additive (sum) objectives, and on this binary selection Readiness, ActivationTime use avg, min aggregation \u2014 avg is fractional over a variable-size pick; min is nonlinear \u2014 outside the exact scope. Redefine these as sum to certify, or keep the aggregation and explore with the NSGA heuristic." + } + } + }, + "created_at": "2026-08-03T21:17:54.978133Z", + "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 c3354eb..87e7633 100644 --- a/tests/test_upstream_kits.py +++ b/tests/test_upstream_kits.py @@ -437,6 +437,53 @@ def test_shift_coverage_staffing_kit(): ("FatigueRisk", "minimize", "sum")], "offer") +def test_emergency_readiness_portfolio_kit(): + rows = _rows("emergency_readiness_portfolio") + lines = _groups(rows, "asset", "hazard_line") + subs = _groups(rows, "asset", "subregion") + swift = [r["asset"] for r in rows if r["hazard_line"] == "Flood" and r["kind"] == "Team"] + hazmat = {sub: [r["asset"] for r in rows + if r["hazard_line"] == "Hazmat" and r["subregion"] == sub] for sub in subs} + + def built(hazmat_floor): + # The hazmat line cap has to leave room for the per-subregion floor (4 subregions). + hazmat_cap = max(7, 4 * hazmat_floor) + out = [{"type": "objective_bound", "objective": "Cost", "operator": "max", "value": 58.0}, + {"type": "objective_bound", "objective": "SurgeCapacity", "operator": "min", + "value": 4600.0}, + {"type": "cardinality", "min": 20, "max": 24}] + out += [{"type": "group_limit", "options": opts, "min": 2, + "max": hazmat_cap if line == "Hazmat" else 7} + for line, opts in lines.items()] + out += [{"type": "group_limit", "options": opts, "min": 3, "max": 8} + for opts in subs.values()] + out += [{"type": "group_limit", "options": swift, "min": 2, "max": len(swift)}] + out += [{"type": "group_limit", "options": opts, "min": hazmat_floor, "max": len(opts)} + for opts in hazmat.values()] + out += _exclusions(rows, "asset", "shares_crew_with") + out += [{"type": "dependency", "if_option": r["asset"], "then_option": r["requires_cache"]} + for r in rows if r["requires_cache"]] + return out + + scores = _scores_from(rows, "asset", [("Readiness", "readiness_0_100"), + ("SurgeCapacity", "surge_hours_72h"), + ("Cost", "annual_cost_musd"), + ("ActivationTime", "activation_hours")]) + p, _ = _assert_model("emergency_readiness_portfolio", built(1), scores, + [("Readiness", "maximize", "min"), + ("SurgeCapacity", "maximize", "sum"), + ("Cost", "minimize", "sum"), + ("ActivationTime", "minimize", "avg")], "asset") + concurrent = [{"option": r["asset"], "objective": obj, "value": float(r[col])} + for r in rows + for obj, col in [("Readiness", "readiness_under_concurrent_season"), + ("ActivationTime", "activation_under_concurrent_season")] + if r[col]] + assert _canon_scores(_scenario(p, "concurrent_season")["score_overrides"]) == \ + _canon_scores(concurrent) + assert _canon(_scenario(p, "dual_hazmat_rule")["constraint_overrides"]) == _canon(built(2)) + + def test_community_program_funding_kit(): rows = _rows("community_program_funding") built = [{"type": "max_allocation", "max": 12}, @@ -467,6 +514,7 @@ def test_community_program_funding_kit(): "charging_network_siting", "claims_investigation_triage", "community_program_funding", + "emergency_readiness_portfolio", "interconnection_approvals", "investment_portfolio", "production_mix", @@ -493,6 +541,10 @@ def test_community_program_funding_kit(): "claims_investigation_triage": ["1170 hours", "$4840k", "between 45 and 100", "38 Auto", "32 Property", "28 Liability", "26 Workers", "1140 hours"], + "emergency_readiness_portfolio": ["$58M", "4600 response-hours", "between 20 and 24", + "at least 2", "at most 7", "at least 3", "at most 8", + "2 standing swift-water", "1 hazmat unit", "66%", "78%", + "40% slower", "two hazmat units"], "interconnection_approvals": ["$400M", "$320M", "$480M", "$560M", "9 approvals per zone"], "investment_portfolio": ["30%", "at most 3", "20%", "15% lower", "1.5x"],