Files
Atomizer/studies/M1_Mirror/SAT3_Trajectory_V7/README.md

138 lines
5.2 KiB
Markdown
Raw Normal View History

# SAT3_Trajectory_V7 - Final Converged Optimization (TPE Warm-Start)
> See [../README.md](../README.md) for M1 Mirror project overview
## Overview
**Final study in the SAT3 Trajectory series.** Return to proven TPE after SAT V6 underperformed (~30% FEA success rate due to geometry infeasibility). Warm-started with all 194 V5 trials for immediate TPE model knowledge. Ran 86 additional trials with **100% FEA success rate**, confirming the design space is fully converged.
**Result**: The optimum found in V5 (trial #181, WS=277.55) was confirmed as the global minimum. V7's best independent trial (#222, WS=277.60) matched it to within 0.08%.
## Changes from V6
- **Algorithm**: SAT v3 (surrogate) → **TPE** (Optuna) — back to proven method
- **Warm-start**: Pre-loaded 194 V5 trials into Optuna DB, n_startup=0 (fully informed TPE)
- **Bounds**: Same as V6 (lateral_inner_pivot expanded to [5, 19])
- **Seed**: 77 (different from V5's 42) for fresh exploration
- **NX fixes**: sys.exit(0) bug fix in solve_simulation.py, early-exit crash detection in solver.py, NX process cleanup with force-kill
## Results Summary
| Metric | Value |
|--------|-------|
| **Best WS** | **277.37** (trial #0, baseline re-eval) |
| Best V7 independent | 277.60 (trial #222) |
| V7 completed trials | 86 |
| V7 FEA failures | 0 (100% success rate) |
| Total trials (V5+V7) | 275 completed |
| Winning mass | 97.2 kg (22.8 kg under 120 kg limit) |
| Convergence | Top 10 within 0.85 WS of each other |
## Winning Design Parameters
```
[Degrees]lateral_inner_angle=29.788
[Degrees]lateral_outer_angle=15.336
[mm]lateral_inner_pivot=15.513
[mm]lateral_middle_pivot=16.681
[mm]lateral_closeness=8.403
[mm]whiffle_min=61.929
[mm]triangle_width=171.39
[mm]offset_plane=3.048
[mm]lateral_outer_pivot=7.668 (derived = lateral_outer_angle / 2)
```
## Winning Design Optical Performance
| Metric | Value (nm) | Weight |
|--------|-----------|--------|
| WFE 40/20 | 6.97 | 5.0 |
| WFE 60/20 | 13.01 | 5.0 |
| MFG 90 | 28.59 | 4.0 |
| Total filtered RMS | 3.24 | 4.0 |
| Coma RMS | 8.81 | 3.0 |
| Astigmatism RMS | 2.53 | 3.0 |
| Trefoil RMS | 3.41 | 2.0 |
| Spherical RMS | 4.64 | 2.0 |
| **Weighted Sum** | **277.37** | |
**Constraints**: Mass = 97.2 kg (PASS), R^2 = 1.0000 (PASS), Pivot = angle/2 (ENFORCED)
## Method
- **Algorithm**: TPE (Optuna, warm-started from V5)
- **Extraction**: HYBRID (Trajectory + Discrete Angle OPD with annular aperture)
- **Annular inner radius**: 135.75 mm (271.5 mm central hole)
- **Solver**: NX Nastran 2512
## Objectives (8 weighted, same as V3-V6)
| Metric | Weight | Type |
|--------|--------|------|
| wfe_40_20 | 5.0 | Discrete angle OPD |
| wfe_60_20 | 5.0 | Discrete angle OPD |
| mfg_90 | 4.0 | Discrete angle OPD |
| total_filtered_rms_nm | 4.0 | Trajectory |
| coma_rms_nm | 3.0 | Trajectory |
| astigmatism_rms_nm | 3.0 | Trajectory |
| trefoil_rms_nm | 2.0 | Trajectory |
| spherical_rms_nm | 2.0 | Trajectory |
## Design Variables (8 active + 1 derived)
| Variable | Min | Max | Optimal | Units | Notes |
|----------|-----|-----|---------|-------|-------|
| lateral_inner_angle | 20.0 | 35.0 | 29.788 | deg | Interior optimum |
| lateral_outer_angle | 9.0 | 17.0 | 15.336 | deg | Drives pivot |
| lateral_inner_pivot | 5.0 | 19.0 | 15.513 | mm | Expanded in V6 |
| lateral_middle_pivot | 12.0 | 25.0 | 16.681 | mm | Interior optimum |
| lateral_closeness | 5.0 | 15.0 | 8.403 | mm | Most sensitive param |
| whiffle_min | 25.0 | 80.0 | 61.929 | mm | Interior optimum |
| triangle_width | 155.0 | 185.0 | 171.390 | mm | Interior optimum |
| offset_plane | -10.0 | 15.0 | 3.048 | mm | Must be small positive |
| **lateral_outer_pivot** | — | — | **7.668** | mm | **DERIVED = angle/2** |
## Reports & Deliverables
| File | Location |
|------|----------|
| Optimization report | `3_results/OPTIMIZATION_REPORT.md` |
| Optimization log | `3_results/optimization.log` |
| Study database | `3_results/study.db` |
| Full optical report (HTML) | `2_iterations/iter0/*_OPTICAL_REPORT_*.html` |
| Zernike 40/20 annular (HTML) | `2_iterations/iter0/*_40_vs_20_ANNULAR.html` |
| Zernike 60/20 annular (HTML) | `2_iterations/iter0/*_60_vs_20_ANNULAR.html` |
| Zernike 90 mfg annular (HTML) | `2_iterations/iter0/*_90_mfg_ANNULAR.html` |
| Winning params.exp | `2_iterations/iter0/params.exp` |
| OP2 results | `2_iterations/iter0/*-solution_1.op2` |
| Updated NX model | `2_iterations/iter0/M1_Blank.prt` |
## Study History
| Version | Algorithm | Trials | Best WS | FEA Success | Outcome |
|---------|-----------|--------|---------|-------------|---------|
| V1 | TPE | 69 | ~350 | ~90% | Initial exploration |
| V2 | TPE | 101 | ~310 | ~90% | Refined bounds |
| V3 | TPE | 160 | ~290 | ~95% | Trajectory method added |
| V4 | TPE | 140 | 279.97 | ~95% | Derived pivot constraint |
| V5 | TPE | 189 | 277.55 | ~100% | HYBRID extraction |
| V6 | SAT v3 | 27 | 307.91 | ~30% | Surrogate failed |
| **V7** | **TPE (warm)** | **86** | **277.37** | **100%** | **CONVERGED** |
**Total FEA evaluations**: 772
## Usage
```bash
cd studies/M1_Mirror/SAT3_Trajectory_V7
# Test single FEA with winning params
python run_optimization.py --test
# Start optimization (200 trials default)
python run_optimization.py --start
# Resume and extend
python run_optimization.py --start --trials 100 --resume
```