# 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 ```