Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
77 commits
Select commit Hold shift + click to select a range
3614ea4
Initial plan
Copilot May 8, 2026
08d7256
Add runnable tensegrity simulation demos (MuJoCo, PyBullet, PyChrono)…
Copilot May 8, 2026
ce1edba
Add regime-aware simulations (#18 crutch + #14/#16 NASA, M23 envelope…
Copilot May 8, 2026
8f36c3a
Add PETG strut + TPU 95A printable-design model with class-1 tensegri…
Copilot May 8, 2026
5031a67
Simplify class-1 check expression (CodeQL review)
Copilot May 8, 2026
065cc62
Switch TPU 95A→85A; add Newton (Warp) mid-fidelity sim with tendons i…
Copilot May 9, 2026
011d34b
Build DiffPD from source; add diffpd_drop.py (TPU-85A soft cube + pla…
Copilot May 9, 2026
80d52f2
Build PolyFEM from source, add polyfem_drop.py (TPU-85A NeoHookean cu…
Copilot May 12, 2026
ec778ad
Add 3D GIF/MP4 renders of MuJoCo prism + regime drops with strain-col…
Copilot May 12, 2026
9d68870
Add T-prism volumetric mesher (PETG struts + TPU 85A tendons) for Pol…
Copilot May 12, 2026
ffa7301
Fix non-physical regime renders + add spot-check sims + PLA per #45
Copilot May 12, 2026
b8c1aa9
Fix regime renders: drop suspended-payload model, attach payload mass…
Copilot May 15, 2026
f75a2b3
Submit Edison payload-vs-no-payload query (#46/#47) + ASTM D5276 floo…
Copilot May 15, 2026
ead072e
Fetch Edison payload-vs-no-payload brief (37ae0665) + TL;DR headline …
Copilot May 15, 2026
dab3880
Switch strut material PETG → PLA per #45 (sim constants, README, docs)
Copilot May 15, 2026
761a49b
Re-run simulation artifacts after PLA switch (mujoco, run_regimes, pr…
Copilot May 16, 2026
124bba2
Run PolyFEM+IPC T-prism drop end-to-end (PLA struts + TPU-85A tendons)
Copilot May 16, 2026
3735caf
Submit Edison modeling-feedback-contacts query (78fb09a2) — polling
Copilot May 20, 2026
6dae17f
Fetch Edison modeling-feedback-contacts brief (78fb09a2) + top-10 out…
Copilot May 20, 2026
be6c650
Add validation-experiments doc, BO integration plan, and bo_evaluator…
Copilot May 20, 2026
0eb4068
Add sim cost benchmark + PR #35 BO schema bridge (twist convention fix)
Jun 9, 2026
548683c
Add sim cost benchmark + PR #35 BO bridge + Edison ANALYSIS query
Copilot Jun 9, 2026
e7e73e0
Add SAE J211 CFC-180 filter parity + commit Edison ANALYSIS result
Copilot Jun 9, 2026
a6ca343
Clarify CFC-180 filter docstring + constants; drop redundant size check
Copilot Jun 9, 2026
018f277
docs(bo): recommend multi-task GP across regimes instead of per-regim…
Copilot Jun 9, 2026
4763e68
docs(bo): import Models from ax.modelbridge.factory in MTBO snippet (…
Copilot Jun 9, 2026
955b159
sim: re-run MuJoCo/PyBullet/PyChrono/Newton + renders; add outputs zi…
Copilot Jun 12, 2026
1a49ff1
sim: build DiffPD + PolyFEM from source and run all 6 engines; refres…
Copilot Jun 12, 2026
33fdf25
sim: Sobol T3-prism (#35) sweep through Tier-C MuJoCo + Tier-B Newton…
Copilot Jun 12, 2026
f8c5c49
sim: extend Sobol T3 campaign to full C→B→A ladder (5 engines incl. T…
Copilot Jun 12, 2026
5598733
sim: add Plotly violin plots (jittered raw points) of Sobol T3 measur…
Copilot Jun 14, 2026
9d95da4
edison: send Sobol T3 results to ANALYSIS, fetch + commit answer
Copilot Jun 15, 2026
2c85d19
sim: add Edison-review Tier-C diagnostics (base reaction, CFC on/off,…
Copilot Jun 20, 2026
1b5c2e9
sim: add closed-loop sim-only Ax/qNEHVI BO campaign over PR #35 T3 box
Copilot Jun 20, 2026
59c48d5
sim: name the F_peak feasibility cutoff constant (code-review nit)
Copilot Jun 20, 2026
77471ee
sim: separate per-regime BO plots, per-seed + std-band convergence, m…
Copilot Jun 20, 2026
069b3ea
sim: derive seed-design count instead of hardcoding 3 (code-review nit)
Copilot Jun 20, 2026
f8508ee
sim: Edison sim-BO review (491f90ae) + fix Tier-B regime plumbing & r…
Copilot Jun 20, 2026
e8491d7
sim: refresh Tier-B outputs with regime-aware drop + new CV diagnostics
Copilot Jun 20, 2026
7dbe8f4
docs: sync sim_bo_campaign.md to regime-aware Tier-B + range-normaliz…
Copilot Jun 21, 2026
668db6f
docs: address review nits in sim_bo_campaign.md (ASCII minus, clarify…
Copilot Jun 21, 2026
ad57645
Add dense Tier-C Pareto-front search + renders of best/worst/mediocre…
Copilot Jun 21, 2026
bb904cd
pareto_render_campaign: drop dead viz_mass assignment (code-review)
Copilot Jun 21, 2026
b3d4e7b
Add fair-evaluation analysis + Edison submit/fetch scripts (PR commen…
Copilot Jun 21, 2026
19df1ac
Commit Edison fair-evaluation review + fold refinements into the anal…
Copilot Jun 21, 2026
cbcf27b
Clarify that the "hybrid" combines Routes A+B in one campaign per regime
Copilot Jun 27, 2026
04baa03
Add hybrid fair-evaluation BO campaign (Route A + B in one campaign/r…
Copilot Jun 27, 2026
df06e08
Match the PR #102 bench campaign in simulation: infill-aware drop-tow…
github-actions[bot] Aug 21, 2026
955b62c
Add the three-seed simulation-only campaign outputs and the SAASBO pa…
github-actions[bot] Aug 21, 2026
6301f99
Make each PR #102 sim repeat an independent campaign with its own Sob…
github-actions[bot] Aug 21, 2026
dbe3670
Ten independent PR #102 sim repeats, each with its own Sobol seed
github-actions[bot] Aug 21, 2026
72f1989
Add random/Sobol/LHS/compass baselines and a 68,944-evaluation refere…
github-actions[bot] Aug 21, 2026
801afe3
Fix the mass normalization in the PR #102 sim objectives: constant pr…
github-actions[bot] Aug 22, 2026
459ecaf
Re-parameterize the PR #102 sim campaign onto constant-mass shape rat…
github-actions[bot] Aug 24, 2026
bd45811
Ten ratio-space repeats, a 21,184-eval reference front, and baselines…
github-actions[bot] Aug 24, 2026
170640c
Ringdown damping (zeta_pct): measured correlations and a resolution s…
github-actions[bot] Aug 24, 2026
adf48b4
Swap the dead simulated e_rebound objective for peak_tendon_strain
github-actions[bot] Aug 24, 2026
36bb892
Fix tendon semantics per the Edison objective rubber duck (9c0ab4c7)
github-actions[bot] Aug 24, 2026
f375aa4
Ten repeats + baselines on the corrected-physics (t180, peak_tendon_s…
github-actions[bot] Aug 24, 2026
761094d
Parametrize qNEHVI acquisition effort (default: Ax defaults); archive…
claude[bot] Aug 24, 2026
b5b943c
Tier-B flexural-strut + Kelvin-Voigt drop-tower analogue for both pri…
claude[bot] Aug 24, 2026
680179e
Tier-B runs on all 21 printed articles + measured-channel comparison
claude[bot] Aug 24, 2026
bf32241
Full-effort campaign: first completed seeds (incremental)
claude[bot] Aug 24, 2026
c92aa3e
polyfem_tierA: retry tendon inset factors around gmsh fragment failures
claude[bot] Aug 24, 2026
adb1000
polyfem_tierA: analytic volumes for the density solve; raise Newton i…
claude[bot] Aug 24, 2026
d7b3cb3
Full-effort campaign: seeds through wave 2 (incremental)
claude[bot] Aug 24, 2026
c97d4c0
Full-effort campaign: seeds 4-7,9 + 45-design baselines (incremental)
claude[bot] Aug 24, 2026
41eaf35
Ten full-effort repeats confirm: the BO/sampler non-separation was no…
claude[bot] Aug 24, 2026
cf1f60c
Audit round-0 distinctness on every aggregate; fix the ambiguous 'pin…
github-actions[bot] Aug 25, 2026
b766316
tier_promotion_analysis: Tier-A comparison panel (fn/zeta identity, a…
github-actions[bot] Aug 25, 2026
1f30424
Blind phase: independent reimplementation of the 72f1989 BO-vs-baseli…
github-actions[bot] Aug 25, 2026
ddde237
polyfem_tierA: validate the gmsh write and finalize before inset retr…
github-actions[bot] Aug 25, 2026
a22470d
polyfem_tierA: parse displacement/velocity/acceleration point_data (H…
github-actions[bot] Aug 25, 2026
8e1b240
polyfem_tierA: polysolve HEAD key names (grad_norm_tol, allow_out_of_…
github-actions[bot] Aug 25, 2026
a7f3fb1
Blind phase complete: 10 BO seeds + aggregate + comparison figure
github-actions[bot] Aug 25, 2026
35c7f91
Tier-A wave 2: bpx68c, 6lhxfy, 6nheas (incremental)
github-actions[bot] Aug 25, 2026
11d59c3
Unblind phase: implementation audit of the blind reproduction vs the …
github-actions[bot] Aug 25, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -35,3 +35,8 @@ Thumbs.db
# IDE
.vscode/
*.code-workspace

# Python
__pycache__/
*.py[cod]
MUJOCO_LOG.TXT
1 change: 1 addition & 0 deletions edison-trajectories/2026-05-08-sim-survey-782657e0.json

Large diffs are not rendered by default.

188 changes: 188 additions & 0 deletions edison-trajectories/2026-05-08-sim-survey-782657e0.md

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

43 changes: 43 additions & 0 deletions edison-trajectories/modeling-feedback-contacts/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Modeling-feedback contacts (Edison `78fb09a2`)

Edison `LITERATURE_HIGH` task `78fb09a2-bea4-4e7a-ab70-8518fa1b0b81` —
"Prioritised Contact List And Outreach Plan For Tensegrity Drop Impact
Modelling Reviews". Submitted 2026-05-20T16:46:14Z, fetched same session,
`status=success`. ~50 KB formatted answer over 6 sections (Tensegrity
dynamics, Simulator maintainers, Materials/AM, Standards/test labs, BO/MF,
Synthesis with ranked top-10 + email template + venues).

## Top-10 contacts (verbatim ordering from Edison §6(a))

| # | Name | Affiliation | Domain | Why first |
|---:|---|---|---|---|
| 1 | Teseo Schneider | Univ. Victoria / NYU GP | PolyFEM + IPC, contact-rich elastodynamics | Single best person to critique Tier-A IPC barrier (`dhat=5e-5`), implicit stepping (`dt=0.5 ms`), and welded PLA/TPU contact treatment (Schneider 2020; Li 2023). |
| 2 | Julian Rimoli | Georgia Tech | Tensegrity impact tolerance, planetary landing | Best literature anchor for tensegrity impact mechanics + landers; judges whether each tier preserves the mechanisms that matter under impact (Rimoli 2016/2018; Garanger 2021). |
| 3 | Vytas SunSpiral | NASA Ames lineage / IRG | SUPERball, NTRT, lander/EDL | Spot-check whether T-prism + payload-suspension interpretation captures the SUPERball/NTRT lineage; advice on when Bullet/NTRT cable abstractions break down (Caluwaerts 2014; Mirletz 2015). |
| 4 | Tao Du | Tsinghua / formerly MIT CSAIL | DiffPD, differentiable soft-body | Right person to say where DiffPD is a credible Tier-B surrogate vs where contact realism breaks (Du 2021). |
| 5 | Robert E. Skelton | UCSD (emeritus lineage) | Foundational tensegrity statics/dynamics | Foundational sanity-check on class-1 T-prism parameterisation + prestrain sweep (Sultan 2000; Goyal & Skelton 2019). |
| 6 | Keivan Davami | USAFA / AM impact mechanics | 3D-printed tensegrity, dynamic energy absorption | Bridges printable PLA/TPU geometry to validated crashworthiness claims (Davami 2019 + 2025 tensegrity-impact). |
| 7 | Peter I. Frazier | Cornell ORIE | Multi-fidelity Bayesian optimisation | Sanity-check fidelity ordering, cost-aware acquisition, and joint vs separate response models for the BO loop (Wu 2020; Xie 2024). |
| 8 | Daniele Panozzo | NYU Courant / GP Group | PolyFEM ecosystem, geometry processing | Critique gmsh OCC fragment → welded volumetric mesh workflow and meshing/validity checks (Schneider 2019/2022). |
| 9 | Alice M. Agogino | UC Berkeley | Tensegrity robotics, prototyping, hardware validation | Frames crutch-tip vs NASA-lander split for transferable insight; advises on minimum measurements that falsify the sim (Agogino 2014; Chen 2017). |
| 10 | Alessandro Tasora | Univ. Parma / Project Chrono | PyChrono, nonsmooth multibody dynamics | Decide whether PyChrono adds unique value in Tier-C screening or should be deprioritised (Benatti 2019; Mangoni 2019). |

## Recommended venues (Edison §6(c))

1. **SIGGRAPH / SCA Physics-Based Animation community + `polyfem/polyfem`
GitHub Discussions** — Tier-A meshing / IPC / timestep sensitivity.
2. **ICRA / IROS soft-robotics / tensegrity workshops** — late-breaking
abstracts; SUPERball/NTRT-style spot-checks.
3. **ASME IMECE / AIAA Earth-and-Space tensegrity sessions** — structural
assumptions, prestrain, reduced-order vs volumetric.
4. **BoTorch GitHub Discussions / Ax community** — multi-fidelity BO loop
sanity-check (fidelity ordering, acquisition, correlated outputs).
5. **Acceleration Consortium SDL Slack / hackathon channels** — broader
spot-checks on the heterogeneous-simulator+hardware loop.

## Files

- `modeling-feedback-contacts-78fb09a2-...md` — full formatted answer
(~58 KB; 6 sections + caveats + email template).
- `modeling-feedback-contacts-78fb09a2-...json` — raw Edison trajectory
(~1.5 MB; agent_state + environment_frame + references).

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

17,370 changes: 17,370 additions & 0 deletions edison-trajectories/payload-vs-no-payload-37ae0665-9ae7-4171-b366-099141098975.json

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
# Edison ANALYSIS brief: value of multi-fidelity simulations for the PR #35 T3-prism BO campaign and high-fidelity validation

- **Task ID:** `4e74f66c-5b39-45c1-9cb1-73ef5edfb59a`
- **Job:** `ANALYSIS`
- **Submitted:** 2026-06-09T19:56:25Z
- **Fetched:** 2026-06-09T20:06:02Z
- **Status:** success

---

Question:

We have a multi-fidelity simulation stack for drop-impact response of class-1
tensegrity cells (3 PLA struts E=3.5 GPa rho=1240; 9 TPU 85A tendons, E~12 MPa
secant, sigma_break~26 MPa; T3-prism topology) for two regimes: crutch_tip
(75 kg @ 1.4 m/s, ~Ø24x25 mm cell, HAVS peak <= 8 g) and nasa_lander
(5 kg @ 9.8 m/s, ~Ø200x200 mm cell, GEVS peak <= 1500 g). Tiers: (C) MuJoCo
rigid-strut + tendon screening (~0.1 s/design on 1 CPU core); (B) NVIDIA Newton
(Warp XPBD, differentiable) + DiffPD; (A) PolyFEM+IPC NeoHookean on a welded
strut+tendon volumetric mesh.

We are wiring tier-C into the PR #35 T3-prism Bayesian-optimization campaign
(t3_prism_sobol_batch.py). That script currently only emits a Sobol design set
with a *placeholder* objective and reports no data back. Our bridge
(bo_evaluator.py) maps the PR #35 parameter schema (R_mm[25,40], H_mm[60,110],
twist_deg[40,80], strut_d_mm[6,12], cable_d_mm[3.0,5.5]) -> a PrintableDesign ->
run_regimes.simulate(regime) -> objectives {F_peak_N, SEA_J_per_g, eta}
(eta = compaction/stroke efficiency). The same objective space is what the
drop-tower experiments (PR #74 accelerometer + SAE J211 CFC-180 filtered peak g;
PR #67 drop protocol) and Instron tests measure, so simulated and measured rows
can attach to the same Ax/BoTorch model.

We need a rigorous, citation-backed analysis answering:

# 1. Value of cheap simulation inside the BO loop
Given tier-C costs ~0.1 s/design vs. days per printed+drop-tested specimen, how
should we best use the simulator inside a sequential / batch BO campaign? Cover
concretely: (a) multi-fidelity / multi-task BO formulations (e.g.,
MF-MES, trace-aware knowledge gradient, BoTorch SingleTaskMultiFidelityGP /
Ax multi-task) that fuse cheap-sim + expensive-experiment observations on the
shared {F_peak, SEA, eta} objective space; (b) using the simulator to seed /
warm-start the GP prior or as a cheap "screening" pre-filter before committing a
specimen to print; (c) cost-aware acquisition (cost per fidelity) and when the
expected value of a tier-C / tier-B eval exceeds its cost; (d) the risk of model
discrepancy / bias between sim and bench, and the standard ways to correct it
(discrepancy/bias GP a la Kennedy-O'Hagan, delta-modelling, autoregressive
co-kriging). Cite the BO + multi-fidelity literature.

# 2. What the simulations can tell us that the printer/bench cannot cheaply
Enumerate specific quantities the sims expose per design that are hard or
expensive to measure experimentally and would improve the campaign: e.g.,
full-field strut/tendon strain history, contact sequence / buckling onset, energy
partition (tendon vs. strut vs. contact), sensitivity gradients (Newton/DiffPD
differentiability) for gradient-informed BO, and the class-1 feasibility / strut
self-collision screen. Which of these are trustworthy at tier C vs. require
tier A/B?

# 3. Value for the high-fidelity manual validation measurements
How should simulation outputs shape the *experimental* program (drop-tower /
Instron)? e.g., which designs to physically test first (max-information / D-
optimal under the surrogate), what instrumentation to add (where peak strain
localizes), what loading rate / drop height brackets the regimes, and how to set
up the sim-vs-experiment comparison so the bench data can recalibrate the sim
(which scalar + which curves to compare; SAE J211 filtering parity).

# 4. Objective trade-offs and regime handling
We see peak-force vs. SEA vs. compaction-efficiency (eta) trade-offs that differ
sharply by regime (lander: F_peak ~kN, eta ~0.7; crutch: eta ~0.96, cushion-
limited). Should we run one BO campaign per regime or a single multi-objective /
multi-task campaign? Recommend the objective formulation (scalarization vs. EHVI
Pareto) and any constraints (HAVS <= 8 g, GEVS <= 1500 g) to encode.

# 5. Concrete recommendations
A prioritized, actionable list: the specific BoTorch/Ax components to use, the
order of operations to integrate bo_evaluator.py into t3_prism_sobol_batch.py,
and 3-5 immediate next experiments. Flag where advice is engineering judgement
vs. literature-grounded, with citations.

Use the attached files (the PR #35 BO script, our sim->BO bridge, the tier-C
simulator, and the manuscript draft) as ground truth for what we have built.

---

Here is a rigorous, citation-backed analysis of how to integrate the tier-C MuJoCo simulator into the tensegrity Bayesian Optimization (BO) campaign.

### 1. Value of cheap simulation inside the BO loop

At ~0.1 seconds per evaluation, the tier-C MuJoCo simulator provides an extreme cost asymmetry compared to the physical print-and-drop cycle (days). You can exploit this asymmetry via two primary formulations:

**(a) Warm-starting the GP Prior via Single-Task BO:**
Instead of learning the objective landscape purely from expensive drop-tower experiments, use the simulator to evaluate an initial Sobol space-filling design (Sobol 1967). This populates the GP prior with the gross trends of the parameter space (e.g., that thicker tendons generally increase force and SEA). Currently, `t3_prism_sobol_batch.py` throws away the objectives; you should use `bo_evaluator.evaluate_batch_csv` to compute F_peak, SEA, and $\eta_c$ and `attach_trial` these to the Ax client.
*Relevant citations: Snoek et al. 2012 (NeurIPS) on practical BO initialization; Balandat et al. 2020 (NeurIPS) for BoTorch integration.*

**(b) Multi-Fidelity / Multi-Task BO Formulations:**
The mathematically rigorous approach is to treat tier-C as a continuous or discrete low-fidelity information source. Since tier-C provides biased but correlated estimates of the true physics, you can use **Multi-Task GP models** (Swersky et al. 2013) where task 0 = sim and task 1 = bench.
BoTorch provides `SingleTaskMultiFidelityGP`, which models the objective using an autoregressive co-kriging framework originating from **Kennedy & O'Hagan (2000, 2001)**. In this framework, the high-fidelity bench measurement $f_{bench}(x)$ is modeled as a scaled simulator output plus a discrepancy function $\delta(x)$:
$f_{bench}(x) = \rho f_{sim}(x) + \delta(x)$.
*Relevant citations: Kennedy & O'Hagan 2000 (Biometrika); Forrester et al. 2007 (Proc. R. Soc. A); Poloczek et al. 2017 (NeurIPS) on misoKG; Wu et al. 2020 (UAI) on continuous-fidelity KG (cfKG).*

**(c) Cost-aware acquisition:**
The expected value of querying the simulator exceeds its cost whenever the uncertainty reduction in the shared GP (transferred to the bench task via covariance) is large relative to the ~0.1s compute time. Use **Cost-Weighted Expected Improvement (EI-per-second)** (Snoek et al. 2012) or Multi-Fidelity Knowledge Gradient (cfKG) / Multi-Fidelity Max-Value Entropy Search (MF-MES) (Takeno et al. 2020, ICML).

### 2. What simulations can tell us that the bench cannot cheaply

Tier-C MuJoCo exposes internal states per timestep that are expensive or impossible to measure with external video/accelerometry:
* **Energy partition:** The time-series vector `se` tracks tendon strain energy vs kinetic vs strut strain energy.
* **Kinematic feasibility:** The `design.check()` collision screen flags class-1 feasibility (struts overlapping) before committing PLA to the build plate.
* **Sensitivity gradients:** While MuJoCo (tier-C) is not natively differentiable in the way Warp XPBD (tier-B) or DiffPD are, you can trivially compute finite-difference gradients of peak force with respect to geometry at 0.1s per step. This informs active subspace reduction (Constantine 2015) before BO begins.
*Trustworthiness:* Tier-C is trustworthy for gross trend discovery (bulk energy partitions, clearance checks) but cannot predict local stress localizations or TPU weld-line failures. Tier-B/A is required for those localized failure modes.

### 3. Value for the high-fidelity manual validation measurements

Simulation outputs should dictate the physical testing matrix:
* **Experiment selection:** Do not randomly sample the bench drops. Use the tier-C trained surrogate to identify the regions of highest uncertainty or maximum expected hypervolume improvement (**qNEHVI**; Daulton et al. 2021) and only print *those* designs.
* **Instrumentation targeting:** The simulation's maximum strain locations indicate exactly where to place transfer tape/markers for the Polytec QTec laser vibrometry or high-speed camera tracking.
* **Calibration parity:** For the bench data to accurately recalibrate the sim discrepancy $\delta(x)$, the signal processing must match. Apply an **SAE J211 CFC-180** filter (180 Hz cutoff) to both the raw physical accelerometer voltages and the simulated $a_z$ vectors before extracting $F_{peak}$.

### 4. Objective trade-offs and regime handling

You observed regime-specific clustering (Lander: F_peak ~kN, $\eta_c$ ~0.7 vs Crutch: $\eta_c$ ~0.96).
* **Do not run a single scalarized BO campaign.** Compaction efficiency ($\eta_c$) and Peak Force conflict fundamentally.
* **Recommendation:** Run **one multi-objective campaign per regime** using **qNEHVI** (Daulton et al. 2021). Treat SEA and $\eta_c$ as maximization objectives. Treat the regime targets (HAVS $\leq$ 8g, GEVS $\leq$ 1500g) as **black-box constraints** evaluated by the surrogate (Letham et al. 2019, Bayesian Analysis).

### 5. Concrete recommendations and order of operations

1. **Filter Parity (Immediate):** Update `bo_evaluator.py` to apply an SAE J211 CFC-180 digital filter (using scipy.signal) to the simulated acceleration array before extracting `peak_g`. *[Engineering judgment grounded in standard crash-test methodology].*
2. **Close the loop on PR #35 (Immediate):** Modify `t3_prism_sobol_batch.py` to pass the Sobol parameterizations through `evaluate_batch_csv()`. Attach these outcomes to the Ax client as initial simulator data rather than abandoning the trials.
3. **Formulate Multi-Objective Constraints:** Configure Ax with `objectives={"SEA_J_per_g": minimize=False, "eta": minimize=False}` and `outcome_constraints=["F_peak_N <= 750"]` (for the crutch 75kg * 10g limit, roughly).
4. **Implement Multi-Fidelity (Next 2 weeks):** Switch from standard GPs to BoTorch's `SingleTaskMultiFidelityGP`. Add a `fidelity` parameter to the search space (`"sim"` vs `"bench"`). Configure Ax to use `MultiFidelityKnowledgeGradient` to automatically query the simulator 1000x for every 1 bench drop.
5. **Drop-tower calibration:** Execute the 9 physical drops from the PR #35 plate. Report the F_peak and SEA back to Ax as `fidelity="bench"`. The surrogate will automatically learn the discrepancy $\delta(x)$ between MuJoCo and reality.

***

### Discretionary Analytical Decisions
* Recommended qNEHVI over LogEI because the trade-off between compaction efficiency and peak force necessitates Pareto-front exploration rather than scalarization.
* Recommended separate regime campaigns rather than a combined campaign because the physics bounds (8g vs 1500g) operate in distinct nonlinear regimes that will warp a single GP length scale.
* Specified SAE J211 CFC-180 filtering as the standard for matching physical crash data to simulated high-frequency ringing.
* Advised standard Co-Kriging (Kennedy-O'Hagan) via BoTorch `SingleTaskMultiFidelityGP` over more complex non-linear fusion (NARGP) for initial implementation due to software readiness.
Loading