Added JSON Schema: - optimization_engine/schemas/atomizer_spec_v2.json Migrated 28 studies to AtomizerSpec v2.0 format: - Drone_Gimbal studies (1) - M1_Mirror studies (21) - M2_Mirror studies (2) - SheetMetal_Bracket studies (4) Each atomizer_spec.json is the unified configuration containing: - Design variables with bounds and expressions - Extractors (standard and custom) - Objectives and constraints - Optimization algorithm settings - Canvas layout information
M1 Mirror Turbo V2 - CMA-ES with Increased 40-20 Weight
Changes from V1
| Setting | V1 | V2 |
|---|---|---|
| Sampler | TPE | CMA-ES |
| 40-20 WFE weight | 5.0 | 6.0 |
| 60-20 WFE weight | 5.0 | 5.0 |
| MFG 90 weight | 3.0 | 3.0 |
| Mass weight | 1.0 | 0.0 (disabled) |
Purpose
V1 achieved WS=282.05 but 40-20 WFE slightly degraded vs V11 baseline (6.55 vs ~6.5 nm).
V2 changes:
- CMA-ES sampler - Better for continuous optimization, exploits gradients more effectively than TPE
- Increased 40-20 weight - Prioritize the 40-20 WFE objective
- Disabled mass - Since mass constraint is always satisfied and changes are minimal
Baseline
- V1 Best: WS=282.05 (trial 28)
- Starting surrogate: Trained on 45 FEA samples from V1
Quick Start
cd studies/M1_Mirror/m1_mirror_turbo_V2
# Run optimization
python run_optimization.py --start
# Or with custom settings
python run_optimization.py --start --max-fea 100 --patience 5
# Test single FEA
python run_optimization.py --test
Expected Behavior
Since mass is disabled (weight=0) and 40-20 is increased (6.0 vs 5.0):
- Optimization will focus more on reducing 40-20 WFE
- Mass may increase slightly (but stay under 105kg constraint)
- Best WS number will be different from V1 (different weights = different scale)
Comparing V1 vs V2
Do NOT compare WS values directly - they use different weight scales.
Compare individual objectives:
- 40-20 WFE (nm) - should be lower in V2
- 60-20 WFE (nm)
- MFG 90 (nm)
Files
1_setup/optimization_config.json- Configuration with V2 weights3_results/checkpoints/best_model.pt- Surrogate from V1 (45 samples)3_results/gnn_data/fea_samples.json- Training data from V1run_optimization.py- Main script (updated for V2 weights)