|
504 | 504 | available via ``GET /api/v1/events``.""", |
505 | 505 | }, |
506 | 506 |
|
| 507 | + "concept.robust_optimization": { |
| 508 | + "category": "Concept", |
| 509 | + "content": """\ |
| 510 | +Robust optimization — designing for performance under context uncertainty. |
| 511 | +
|
| 512 | +Instead of optimizing at one nominal operating point, robust mode samples a |
| 513 | +distribution of context values (flowRate, temperature, inlet profile, …) at |
| 514 | +every candidate design and collapses the resulting outcome distribution via a |
| 515 | +risk measure. The optimizer then maximizes the risk-adjusted score, favoring |
| 516 | +designs that stay good across contexts rather than designs that peak at one |
| 517 | +and tank at others. |
| 518 | +
|
| 519 | +**YAML:** |
| 520 | +```yaml |
| 521 | +robust_optimization: |
| 522 | + context_groups: [operating_point] # parameter groups treated as contexts |
| 523 | + risk_measure: auto # or: cvar, mars |
| 524 | + robustness: 0.8 # alpha; higher = more conservative |
| 525 | + context_samples: 4 # samples per candidate |
| 526 | + # context_points: auto-generated via Sobol unless given explicitly |
| 527 | +``` |
| 528 | +
|
| 529 | +**Risk measures:** |
| 530 | +- ``cvar`` (Conditional Value-at-Risk) — average of the worst ``(1-alpha)`` |
| 531 | + fraction of context outcomes. Single-objective only. |
| 532 | +- ``mars`` (MVaR Approximation via Random Scalarizations) — multi-objective |
| 533 | + VaR built from random weight vectors; each scalarization reduces the problem |
| 534 | + to single-objective CVaR, then Ax aggregates. Multi-objective only. |
| 535 | +- ``auto`` — picks CVaR when the optimization has one objective and MARS when |
| 536 | + it has multiple. |
| 537 | +
|
| 538 | +**Mechanism:** foamBO's ``SubstituteContextFeatures`` input transform swaps |
| 539 | +the candidate's context slot for each Sobol-drawn context point at acquisition |
| 540 | +evaluation time. The GP is evaluated once per context sample and the risk |
| 541 | +measure reduces the ``n_contexts`` values to a single score that |
| 542 | +``optimize_acqf`` maximizes. |
| 543 | +
|
| 544 | +**Parallelism:** robust trials require ``context_samples`` design evaluations |
| 545 | +each. With ``parallelism: N``, each Ax orchestrator slot still corresponds to |
| 546 | +one design point (the context sweep runs inside the acquisition, not the |
| 547 | +runner), so the runner budget is unchanged. |
| 548 | +
|
| 549 | +**Full details, risk-measure math, MOO suitability matrix, and comparisons |
| 550 | +to SAASBO / InputPerturbation:** see ``docs/risk-measures-guide.md``. |
| 551 | +
|
| 552 | +**Specialization:** once a robust run converges, pin the context with |
| 553 | +``bootstrap: + specialize: {ctx: value}`` to continue optimizing design |
| 554 | +variables at a concrete operating point. See |
| 555 | +``concept.bootstrap_and_specialize``.""", |
| 556 | + }, |
| 557 | + |
507 | 558 | "concept.bootstrap_and_specialize": { |
508 | 559 | "category": "Concept", |
509 | 560 | "content": """\ |
|
0 commit comments