diff --git a/.gitignore b/.gitignore index ccaa99f7..76cb8d2e 100644 --- a/.gitignore +++ b/.gitignore @@ -22,6 +22,7 @@ wheels/ MANIFEST .pytest_cache/ .coverage +.coverage.* htmlcov/ *.cover .hypothesis/ @@ -35,6 +36,7 @@ env/ # IDEs .vscode/ .idea/ +.obsidian/ *.swp *.swo *~ diff --git a/archive/temp_outputs/MORNING_SUMMARY_NOV17.md b/archive/temp_outputs/MORNING_SUMMARY_NOV17.md deleted file mode 100644 index 1011878e..00000000 --- a/archive/temp_outputs/MORNING_SUMMARY_NOV17.md +++ /dev/null @@ -1,209 +0,0 @@ -# Morning Summary - November 17, 2025 - -## Good Morning! Here's What Was Done While You Slept 🌅 - -### Critical Bugs Fixed ✅ - -**1. Parameter Range Bug (FIXED)** -- **Problem**: Design variables sampled in 0-1 range instead of actual mm values -- **Cause**: LLM returns `bounds: [20, 30]` but code looked for `min`/`max` keys -- **Result**: 0.27mm thickness instead of 27mm! -- **Fix**: Updated [llm_optimization_runner.py](optimization_engine/llm_optimization_runner.py#L205-L211) to parse `bounds` array -- **Test**: Now correctly uses 20-30mm range ✓ - -**2. Missing Workflow Documentation (FIXED)** -- **Problem**: No record of LLM parsing for transparency -- **Fix**: Auto-save `llm_workflow_config.json` in every study folder -- **Benefit**: Full audit trail of what LLM understood from natural language - -**3. FEM Update Bug (Already Fixed Yesterday)** -- Model updates now work correctly -- Each trial produces different FEM results ✓ - ---- - -## MAJOR ARCHITECTURE REFACTOR 🏗️ - -### Your Request: -> "My study folder is a mess, why? I want some order and real structure to develop an insanely good engineering software that evolve with time." - -### Problem Identified: -Every substudy was duplicating extractor code in `generated_extractors/` and `generated_hooks/` directories. This polluted study folders with reusable library code instead of keeping them clean with only study-specific data. - -### Solution Implemented: -**Centralized Library System** with signature-based deduplication. - -#### Before (BAD): -``` -studies/my_optimization/ - ├── generated_extractors/ ❌ Code pollution! - │ ├── extract_displacement.py - │ ├── extract_von_mises_stress.py - │ └── extract_mass.py - ├── generated_hooks/ ❌ Code pollution! - ├── llm_workflow_config.json - └── optimization_results.json -``` - -#### After (GOOD): -``` -optimization_engine/extractors/ ✓ Core library - ├── extract_displacement.py - ├── extract_von_mises_stress.py - ├── extract_mass.py - └── catalog.json ✓ Tracks all extractors - -studies/my_optimization/ - ├── extractors_manifest.json ✓ Just references! - ├── llm_workflow_config.json ✓ Study config - ├── optimization_results.json ✓ Results only - └── optimization_history.json ✓ History only -``` - -### Key Benefits: -1. **Clean Study Folders**: Only metadata (no code!) -2. **Code Reuse**: Same extractor = single file in library -3. **Deduplication**: Automatic via signature matching -4. **Professional**: Production-grade architecture -5. **Evolves**: Library grows, studies stay clean - ---- - -## New Components Created - -### 1. ExtractorLibrary (`extractor_library.py`) -Smart library manager with: -- Signature-based deduplication -- Catalog tracking (`catalog.json`) -- Study manifest generation -- `get_or_create()` method (checks library before creating) - -### 2. Updated Components -- **ExtractorOrchestrator**: Now uses core library instead of per-study generation -- **LLMOptimizationRunner**: Removed `generated_extractors/` and `generated_hooks/` directory creation -- **Test Suite**: Updated to verify clean study structure - ---- - -## Test Results - -### E2E Test: ✅ PASSED (18/18 checks) - -**Study folder now contains**: -- ✅ `extractors_manifest.json` (references to core library) -- ✅ `llm_workflow_config.json` (what LLM understood) -- ✅ `optimization_results.json` (best design) -- ✅ `optimization_history.json` (all trials) -- ✅ `.db` file (Optuna database) - -**Core library now contains**: -- ✅ `extract_displacement.py` (reusable!) -- ✅ `extract_von_mises_stress.py` (reusable!) -- ✅ `extract_mass.py` (reusable!) -- ✅ `catalog.json` (tracks everything) - -**NO MORE**: -- ❌ `generated_extractors/` pollution -- ❌ `generated_hooks/` pollution -- ❌ Duplicate extractor code - ---- - -## Commits Made - -**1. fix: Parse LLM design variable bounds correctly and save workflow config** -- Fixed parameter range bug (20-30mm not 0.2-1.0mm) -- Added workflow config saving for transparency - -**2. refactor: Implement centralized extractor library to eliminate code duplication** -- Major architecture refactor -- Centralized library system -- Clean study folders -- 577 lines added, 42 lines removed -- Full documentation in `docs/ARCHITECTURE_REFACTOR_NOV17.md` - ---- - -## Documentation Created - -### [ARCHITECTURE_REFACTOR_NOV17.md](docs/ARCHITECTURE_REFACTOR_NOV17.md) -Comprehensive 400+ line document covering: -- Problem statement (your exact feedback) -- Old vs new architecture comparison -- Implementation details -- Migration guide -- Test results -- Next steps (hooks library, versioning, CLI tools) - ---- - -## What This Means for You - -### Immediate Benefits: -1. **Clean Studies**: Your study folders are now professional and minimal -2. **Code Reuse**: Core library grows, studies don't duplicate code -3. **Transparency**: Every study has full audit trail (workflow config) -4. **Correct Parameters**: 20-30mm ranges work properly now - -### Architecture Quality: -- ✅ Production-grade structure -- ✅ "Insanely good engineering software that evolves with time" -- ✅ Clean separation: studies = data, core = code -- ✅ Foundation for future growth - -### Next Steps: -- Same approach for hooks library (planned) -- Add versioning for reproducibility (planned) -- CLI tools for library management (planned) -- Auto-generated documentation (planned) - ---- - -## Quick Status - -**Phase 3.2 Week 1**: ✅ COMPLETE -- [OK] Task 1.2: Wire LLMOptimizationRunner to production -- [OK] Task 1.3: Create minimal working example -- [OK] Task 1.4: End-to-end integration test -- [OK] BONUS: Architecture refactor (this work) - -**All bugs fixed**: ✅ -- Parameter ranges: 20-30mm (not 0.2-1.0mm) -- FEM updates: Each trial different results -- Workflow documentation: Auto-saved -- Study folder pollution: Eliminated - -**All tests passing**: ✅ -- E2E test: 18/18 checks -- Parameter ranges verified -- Clean study folders verified -- Core library working - ---- - -## Files to Review - -1. **docs/ARCHITECTURE_REFACTOR_NOV17.md** - Full architecture explanation -2. **optimization_engine/extractor_library.py** - New library manager -3. **studies/.../extractors_manifest.json** - Example of clean study folder - ---- - -## Ready for Next Steps - -Your vision of "insanely good engineering software that evolves with time" is now in place for extractors. The architecture is production-grade, clean, and ready to scale. - -Same approach can be applied to hooks, then documentation generation, then versioning - all building on this solid foundation. - -Have a great morning! ☕ - ---- - -**Commits**: 3 total today -**Files Changed**: 8 (5 modified, 3 created) -**Lines Added**: 600+ -**Architecture**: Transformed from messy to production-grade -**Tests**: All passing ✅ -**Documentation**: Comprehensive ✅ - -Sleep well achieved! 😴 → 🎯 diff --git a/archive/temp_outputs/calibrated_surrogate.pt b/archive/temp_outputs/calibrated_surrogate.pt deleted file mode 100644 index d8f8cfd9..00000000 Binary files a/archive/temp_outputs/calibrated_surrogate.pt and /dev/null differ diff --git a/archive/temp_outputs/calibration_history.json b/archive/temp_outputs/calibration_history.json deleted file mode 100644 index 21b10d5e..00000000 --- a/archive/temp_outputs/calibration_history.json +++ /dev/null @@ -1,29 +0,0 @@ -[ - { - "iteration": 1, - "n_training_samples": 55, - "confidence_score": 0.48, - "mass_mape": 5.199446351686856, - "freq_mape": 46.23527454811865, - "avg_selected_uncertainty": 0.3559015095233917, - "status": "LOW_CONFIDENCE" - }, - { - "iteration": 2, - "n_training_samples": 60, - "confidence_score": 0.6, - "mass_mape": 5.401324621678541, - "freq_mape": 88.80499920325646, - "avg_selected_uncertainty": 0.23130142092704772, - "status": "MEDIUM_CONFIDENCE" - }, - { - "iteration": 3, - "n_training_samples": 65, - "confidence_score": 0.6, - "mass_mape": 4.867728649442469, - "freq_mape": 76.78009245481465, - "avg_selected_uncertainty": 0.17344236522912979, - "status": "MEDIUM_CONFIDENCE" - } -] \ No newline at end of file diff --git a/archive/temp_outputs/cv_validated_surrogate.pt b/archive/temp_outputs/cv_validated_surrogate.pt deleted file mode 100644 index 6bdefbdb..00000000 Binary files a/archive/temp_outputs/cv_validated_surrogate.pt and /dev/null differ diff --git a/archive/temp_outputs/interactive_setup_output.txt b/archive/temp_outputs/interactive_setup_output.txt deleted file mode 100644 index 2c973581..00000000 --- a/archive/temp_outputs/interactive_setup_output.txt +++ /dev/null @@ -1,530 +0,0 @@ -fatal: not a git repository (or any of the parent directories): .git - -================================================================================ - ATOMIZER - INTERACTIVE OPTIMIZATION SETUP -================================================================================ - - -[Atomizer] Welcome to Atomizer! I'll help you set up your optimization. - - -[Atomizer] First, I need to know about your model files. - - -[User] I have a bracket model: - - - Part file: tests\Bracket.prt - - Simulation file: tests\Bracket_sim1.sim - -[Atomizer] Great! Let me initialize the Setup Wizard to analyze your model... - - -================================================================================ - STEP 1: MODEL INTROSPECTION -================================================================================ - - -[Atomizer] I'm reading your NX model to find available design parameters... - - -[Atomizer] Found 4 expressions in your model: - - - support_angle: 32.0 degrees - - tip_thickness: 24.0 mm - - p3: 10.0 mm - - support_blend_radius: 10.0 mm - -[Atomizer] Which parameters would you like to use as design variables? - - -[User] I want to optimize tip_thickness and support_angle - - -[Atomizer] Perfect! Now, what's your optimization goal? - - -[User] I want to maximize displacement while keeping stress below - - a safety factor of 4. The material is Aluminum 6061-T6. - -================================================================================ - STEP 2: BASELINE SIMULATION -================================================================================ - - -[Atomizer] To validate your setup, I need to run ONE baseline simulation. - - -[Atomizer] This will generate an OP2 file that I can analyze to ensure - - -[Atomizer] the extraction pipeline will work correctly. - - -[Atomizer] - - -[Atomizer] Running baseline simulation with current parameter values... - - -[NX SOLVER] Starting simulation... - Input file: Bracket_sim1.sim - Working dir: tests - Mode: Journal - Deleted 3 old result file(s) to force fresh solve -[JOURNAL OUTPUT] - Mesh-Based Errors Summary - ------------------------- - - Total: 0 errors and 0 warnings - - - Material-Based Errors Summary - ----------------------------- - - Total: 0 errors and 0 warnings - - - Solution-Based Errors Summary - ----------------------------- - - Iterative Solver Option - More than 80 percent of the elements in this model are 3D elements. - It is therefore recommended that you turn ON the Element Iterative Solver in the "Edit - Solution" dialog. - - Total: 0 errors and 0 warnings - - - Load/BC-Based Errors Summary - ---------------------------- - - Total: 0 errors and 0 warnings - - - Nastran Model Setup Check completed - - - - - *** 20:33:59 *** - Starting Nastran Exporter - - *** 20:33:59 *** - Writing file - c:\Users\antoi\Documents\Atomaste\Atomizer\tests\bracket_sim1-solution_1.dat - - *** 20:33:59 *** - Writing SIMCENTER NASTRAN 2412.0 compatible deck - - *** 20:33:59 *** - Writing Nastran System section - - *** 20:33:59 *** - Writing File Management section - - *** 20:33:59 *** - Writing Executive Control section - - *** 20:33:59 *** - Writing Case Control section - - *** 20:33:59 *** - Writing Bulk Data section - - *** 20:33:59 *** - Writing Nodes - - *** 20:33:59 *** - Writing Elements - - *** 20:33:59 *** - Writing Physical Properties - - *** 20:33:59 *** - Writing Materials - - *** 20:33:59 *** - Writing Degree-of-Freedom Sets - - *** 20:33:59 *** - Writing Loads and Constraints - - *** 20:33:59 *** - Writing Coordinate Systems - - *** 20:33:59 *** - Validating Solution Setup - - *** 20:33:59 *** - Summary of Bulk Data cards written - - +----------+----------+ - | NAME | NUMBER | - +----------+----------+ - | CHEXA | 306 | - | CPENTA | 10 | - | FORCE | 3 | - | GRID | 585 | - | MAT1 | 1 | - | MATT1 | 1 | - | PARAM | 6 | - | PSOLID | 1 | - | SPC | 51 | - | TABLEM1 | 3 | - +----------+----------+ - - *** 20:33:59 *** - Nastran Deck Successfully Written - - [JOURNAL] Opening simulation: c:\Users\antoi\Documents\Atomaste\Atomizer\tests\Bracket_sim1.sim - [JOURNAL] Checking for open parts... - [JOURNAL] Opening simulation fresh from disk... - [JOURNAL] STEP 1: Updating Bracket.prt geometry... - [JOURNAL] Rebuilding geometry with new expression values... - [JOURNAL] Bracket geometry updated (0 errors) - [JOURNAL] STEP 2: Opening Bracket_fem1.fem... - [JOURNAL] Updating FE Model... - [JOURNAL] FE Model updated with new geometry! - [JOURNAL] STEP 3: Switching back to sim part... - [JOURNAL] Switched back to sim part - [JOURNAL] Starting solve... - [JOURNAL] Solve submitted! - [JOURNAL] Solutions solved: -1779619210 - [JOURNAL] Solutions failed: 32764 - [JOURNAL] Solutions skipped: 1218183744 - [JOURNAL] Saving simulation to ensure output files are written... - [JOURNAL] Save complete! -[JOURNAL ERRORS] - Journal execution results for c:\Users\antoi\Documents\Atomaste\Atomizer\tests\_temp_solve_journal.py... - Syntax errors: - Line 0: Traceback (most recent call last): - File "c:\Users\antoi\Documents\Atomaste\Atomizer\tests\_temp_solve_journal.py", line 247, in - sys.exit(0 if success else 1) -[NX SOLVER] Waiting for solve to complete... -[NX SOLVER] Output files detected after 0.5s -[NX SOLVER] Complete in 4.3s -[NX SOLVER] Results: bracket_sim1-solution_1.op2 - -[Atomizer] Baseline simulation complete! OP2 file: bracket_sim1-solution_1.op2 - - -================================================================================ - STEP 3: OP2 INTROSPECTION -================================================================================ - - -[Atomizer] Now I'll analyze the OP2 file to see what's actually in there... - -DEBUG: op2.py:614 combine=True -DEBUG: op2.py:615 -------- reading op2 with read_mode=1 (array sizing) -------- -INFO: op2_scalar.py:1960 op2_filename = 'tests\\bracket_sim1-solution_1.op2' -DEBUG: op2_reader.py:323 date = (11, 16, 25) -WARNING: version.py:88 nx version='2412' is not supported -DEBUG: op2_reader.py:403 mode='nx' version='2412' -DEBUG: op2_scalar.py:2173 table_name=b'IBULK' (explicit bulk data) -DEBUG: op2_scalar.py:2173 table_name=b'ICASE' (explicit case control) -DEBUG: op2_scalar.py:2173 table_name=b'CASECC' (case control) -DEBUG: op2_scalar.py:2173 table_name=b'PVT0' (PARAM cards) -DEBUG: op2_scalar.py:2173 table_name=b'GPL' (grid point list) -DEBUG: op2_scalar.py:2173 table_name=b'GPDT' (grid point locations) -DEBUG: op2_scalar.py:2173 table_name=b'EPT' (property cards) -DEBUG: op2_scalar.py:2173 table_name=b'MPT' (material cards) -DEBUG: op2_scalar.py:2173 table_name=b'GEOM2' (element cards) -DEBUG: op2_scalar.py:2173 table_name=b'GEOM3' (constraint cards) -DEBUG: op2_scalar.py:2173 table_name=b'GEOM4' (load cards) -DEBUG: op2_scalar.py:2173 table_name=b'GEOM1' (grid/coord cards) -DEBUG: op2_scalar.py:2173 table_name=b'BGPDT' (grid points in cid=0 frame) -DEBUG: op2_scalar.py:2173 table_name=b'DIT' (TABLEx cards) -DEBUG: op2_scalar.py:2173 table_name=b'EQEXIN' (internal/external ids) -DEBUG: op2_reader.py:672 eqexin idata=(101, 585, 0, 0, 0, 0, 0) -DEBUG: op2_scalar.py:2173 table_name=b'OQG1' (spc/mpc forces) -DEBUG: op2_scalar.py:2173 table_name=b'BOUGV1' (g-set U in cid=0 frame) -DEBUG: op2_scalar.py:2173 table_name=b'OES1' (linear stress) -DEBUG: oes.py:2840 numwide_real=193 -DEBUG: oes.py:2840 numwide_real=151 -DEBUG: op2.py:634 -------- reading op2 with read_mode=2 (array filling) -------- -DEBUG: op2_reader.py:323 date = (11, 16, 25) -WARNING: version.py:88 nx version='2412' is not supported -DEBUG: op2_scalar.py:2173 table_name=b'IBULK' (explicit bulk data) -DEBUG: op2_scalar.py:2173 table_name=b'ICASE' (explicit case control) -DEBUG: op2_scalar.py:2173 table_name=b'CASECC' (case control) -DEBUG: op2_scalar.py:2173 table_name=b'PVT0' (PARAM cards) -DEBUG: op2_scalar.py:2173 table_name=b'GPL' (grid point list) -DEBUG: op2_scalar.py:2173 table_name=b'GPDT' (grid point locations) -DEBUG: op2_scalar.py:2173 table_name=b'EPT' (property cards) -DEBUG: op2_scalar.py:2173 table_name=b'MPT' (material cards) -DEBUG: op2_scalar.py:2173 table_name=b'GEOM2' (element cards) -DEBUG: op2_scalar.py:2173 table_name=b'GEOM3' (constraint cards) -DEBUG: op2_scalar.py:2173 table_name=b'GEOM4' (load cards) -DEBUG: op2_scalar.py:2173 table_name=b'GEOM1' (grid/coord cards) -DEBUG: op2_scalar.py:2173 table_name=b'BGPDT' (grid points in cid=0 frame) -DEBUG: op2_scalar.py:2173 table_name=b'DIT' (TABLEx cards) -DEBUG: op2_scalar.py:2173 table_name=b'EQEXIN' (internal/external ids) -DEBUG: op2_reader.py:672 eqexin idata=(101, 585, 0, 0, 0, 0, 0) -DEBUG: op2_scalar.py:2173 table_name=b'OQG1' (spc/mpc forces) -DEBUG: op2_scalar.py:2173 table_name=b'BOUGV1' (g-set U in cid=0 frame) -DEBUG: op2_scalar.py:2173 table_name=b'OES1' (linear stress) -DEBUG: oes.py:2840 numwide_real=193 -DEBUG: oes.py:2840 numwide_real=151 -DEBUG: op2.py:932 combine_results -DEBUG: op2.py:648 finished reading op2 - -[Atomizer] Here's what I found in your OP2 file: - - - Element types with stress: CHEXA, CPENTA - - Available results: displacement, stress - - Number of elements: 0 - - Number of nodes: 0 - -================================================================================ - STEP 4: LLM-GUIDED CONFIGURATION -================================================================================ - - -[Atomizer] Based on your goal and the OP2 contents, here's what I recommend: - - -[Atomizer] - - -[Atomizer] OBJECTIVE: - - -[Atomizer] - Maximize displacement (minimize negative displacement) - - -[Atomizer] - - -[Atomizer] EXTRACTIONS: - - -[Atomizer] - Extract displacement from OP2 - - -[Atomizer] - Extract stress from CHEXA elements - - -[Atomizer] (I detected these element types in your model) - - -[Atomizer] - - -[Atomizer] CALCULATIONS: - - -[Atomizer] - Calculate safety factor: SF = 276 MPa / max_stress - - -[Atomizer] - Negate displacement for minimization - - -[Atomizer] - - -[Atomizer] CONSTRAINT: - - -[Atomizer] - Enforce SF >= 4.0 with penalty - - -[Atomizer] - - -[Atomizer] DESIGN VARIABLES: - - -[Atomizer] - tip_thickness: 24.0 mm (suggest range: 15-25 mm) - - -[Atomizer] - support_angle: 32.0 degrees (suggest range: 20-40 deg) - - -[User] That looks good! Let's use those ranges. - - -================================================================================ - STEP 5: PIPELINE VALIDATION (DRY RUN) -================================================================================ - - -[Atomizer] Before running 20-30 optimization trials, let me validate that - - -[Atomizer] EVERYTHING works correctly with your baseline OP2 file... - - -[Atomizer] - - -[Atomizer] Running dry-run validation... - -DEBUG: op2.py:614 combine=True -DEBUG: op2.py:615 -------- reading op2 with read_mode=1 (array sizing) -------- -INFO: op2_scalar.py:1960 op2_filename = 'tests\\bracket_sim1-solution_1.op2' -DEBUG: op2_reader.py:323 date = (11, 16, 25) -WARNING: version.py:88 nx version='2412' is not supported -DEBUG: op2_reader.py:403 mode='nx' version='2412' -DEBUG: op2_scalar.py:2173 table_name=b'IBULK' (explicit bulk data) -DEBUG: op2_scalar.py:2173 table_name=b'ICASE' (explicit case control) -DEBUG: op2_scalar.py:2173 table_name=b'CASECC' (case control) -DEBUG: op2_scalar.py:2173 table_name=b'PVT0' (PARAM cards) -DEBUG: op2_scalar.py:2173 table_name=b'GPL' (grid point list) -DEBUG: op2_scalar.py:2173 table_name=b'GPDT' (grid point locations) -DEBUG: op2_scalar.py:2173 table_name=b'EPT' (property cards) -DEBUG: op2_scalar.py:2173 table_name=b'MPT' (material cards) -DEBUG: op2_scalar.py:2173 table_name=b'GEOM2' (element cards) -DEBUG: op2_scalar.py:2173 table_name=b'GEOM3' (constraint cards) -DEBUG: op2_scalar.py:2173 table_name=b'GEOM4' (load cards) -DEBUG: op2_scalar.py:2173 table_name=b'GEOM1' (grid/coord cards) -DEBUG: op2_scalar.py:2173 table_name=b'BGPDT' (grid points in cid=0 frame) -DEBUG: op2_scalar.py:2173 table_name=b'DIT' (TABLEx cards) -DEBUG: op2_scalar.py:2173 table_name=b'EQEXIN' (internal/external ids) -DEBUG: op2_reader.py:672 eqexin idata=(101, 585, 0, 0, 0, 0, 0) -DEBUG: op2_scalar.py:2173 table_name=b'OQG1' (spc/mpc forces) -DEBUG: op2_scalar.py:2173 table_name=b'BOUGV1' (g-set U in cid=0 frame) -DEBUG: op2_scalar.py:2173 table_name=b'OES1' (linear stress) -DEBUG: oes.py:2840 numwide_real=193 -DEBUG: oes.py:2840 numwide_real=151 -DEBUG: op2.py:634 -------- reading op2 with read_mode=2 (array filling) -------- -DEBUG: op2_reader.py:323 date = (11, 16, 25) -WARNING: version.py:88 nx version='2412' is not supported -DEBUG: op2_scalar.py:2173 table_name=b'IBULK' (explicit bulk data) -DEBUG: op2_scalar.py:2173 table_name=b'ICASE' (explicit case control) -DEBUG: op2_scalar.py:2173 table_name=b'CASECC' (case control) -DEBUG: op2_scalar.py:2173 table_name=b'PVT0' (PARAM cards) -DEBUG: op2_scalar.py:2173 table_name=b'GPL' (grid point list) -DEBUG: op2_scalar.py:2173 table_name=b'GPDT' (grid point locations) -DEBUG: op2_scalar.py:2173 table_name=b'EPT' (property cards) -DEBUG: op2_scalar.py:2173 table_name=b'MPT' (material cards) -DEBUG: op2_scalar.py:2173 table_name=b'GEOM2' (element cards) -DEBUG: op2_scalar.py:2173 table_name=b'GEOM3' (constraint cards) -DEBUG: op2_scalar.py:2173 table_name=b'GEOM4' (load cards) -DEBUG: op2_scalar.py:2173 table_name=b'GEOM1' (grid/coord cards) -DEBUG: op2_scalar.py:2173 table_name=b'BGPDT' (grid points in cid=0 frame) -DEBUG: op2_scalar.py:2173 table_name=b'DIT' (TABLEx cards) -DEBUG: op2_scalar.py:2173 table_name=b'EQEXIN' (internal/external ids) -DEBUG: op2_reader.py:672 eqexin idata=(101, 585, 0, 0, 0, 0, 0) -DEBUG: op2_scalar.py:2173 table_name=b'OQG1' (spc/mpc forces) -DEBUG: op2_scalar.py:2173 table_name=b'BOUGV1' (g-set U in cid=0 frame) -DEBUG: op2_scalar.py:2173 table_name=b'OES1' (linear stress) -DEBUG: oes.py:2840 numwide_real=193 -DEBUG: oes.py:2840 numwide_real=151 -DEBUG: op2.py:932 combine_results -DEBUG: op2.py:648 finished reading op2 -DEBUG: op2.py:614 combine=True -DEBUG: op2.py:615 -------- reading op2 with read_mode=1 (array sizing) -------- -INFO: op2_scalar.py:1960 op2_filename = 'tests\\bracket_sim1-solution_1.op2' -DEBUG: op2_reader.py:323 date = (11, 16, 25) -Extraction failed: extract_solid_stress - No ctetra stress results in OP2 - \u274c extract_solid_stress: No ctetra stress results in OP2 - \u274c calculate_safety_factor: name 'max_von_mises' is not defined -Required input 'min_force' not found in context -Hook 'ratio_hook' failed: Missing required input: min_force -Traceback (most recent call last): - File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\hooks.py", line 72, in execute - result = self.function(context) - ^^^^^^^^^^^^^^^^^^^^^^ - File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\post_calculation\min_to_avg_ratio_hook.py", line 38, in ratio_hook - raise ValueError(f"Missing required input: min_force") -ValueError: Missing required input: min_force -Hook 'ratio_hook' failed: Missing required input: min_force -Required input 'max_stress' not found in context -Hook 'safety_factor_hook' failed: Missing required input: max_stress -Traceback (most recent call last): - File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\hooks.py", line 72, in execute - result = self.function(context) - ^^^^^^^^^^^^^^^^^^^^^^ - File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\post_calculation\safety_factor_hook.py", line 38, in safety_factor_hook - raise ValueError(f"Missing required input: max_stress") -ValueError: Missing required input: max_stress -Hook 'safety_factor_hook' failed: Missing required input: max_stress -Required input 'norm_stress' not found in context -Hook 'weighted_objective_hook' failed: Missing required input: norm_stress -Traceback (most recent call last): - File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\hooks.py", line 72, in execute - result = self.function(context) - ^^^^^^^^^^^^^^^^^^^^^^ - File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\post_calculation\weighted_objective_test.py", line 38, in weighted_objective_hook - raise ValueError(f"Missing required input: norm_stress") -ValueError: Missing required input: norm_stress -Hook 'weighted_objective_hook' failed: Missing required input: norm_stress - \u26a0\ufe0f No explicit objective, using: max_displacement -WARNING: version.py:88 nx version='2412' is not supported -DEBUG: op2_reader.py:403 mode='nx' version='2412' -DEBUG: op2_scalar.py:2173 table_name=b'IBULK' (explicit bulk data) -DEBUG: op2_scalar.py:2173 table_name=b'ICASE' (explicit case control) -DEBUG: op2_scalar.py:2173 table_name=b'CASECC' (case control) -DEBUG: op2_scalar.py:2173 table_name=b'PVT0' (PARAM cards) -DEBUG: op2_scalar.py:2173 table_name=b'GPL' (grid point list) -DEBUG: op2_scalar.py:2173 table_name=b'GPDT' (grid point locations) -DEBUG: op2_scalar.py:2173 table_name=b'EPT' (property cards) -DEBUG: op2_scalar.py:2173 table_name=b'MPT' (material cards) -DEBUG: op2_scalar.py:2173 table_name=b'GEOM2' (element cards) -DEBUG: op2_scalar.py:2173 table_name=b'GEOM3' (constraint cards) -DEBUG: op2_scalar.py:2173 table_name=b'GEOM4' (load cards) -DEBUG: op2_scalar.py:2173 table_name=b'GEOM1' (grid/coord cards) -DEBUG: op2_scalar.py:2173 table_name=b'BGPDT' (grid points in cid=0 frame) -DEBUG: op2_scalar.py:2173 table_name=b'DIT' (TABLEx cards) -DEBUG: op2_scalar.py:2173 table_name=b'EQEXIN' (internal/external ids) -DEBUG: op2_reader.py:672 eqexin idata=(101, 585, 0, 0, 0, 0, 0) -DEBUG: op2_scalar.py:2173 table_name=b'OQG1' (spc/mpc forces) -DEBUG: op2_scalar.py:2173 table_name=b'BOUGV1' (g-set U in cid=0 frame) -DEBUG: op2_scalar.py:2173 table_name=b'OES1' (linear stress) -DEBUG: oes.py:2840 numwide_real=193 -DEBUG: oes.py:2840 numwide_real=151 -DEBUG: op2.py:634 -------- reading op2 with read_mode=2 (array filling) -------- -DEBUG: op2_reader.py:323 date = (11, 16, 25) -WARNING: version.py:88 nx version='2412' is not supported -DEBUG: op2_scalar.py:2173 table_name=b'IBULK' (explicit bulk data) -DEBUG: op2_scalar.py:2173 table_name=b'ICASE' (explicit case control) -DEBUG: op2_scalar.py:2173 table_name=b'CASECC' (case control) -DEBUG: op2_scalar.py:2173 table_name=b'PVT0' (PARAM cards) -DEBUG: op2_scalar.py:2173 table_name=b'GPL' (grid point list) -DEBUG: op2_scalar.py:2173 table_name=b'GPDT' (grid point locations) -DEBUG: op2_scalar.py:2173 table_name=b'EPT' (property cards) -DEBUG: op2_scalar.py:2173 table_name=b'MPT' (material cards) -DEBUG: op2_scalar.py:2173 table_name=b'GEOM2' (element cards) -DEBUG: op2_scalar.py:2173 table_name=b'GEOM3' (constraint cards) -DEBUG: op2_scalar.py:2173 table_name=b'GEOM4' (load cards) -DEBUG: op2_scalar.py:2173 table_name=b'GEOM1' (grid/coord cards) -DEBUG: op2_scalar.py:2173 table_name=b'BGPDT' (grid points in cid=0 frame) -DEBUG: op2_scalar.py:2173 table_name=b'DIT' (TABLEx cards) -DEBUG: op2_scalar.py:2173 table_name=b'EQEXIN' (internal/external ids) -DEBUG: op2_reader.py:672 eqexin idata=(101, 585, 0, 0, 0, 0, 0) -DEBUG: op2_scalar.py:2173 table_name=b'OQG1' (spc/mpc forces) -DEBUG: op2_scalar.py:2173 table_name=b'BOUGV1' (g-set U in cid=0 frame) -DEBUG: op2_scalar.py:2173 table_name=b'OES1' (linear stress) -DEBUG: oes.py:2840 numwide_real=193 -DEBUG: oes.py:2840 numwide_real=151 -DEBUG: op2.py:932 combine_results -DEBUG: op2.py:648 finished reading op2 - -[Wizard] VALIDATION RESULTS: -[Wizard] [OK] extractor: ['max_displacement', 'max_disp_node', 'max_disp_x', 'max_disp_y', 'max_disp_z'] -[Wizard] [FAIL] extractor: No ctetra stress results in OP2 -[Wizard] [FAIL] calculation: name 'max_von_mises' is not defined -[Wizard] [OK] calculation: Created ['neg_displacement'] -[Wizard] [OK] hook: 3 results -[Wizard] [OK] objective: 0.36178338527679443 - - -================================================================================ - VALIDATION FAILED! -================================================================================ - - -[Atomizer] The validation found issues that need to be fixed: - - -Traceback (most recent call last): - File "c:\Users\antoi\Documents\Atomaste\Atomizer\tests\interactive_optimization_setup.py", line 324, in - main() - File "c:\Users\antoi\Documents\Atomaste\Atomizer\tests\interactive_optimization_setup.py", line 316, in main - print(f" [ERROR] {result.message}") - File "C:\Users\antoi\anaconda3\envs\test_env\Lib\encodings\cp1252.py", line 19, in encode - return codecs.charmap_encode(input,self.errors,encoding_table)[0] - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -UnicodeEncodeError: 'charmap' codec can't encode character '\u274c' in position 19: character maps to diff --git a/archive/temp_outputs/nn_only_optimization_study.db b/archive/temp_outputs/nn_only_optimization_study.db deleted file mode 100644 index 64d7c7e0..00000000 Binary files a/archive/temp_outputs/nn_only_optimization_study.db and /dev/null differ diff --git a/archive/temp_outputs/nn_optimization_results.json b/archive/temp_outputs/nn_optimization_results.json deleted file mode 100644 index 13680ad4..00000000 --- a/archive/temp_outputs/nn_optimization_results.json +++ /dev/null @@ -1,1949 +0,0 @@ -{ - "n_trials": 1000, - "total_time_s": 95.71743202209473, - "avg_trial_time_ms": 65.17179727554321, - "trials_per_second": 10.447417767843659, - "pareto_front_size": 194, - "pareto_designs": [ - { - "mass": 3109.72509765625, - "frequency": 41.27280807495117, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 0.6774090691229979, - "holes_diameter": 1.3760165166357226, - "hole_count": 6 - } - }, - { - "mass": 3096.76416015625, - "frequency": 34.564151763916016, - "params": { - "beam_half_core_thickness": 1.3962806565290555, - "beam_face_thickness": 1.1614600106791797, - "holes_diameter": 1.8917716350410352, - "hole_count": 6 - } - }, - { - "mass": 3102.864013671875, - "frequency": 36.95468521118164, - "params": { - "beam_half_core_thickness": 1.275741052928804, - "beam_face_thickness": 0.9962803283172962, - "holes_diameter": 1.3760165166357226, - "hole_count": 6 - } - }, - { - "mass": 3096.76416015625, - "frequency": 34.564151763916016, - "params": { - "beam_half_core_thickness": 1.3962806565290555, - "beam_face_thickness": 1.1614600106791797, - "holes_diameter": 1.8917716350410352, - "hole_count": 6 - } - }, - { - "mass": 3093.66064453125, - "frequency": 32.9761962890625, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 1.1614600106791797, - "holes_diameter": 3.8431786541424526, - "hole_count": 6 - } - }, - { - "mass": 3094.2099609375, - "frequency": 33.786956787109375, - "params": { - "beam_half_core_thickness": 1.3962806565290555, - "beam_face_thickness": 1.1614600106791797, - "holes_diameter": 0.7221990673149776, - "hole_count": 6 - } - }, - { - "mass": 3080.55517578125, - "frequency": 27.044281005859375, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 1.4807737157808827, - "holes_diameter": 2.232659406112648, - "hole_count": 6 - } - }, - { - "mass": 3089.6669921875, - "frequency": 31.764049530029297, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 1.1472343672644914, - "holes_diameter": 1.6817796946497336, - "hole_count": 6 - } - }, - { - "mass": 3103.40673828125, - "frequency": 37.29261016845703, - "params": { - "beam_half_core_thickness": 1.4787275793943095, - "beam_face_thickness": 1.05438520284107, - "holes_diameter": 1.04663725179546, - "hole_count": 6 - } - }, - { - "mass": 3105.3232421875, - "frequency": 37.639102935791016, - "params": { - "beam_half_core_thickness": 1.275741052928804, - "beam_face_thickness": 0.9962803283172962, - "holes_diameter": 2.218218808693128, - "hole_count": 6 - } - }, - { - "mass": 3122.405029296875, - "frequency": 46.42044448852539, - "params": { - "beam_half_core_thickness": 1.275741052928804, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 1.04663725179546, - "hole_count": 6 - } - }, - { - "mass": 3094.12255859375, - "frequency": 33.4831657409668, - "params": { - "beam_half_core_thickness": 1.0456383489016772, - "beam_face_thickness": 1.05438520284107, - "holes_diameter": 1.04663725179546, - "hole_count": 6 - } - }, - { - "mass": 3112.38916015625, - "frequency": 42.01555633544922, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 0.6774090691229979, - "holes_diameter": 2.232659406112648, - "hole_count": 6 - } - }, - { - "mass": 3111.227294921875, - "frequency": 41.72402572631836, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 0.6774090691229979, - "holes_diameter": 1.8917716350410352, - "hole_count": 6 - } - }, - { - "mass": 3097.646728515625, - "frequency": 34.9920539855957, - "params": { - "beam_half_core_thickness": 1.4787275793943095, - "beam_face_thickness": 1.1472343672644914, - "holes_diameter": 1.04663725179546, - "hole_count": 6 - } - }, - { - "mass": 3173.52978515625, - "frequency": 65.11587524414062, - "params": { - "beam_half_core_thickness": 2.525123122174734, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 1.836549713019586, - "hole_count": 6 - } - }, - { - "mass": 3135.6943359375, - "frequency": 50.53882598876953, - "params": { - "beam_half_core_thickness": 1.4787275793943095, - "beam_face_thickness": 0.5295594081047337, - "holes_diameter": 2.232659406112648, - "hole_count": 6 - } - }, - { - "mass": 3089.5693359375, - "frequency": 31.684988021850586, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 1.1614600106791797, - "holes_diameter": 1.8917716350410352, - "hole_count": 6 - } - }, - { - "mass": 3089.6669921875, - "frequency": 31.764049530029297, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 1.1472343672644914, - "holes_diameter": 1.6817796946497336, - "hole_count": 6 - } - }, - { - "mass": 3135.0380859375, - "frequency": 49.785484313964844, - "params": { - "beam_half_core_thickness": 1.3962806565290555, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 3.316810595785428, - "hole_count": 6 - } - }, - { - "mass": 3107.002197265625, - "frequency": 37.8323974609375, - "params": { - "beam_half_core_thickness": 1.3962806565290555, - "beam_face_thickness": 1.0898121175739686, - "holes_diameter": 3.926030775169807, - "hole_count": 6 - } - }, - { - "mass": 3102.023193359375, - "frequency": 36.71758270263672, - "params": { - "beam_half_core_thickness": 1.275741052928804, - "beam_face_thickness": 0.9962803283172962, - "holes_diameter": 1.0886680383459773, - "hole_count": 6 - } - }, - { - "mass": 3094.9267578125, - "frequency": 34.005165100097656, - "params": { - "beam_half_core_thickness": 1.3962806565290555, - "beam_face_thickness": 1.1614600106791797, - "holes_diameter": 1.0495899785803204, - "hole_count": 6 - } - }, - { - "mass": 3071.0302734375, - "frequency": 17.529468536376953, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 2.084477684297932, - "holes_diameter": 1.3760165166357226, - "hole_count": 6 - } - }, - { - "mass": 3107.002197265625, - "frequency": 37.8323974609375, - "params": { - "beam_half_core_thickness": 1.3962806565290555, - "beam_face_thickness": 1.0898121175739686, - "holes_diameter": 3.926030775169807, - "hole_count": 6 - } - }, - { - "mass": 3102.89013671875, - "frequency": 36.96204376220703, - "params": { - "beam_half_core_thickness": 1.275741052928804, - "beam_face_thickness": 0.9962803283172962, - "holes_diameter": 1.3849309774407694, - "hole_count": 6 - } - }, - { - "mass": 3262.051513671875, - "frequency": 96.78173065185547, - "params": { - "beam_half_core_thickness": 4.941868217247784, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 4.282708936636067, - "hole_count": 6 - } - }, - { - "mass": 3188.510986328125, - "frequency": 70.62683868408203, - "params": { - "beam_half_core_thickness": 2.8314589621296857, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 0.8832183249749435, - "hole_count": 6 - } - }, - { - "mass": 3083.8759765625, - "frequency": 28.221725463867188, - "params": { - "beam_half_core_thickness": 1.0456383489016772, - "beam_face_thickness": 1.5041821264361572, - "holes_diameter": 4.282708936636067, - "hole_count": 6 - } - }, - { - "mass": 3089.6669921875, - "frequency": 31.764049530029297, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 1.1472343672644914, - "holes_diameter": 1.6817796946497336, - "hole_count": 6 - } - }, - { - "mass": 3111.227294921875, - "frequency": 41.72402572631836, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 0.6774090691229979, - "holes_diameter": 1.8917716350410352, - "hole_count": 6 - } - }, - { - "mass": 3095.931396484375, - "frequency": 34.447078704833984, - "params": { - "beam_half_core_thickness": 1.275741052928804, - "beam_face_thickness": 1.0898121175739686, - "holes_diameter": 0.8590708357229966, - "hole_count": 6 - } - }, - { - "mass": 3160.83740234375, - "frequency": 60.34223175048828, - "params": { - "beam_half_core_thickness": 2.231851559763225, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 2.4096722447203405, - "hole_count": 6 - } - }, - { - "mass": 3108.32958984375, - "frequency": 40.84846496582031, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 0.6774090691229979, - "holes_diameter": 0.8929305745625548, - "hole_count": 6 - } - }, - { - "mass": 3105.3232421875, - "frequency": 37.639102935791016, - "params": { - "beam_half_core_thickness": 1.275741052928804, - "beam_face_thickness": 0.9962803283172962, - "holes_diameter": 2.218218808693128, - "hole_count": 6 - } - }, - { - "mass": 3097.608154296875, - "frequency": 34.803466796875, - "params": { - "beam_half_core_thickness": 1.3962806565290555, - "beam_face_thickness": 1.1614600106791797, - "holes_diameter": 2.232659406112648, - "hole_count": 6 - } - }, - { - "mass": 3090.87744140625, - "frequency": 32.1515007019043, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 1.1531677996470289, - "holes_diameter": 2.4096722447203405, - "hole_count": 6 - } - }, - { - "mass": 3089.6669921875, - "frequency": 31.764049530029297, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 1.1472343672644914, - "holes_diameter": 1.6817796946497336, - "hole_count": 6 - } - }, - { - "mass": 3096.76416015625, - "frequency": 34.564151763916016, - "params": { - "beam_half_core_thickness": 1.3962806565290555, - "beam_face_thickness": 1.1614600106791797, - "holes_diameter": 1.8917716350410352, - "hole_count": 6 - } - }, - { - "mass": 3228.88623046875, - "frequency": 80.48345947265625, - "params": { - "beam_half_core_thickness": 3.3278183736548397, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 0.8832183249749435, - "hole_count": 6 - } - }, - { - "mass": 3111.227294921875, - "frequency": 41.72402572631836, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 0.6774090691229979, - "holes_diameter": 1.8917716350410352, - "hole_count": 6 - } - }, - { - "mass": 3152.52197265625, - "frequency": 57.90596008300781, - "params": { - "beam_half_core_thickness": 2.151938382768862, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 1.04663725179546, - "hole_count": 6 - } - }, - { - "mass": 3113.6640625, - "frequency": 43.6205940246582, - "params": { - "beam_half_core_thickness": 1.0456383489016772, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 0.7541304081028741, - "hole_count": 6 - } - }, - { - "mass": 3093.66064453125, - "frequency": 32.9761962890625, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 1.1614600106791797, - "holes_diameter": 3.8431786541424526, - "hole_count": 6 - } - }, - { - "mass": 3160.83740234375, - "frequency": 60.34223175048828, - "params": { - "beam_half_core_thickness": 2.231851559763225, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 2.4096722447203405, - "hole_count": 6 - } - }, - { - "mass": 3173.52978515625, - "frequency": 65.11587524414062, - "params": { - "beam_half_core_thickness": 2.525123122174734, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 1.836549713019586, - "hole_count": 6 - } - }, - { - "mass": 3094.9267578125, - "frequency": 34.005165100097656, - "params": { - "beam_half_core_thickness": 1.3962806565290555, - "beam_face_thickness": 1.1614600106791797, - "holes_diameter": 1.0495899785803204, - "hole_count": 6 - } - }, - { - "mass": 3080.7421875, - "frequency": 27.05267333984375, - "params": { - "beam_half_core_thickness": 1.0456383489016772, - "beam_face_thickness": 1.5041821264361572, - "holes_diameter": 2.4096722447203405, - "hole_count": 6 - } - }, - { - "mass": 3161.857177734375, - "frequency": 61.57403564453125, - "params": { - "beam_half_core_thickness": 2.367558019192796, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 1.04663725179546, - "hole_count": 6 - } - }, - { - "mass": 3217.958740234375, - "frequency": 77.16204833984375, - "params": { - "beam_half_core_thickness": 3.1585748489918766, - "beam_face_thickness": 0.5878874473226041, - "holes_diameter": 1.836549713019586, - "hole_count": 6 - } - }, - { - "mass": 3166.849609375, - "frequency": 62.69020080566406, - "params": { - "beam_half_core_thickness": 2.5530893500744107, - "beam_face_thickness": 0.6324388321433609, - "holes_diameter": 1.0886680383459773, - "hole_count": 6 - } - }, - { - "mass": 3112.628173828125, - "frequency": 42.17412185668945, - "params": { - "beam_half_core_thickness": 1.0456383489016772, - "beam_face_thickness": 0.6774090691229979, - "holes_diameter": 1.8917716350410352, - "hole_count": 6 - } - }, - { - "mass": 3083.8759765625, - "frequency": 28.221725463867188, - "params": { - "beam_half_core_thickness": 1.0456383489016772, - "beam_face_thickness": 1.5041821264361572, - "holes_diameter": 4.282708936636067, - "hole_count": 6 - } - }, - { - "mass": 3093.66064453125, - "frequency": 32.9761962890625, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 1.1614600106791797, - "holes_diameter": 3.8431786541424526, - "hole_count": 6 - } - }, - { - "mass": 3093.839599609375, - "frequency": 33.03086853027344, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 1.1614600106791797, - "holes_diameter": 3.926030775169807, - "hole_count": 6 - } - }, - { - "mass": 3164.42041015625, - "frequency": 61.937461853027344, - "params": { - "beam_half_core_thickness": 2.231851559763225, - "beam_face_thickness": 0.5041252715430171, - "holes_diameter": 2.4096722447203405, - "hole_count": 6 - } - }, - { - "mass": 3118.00390625, - "frequency": 45.1279411315918, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 0.5295594081047337, - "holes_diameter": 2.232659406112648, - "hole_count": 6 - } - }, - { - "mass": 3135.6943359375, - "frequency": 50.53882598876953, - "params": { - "beam_half_core_thickness": 1.4787275793943095, - "beam_face_thickness": 0.5295594081047337, - "holes_diameter": 2.232659406112648, - "hole_count": 6 - } - }, - { - "mass": 3073.2978515625, - "frequency": 21.117284774780273, - "params": { - "beam_half_core_thickness": 1.0456383489016772, - "beam_face_thickness": 1.8307782424776682, - "holes_diameter": 0.8832183249749435, - "hole_count": 6 - } - }, - { - "mass": 3108.32958984375, - "frequency": 40.84846496582031, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 0.6774090691229979, - "holes_diameter": 0.8929305745625548, - "hole_count": 6 - } - }, - { - "mass": 3248.34130859375, - "frequency": 84.75800323486328, - "params": { - "beam_half_core_thickness": 3.5306450169861634, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 1.836549713019586, - "hole_count": 6 - } - }, - { - "mass": 3135.0380859375, - "frequency": 49.785484313964844, - "params": { - "beam_half_core_thickness": 1.3962806565290555, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 3.316810595785428, - "hole_count": 6 - } - }, - { - "mass": 3156.781494140625, - "frequency": 60.318626403808594, - "params": { - "beam_half_core_thickness": 2.231851559763225, - "beam_face_thickness": 0.5041252715430171, - "holes_diameter": 0.6060647226757658, - "hole_count": 6 - } - }, - { - "mass": 3183.53955078125, - "frequency": 68.1011734008789, - "params": { - "beam_half_core_thickness": 2.8314589621296857, - "beam_face_thickness": 0.6324388321433609, - "holes_diameter": 1.0886680383459773, - "hole_count": 6 - } - }, - { - "mass": 3129.518798828125, - "frequency": 48.83821105957031, - "params": { - "beam_half_core_thickness": 1.275741052928804, - "beam_face_thickness": 0.5041252715430171, - "holes_diameter": 2.4096722447203405, - "hole_count": 6 - } - }, - { - "mass": 3164.42041015625, - "frequency": 61.937461853027344, - "params": { - "beam_half_core_thickness": 2.231851559763225, - "beam_face_thickness": 0.5041252715430171, - "holes_diameter": 2.4096722447203405, - "hole_count": 6 - } - }, - { - "mass": 3172.130126953125, - "frequency": 65.0611572265625, - "params": { - "beam_half_core_thickness": 2.5530893500744107, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 1.0886680383459773, - "hole_count": 6 - } - }, - { - "mass": 3090.87744140625, - "frequency": 32.1515007019043, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 1.1531677996470289, - "holes_diameter": 2.4096722447203405, - "hole_count": 6 - } - }, - { - "mass": 3082.054443359375, - "frequency": 27.684707641601562, - "params": { - "beam_half_core_thickness": 1.0456383489016772, - "beam_face_thickness": 1.4807737157808827, - "holes_diameter": 2.8389005317752587, - "hole_count": 6 - } - }, - { - "mass": 3117.26318359375, - "frequency": 44.64860916137695, - "params": { - "beam_half_core_thickness": 1.0456383489016772, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 1.8917716350410352, - "hole_count": 6 - } - }, - { - "mass": 3090.87744140625, - "frequency": 32.1515007019043, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 1.1531677996470289, - "holes_diameter": 2.4096722447203405, - "hole_count": 6 - } - }, - { - "mass": 3073.2978515625, - "frequency": 21.117284774780273, - "params": { - "beam_half_core_thickness": 1.0456383489016772, - "beam_face_thickness": 1.8307782424776682, - "holes_diameter": 0.8832183249749435, - "hole_count": 6 - } - }, - { - "mass": 3217.958740234375, - "frequency": 77.16204833984375, - "params": { - "beam_half_core_thickness": 3.1585748489918766, - "beam_face_thickness": 0.5878874473226041, - "holes_diameter": 1.836549713019586, - "hole_count": 6 - } - }, - { - "mass": 3262.051513671875, - "frequency": 96.78173065185547, - "params": { - "beam_half_core_thickness": 4.941868217247784, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 4.282708936636067, - "hole_count": 6 - } - }, - { - "mass": 3103.40673828125, - "frequency": 37.29261016845703, - "params": { - "beam_half_core_thickness": 1.4787275793943095, - "beam_face_thickness": 1.05438520284107, - "holes_diameter": 1.04663725179546, - "hole_count": 6 - } - }, - { - "mass": 3173.52978515625, - "frequency": 65.11587524414062, - "params": { - "beam_half_core_thickness": 2.525123122174734, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 1.836549713019586, - "hole_count": 6 - } - }, - { - "mass": 3090.87744140625, - "frequency": 32.1515007019043, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 1.1531677996470289, - "holes_diameter": 2.4096722447203405, - "hole_count": 6 - } - }, - { - "mass": 3114.430908203125, - "frequency": 44.114444732666016, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 0.5295594081047337, - "holes_diameter": 1.0886680383459773, - "hole_count": 6 - } - }, - { - "mass": 3080.55517578125, - "frequency": 27.044281005859375, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 1.4807737157808827, - "holes_diameter": 2.232659406112648, - "hole_count": 6 - } - }, - { - "mass": 3220.786376953125, - "frequency": 77.47857666015625, - "params": { - "beam_half_core_thickness": 3.1585748489918766, - "beam_face_thickness": 0.5878874473226041, - "holes_diameter": 2.4096722447203405, - "hole_count": 6 - } - }, - { - "mass": 3117.087646484375, - "frequency": 44.599117279052734, - "params": { - "beam_half_core_thickness": 1.0456383489016772, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 1.836549713019586, - "hole_count": 6 - } - }, - { - "mass": 3088.261962890625, - "frequency": 31.146636962890625, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 1.1614600106791797, - "holes_diameter": 1.0495899785803204, - "hole_count": 6 - } - }, - { - "mass": 3248.34130859375, - "frequency": 84.75800323486328, - "params": { - "beam_half_core_thickness": 3.5306450169861634, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 1.836549713019586, - "hole_count": 6 - } - }, - { - "mass": 3238.73779296875, - "frequency": 83.15704345703125, - "params": { - "beam_half_core_thickness": 3.392066357243967, - "beam_face_thickness": 0.5041252715430171, - "holes_diameter": 0.6060647226757658, - "hole_count": 6 - } - }, - { - "mass": 3080.55517578125, - "frequency": 27.044281005859375, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 1.4807737157808827, - "holes_diameter": 2.232659406112648, - "hole_count": 6 - } - }, - { - "mass": 3183.53955078125, - "frequency": 68.1011734008789, - "params": { - "beam_half_core_thickness": 2.8314589621296857, - "beam_face_thickness": 0.6324388321433609, - "holes_diameter": 1.0886680383459773, - "hole_count": 6 - } - }, - { - "mass": 3228.7138671875, - "frequency": 80.33207702636719, - "params": { - "beam_half_core_thickness": 3.3101088081230605, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 1.04663725179546, - "hole_count": 6 - } - }, - { - "mass": 3211.88720703125, - "frequency": 75.36439514160156, - "params": { - "beam_half_core_thickness": 3.1585748489918766, - "beam_face_thickness": 0.6324388321433609, - "holes_diameter": 1.836549713019586, - "hole_count": 6 - } - }, - { - "mass": 3213.064697265625, - "frequency": 76.58409118652344, - "params": { - "beam_half_core_thickness": 3.1585748489918766, - "beam_face_thickness": 0.5878874473226041, - "holes_diameter": 0.8832183249749435, - "hole_count": 6 - } - }, - { - "mass": 3090.87744140625, - "frequency": 32.1515007019043, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 1.1531677996470289, - "holes_diameter": 2.4096722447203405, - "hole_count": 6 - } - }, - { - "mass": 3096.890380859375, - "frequency": 34.606285095214844, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 0.9962803283172962, - "holes_diameter": 1.3760165166357226, - "hole_count": 6 - } - }, - { - "mass": 3221.646484375, - "frequency": 78.25287628173828, - "params": { - "beam_half_core_thickness": 3.1585748489918766, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 1.836549713019586, - "hole_count": 6 - } - }, - { - "mass": 3129.201904296875, - "frequency": 48.39259719848633, - "params": { - "beam_half_core_thickness": 1.3962806565290555, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 1.6817796946497336, - "hole_count": 6 - } - }, - { - "mass": 3161.857177734375, - "frequency": 61.57403564453125, - "params": { - "beam_half_core_thickness": 2.367558019192796, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 1.04663725179546, - "hole_count": 6 - } - }, - { - "mass": 3125.95947265625, - "frequency": 46.74691390991211, - "params": { - "beam_half_core_thickness": 1.5422929960154241, - "beam_face_thickness": 0.6774090691229979, - "holes_diameter": 0.8929305745625548, - "hole_count": 6 - } - }, - { - "mass": 3188.510986328125, - "frequency": 70.62683868408203, - "params": { - "beam_half_core_thickness": 2.8314589621296857, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 0.8832183249749435, - "hole_count": 6 - } - }, - { - "mass": 3076.767578125, - "frequency": 24.727670669555664, - "params": { - "beam_half_core_thickness": 1.0456383489016772, - "beam_face_thickness": 1.6349129131854283, - "holes_diameter": 1.8917716350410352, - "hole_count": 6 - } - }, - { - "mass": 3144.47705078125, - "frequency": 53.714927673339844, - "params": { - "beam_half_core_thickness": 1.788639952925939, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 2.232659406112648, - "hole_count": 6 - } - }, - { - "mass": 3258.947265625, - "frequency": 96.26435089111328, - "params": { - "beam_half_core_thickness": 4.9083312250322635, - "beam_face_thickness": 0.5041252715430171, - "holes_diameter": 2.4096722447203405, - "hole_count": 6 - } - }, - { - "mass": 3225.664306640625, - "frequency": 79.4127426147461, - "params": { - "beam_half_core_thickness": 3.1585748489918766, - "beam_face_thickness": 0.5295594081047337, - "holes_diameter": 1.836549713019586, - "hole_count": 6 - } - }, - { - "mass": 3077.7353515625, - "frequency": 25.742820739746094, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 1.5109548988313048, - "holes_diameter": 0.8929305745625548, - "hole_count": 6 - } - }, - { - "mass": 3073.2978515625, - "frequency": 21.117284774780273, - "params": { - "beam_half_core_thickness": 1.0456383489016772, - "beam_face_thickness": 1.8307782424776682, - "holes_diameter": 0.8832183249749435, - "hole_count": 6 - } - }, - { - "mass": 3253.47021484375, - "frequency": 94.54525756835938, - "params": { - "beam_half_core_thickness": 4.729761594130525, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 0.8832183249749435, - "hole_count": 6 - } - }, - { - "mass": 3117.087646484375, - "frequency": 44.599117279052734, - "params": { - "beam_half_core_thickness": 1.0456383489016772, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 1.836549713019586, - "hole_count": 6 - } - }, - { - "mass": 3084.22412109375, - "frequency": 29.0706844329834, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 1.3123980735310063, - "holes_diameter": 1.3760165166357226, - "hole_count": 6 - } - }, - { - "mass": 3100.296630859375, - "frequency": 36.087215423583984, - "params": { - "beam_half_core_thickness": 1.1678751109716674, - "beam_face_thickness": 0.9733596479654328, - "holes_diameter": 0.8929305745625548, - "hole_count": 6 - } - }, - { - "mass": 3225.664306640625, - "frequency": 79.4127426147461, - "params": { - "beam_half_core_thickness": 3.1585748489918766, - "beam_face_thickness": 0.5295594081047337, - "holes_diameter": 1.836549713019586, - "hole_count": 6 - } - }, - { - "mass": 3108.32958984375, - "frequency": 40.84846496582031, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 0.6774090691229979, - "holes_diameter": 0.8929305745625548, - "hole_count": 6 - } - }, - { - "mass": 3086.502685546875, - "frequency": 30.300708770751953, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 1.2054183267673528, - "holes_diameter": 0.7486584016696707, - "hole_count": 6 - } - }, - { - "mass": 3076.52001953125, - "frequency": 24.633028030395508, - "params": { - "beam_half_core_thickness": 1.0456383489016772, - "beam_face_thickness": 1.6349129131854283, - "holes_diameter": 1.7336098152931378, - "hole_count": 6 - } - }, - { - "mass": 3125.8359375, - "frequency": 46.634334564208984, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 4.936007884369349, - "hole_count": 6 - } - }, - { - "mass": 3129.5439453125, - "frequency": 48.851444244384766, - "params": { - "beam_half_core_thickness": 1.275741052928804, - "beam_face_thickness": 0.5035021260752708, - "holes_diameter": 2.4096722447203405, - "hole_count": 6 - } - }, - { - "mass": 3088.595458984375, - "frequency": 31.326507568359375, - "params": { - "beam_half_core_thickness": 1.0456383489016772, - "beam_face_thickness": 1.1614600106791797, - "holes_diameter": 0.8832183249749435, - "hole_count": 6 - } - }, - { - "mass": 3211.88720703125, - "frequency": 75.36439514160156, - "params": { - "beam_half_core_thickness": 3.1585748489918766, - "beam_face_thickness": 0.6324388321433609, - "holes_diameter": 1.836549713019586, - "hole_count": 6 - } - }, - { - "mass": 3161.857177734375, - "frequency": 61.57403564453125, - "params": { - "beam_half_core_thickness": 2.367558019192796, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 1.04663725179546, - "hole_count": 6 - } - }, - { - "mass": 3201.6083984375, - "frequency": 73.73807525634766, - "params": { - "beam_half_core_thickness": 2.8314589621296857, - "beam_face_thickness": 0.5041252715430171, - "holes_diameter": 2.4096722447203405, - "hole_count": 6 - } - }, - { - "mass": 3258.183349609375, - "frequency": 95.68132781982422, - "params": { - "beam_half_core_thickness": 4.9083312250322635, - "beam_face_thickness": 0.5041252715430171, - "holes_diameter": 1.836549713019586, - "hole_count": 6 - } - }, - { - "mass": 3107.002197265625, - "frequency": 37.8323974609375, - "params": { - "beam_half_core_thickness": 1.3962806565290555, - "beam_face_thickness": 1.0898121175739686, - "holes_diameter": 3.926030775169807, - "hole_count": 6 - } - }, - { - "mass": 3165.02880859375, - "frequency": 62.19291687011719, - "params": { - "beam_half_core_thickness": 2.367558019192796, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 1.7619741326868048, - "hole_count": 6 - } - }, - { - "mass": 3259.409912109375, - "frequency": 96.70039367675781, - "params": { - "beam_half_core_thickness": 4.9083312250322635, - "beam_face_thickness": 0.5041252715430171, - "holes_diameter": 2.850762502823957, - "hole_count": 6 - } - }, - { - "mass": 3136.153076171875, - "frequency": 51.044368743896484, - "params": { - "beam_half_core_thickness": 1.7339474734382074, - "beam_face_thickness": 0.5878874473226041, - "holes_diameter": 0.7486584016696707, - "hole_count": 6 - } - }, - { - "mass": 3248.34130859375, - "frequency": 84.75800323486328, - "params": { - "beam_half_core_thickness": 3.5306450169861634, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 1.836549713019586, - "hole_count": 6 - } - }, - { - "mass": 3074.4375, - "frequency": 23.831645965576172, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 1.6349129131854283, - "holes_diameter": 0.7486584016696707, - "hole_count": 6 - } - }, - { - "mass": 3156.781494140625, - "frequency": 60.318626403808594, - "params": { - "beam_half_core_thickness": 2.231851559763225, - "beam_face_thickness": 0.5041252715430171, - "holes_diameter": 0.6060647226757658, - "hole_count": 6 - } - }, - { - "mass": 3141.208740234375, - "frequency": 51.99973678588867, - "params": { - "beam_half_core_thickness": 1.8705974572319692, - "beam_face_thickness": 0.6774090691229979, - "holes_diameter": 2.3125192457447836, - "hole_count": 6 - } - }, - { - "mass": 3098.976806640625, - "frequency": 35.671932220458984, - "params": { - "beam_half_core_thickness": 1.3962806565290555, - "beam_face_thickness": 1.0898121175739686, - "holes_diameter": 1.0886680383459773, - "hole_count": 6 - } - }, - { - "mass": 3182.151611328125, - "frequency": 68.02202606201172, - "params": { - "beam_half_core_thickness": 2.559039803913849, - "beam_face_thickness": 0.5041252715430171, - "holes_diameter": 2.4096722447203405, - "hole_count": 6 - } - }, - { - "mass": 3142.38330078125, - "frequency": 53.60208511352539, - "params": { - "beam_half_core_thickness": 1.8682517718295362, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 0.8832183249749435, - "hole_count": 6 - } - }, - { - "mass": 3172.1162109375, - "frequency": 65.05821228027344, - "params": { - "beam_half_core_thickness": 2.5530893500744107, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 1.0850151525451441, - "hole_count": 6 - } - }, - { - "mass": 3114.0703125, - "frequency": 43.73817825317383, - "params": { - "beam_half_core_thickness": 1.0456383489016772, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 0.8832183249749435, - "hole_count": 6 - } - }, - { - "mass": 3107.912841796875, - "frequency": 40.721473693847656, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 0.6774090691229979, - "holes_diameter": 0.7486584016696707, - "hole_count": 6 - } - }, - { - "mass": 3115.6103515625, - "frequency": 44.18189239501953, - "params": { - "beam_half_core_thickness": 1.0456383489016772, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 1.3719656224677994, - "hole_count": 6 - } - }, - { - "mass": 3108.32958984375, - "frequency": 40.84846496582031, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 0.6774090691229979, - "holes_diameter": 0.8929305745625548, - "hole_count": 6 - } - }, - { - "mass": 3082.485107421875, - "frequency": 28.0897274017334, - "params": { - "beam_half_core_thickness": 1.0456383489016772, - "beam_face_thickness": 1.4119523201311353, - "holes_diameter": 1.836549713019586, - "hole_count": 6 - } - }, - { - "mass": 3233.04931640625, - "frequency": 81.47786712646484, - "params": { - "beam_half_core_thickness": 3.3852251155435584, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 0.8832183249749435, - "hole_count": 6 - } - }, - { - "mass": 3193.118408203125, - "frequency": 72.34564208984375, - "params": { - "beam_half_core_thickness": 2.8314589621296857, - "beam_face_thickness": 0.5041252715430171, - "holes_diameter": 0.6077512602398445, - "hole_count": 6 - } - }, - { - "mass": 3221.646484375, - "frequency": 78.25287628173828, - "params": { - "beam_half_core_thickness": 3.1585748489918766, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 1.836549713019586, - "hole_count": 6 - } - }, - { - "mass": 3215.125244140625, - "frequency": 77.05062866210938, - "params": { - "beam_half_core_thickness": 3.1842157112079423, - "beam_face_thickness": 0.5878874473226041, - "holes_diameter": 0.8832183249749435, - "hole_count": 6 - } - }, - { - "mass": 3126.260009765625, - "frequency": 47.673248291015625, - "params": { - "beam_half_core_thickness": 1.3962806565290555, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 0.8832183249749435, - "hole_count": 6 - } - }, - { - "mass": 3146.699462890625, - "frequency": 55.684085845947266, - "params": { - "beam_half_core_thickness": 2.231851559763225, - "beam_face_thickness": 0.6774090691229979, - "holes_diameter": 0.6060647226757658, - "hole_count": 6 - } - }, - { - "mass": 3262.9736328125, - "frequency": 97.78274536132812, - "params": { - "beam_half_core_thickness": 4.9083312250322635, - "beam_face_thickness": 0.5041252715430171, - "holes_diameter": 4.282708936636067, - "hole_count": 6 - } - }, - { - "mass": 3144.64404296875, - "frequency": 54.81996536254883, - "params": { - "beam_half_core_thickness": 1.9718581177769687, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 0.6077512602398445, - "hole_count": 6 - } - }, - { - "mass": 3170.388916015625, - "frequency": 64.68653869628906, - "params": { - "beam_half_core_thickness": 2.5530893500744107, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 0.6252140837309559, - "hole_count": 6 - } - }, - { - "mass": 3112.701416015625, - "frequency": 43.287330627441406, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 0.8832183249749435, - "hole_count": 6 - } - }, - { - "mass": 3166.667724609375, - "frequency": 62.662681579589844, - "params": { - "beam_half_core_thickness": 2.5530893500744107, - "beam_face_thickness": 0.6324388321433609, - "holes_diameter": 1.04663725179546, - "hole_count": 6 - } - }, - { - "mass": 3073.10205078125, - "frequency": 21.03912925720215, - "params": { - "beam_half_core_thickness": 1.0456383489016772, - "beam_face_thickness": 1.8307782424776682, - "holes_diameter": 0.7486584016696707, - "hole_count": 6 - } - }, - { - "mass": 3122.886474609375, - "frequency": 46.602569580078125, - "params": { - "beam_half_core_thickness": 1.3047596760117144, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 0.8832183249749435, - "hole_count": 6 - } - }, - { - "mass": 3231.825927734375, - "frequency": 81.36742401123047, - "params": { - "beam_half_core_thickness": 3.392066357243967, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 0.6060647226757658, - "hole_count": 6 - } - }, - { - "mass": 3167.04150390625, - "frequency": 62.71934127807617, - "params": { - "beam_half_core_thickness": 2.5530893500744107, - "beam_face_thickness": 0.6324388321433609, - "holes_diameter": 1.1330917033400074, - "hole_count": 6 - } - }, - { - "mass": 3073.16064453125, - "frequency": 21.096561431884766, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 1.8395325017713904, - "holes_diameter": 1.3760165166357226, - "hole_count": 6 - } - }, - { - "mass": 3265.515869140625, - "frequency": 98.01446533203125, - "params": { - "beam_half_core_thickness": 4.9083312250322635, - "beam_face_thickness": 0.5041252715430171, - "holes_diameter": 4.779974961706895, - "hole_count": 6 - } - }, - { - "mass": 3073.2978515625, - "frequency": 21.117284774780273, - "params": { - "beam_half_core_thickness": 1.0456383489016772, - "beam_face_thickness": 1.8307782424776682, - "holes_diameter": 0.8832183249749435, - "hole_count": 6 - } - }, - { - "mass": 3117.5927734375, - "frequency": 44.8657112121582, - "params": { - "beam_half_core_thickness": 1.1333155140686793, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 1.0886680383459773, - "hole_count": 6 - } - }, - { - "mass": 3235.638427734375, - "frequency": 82.33231353759766, - "params": { - "beam_half_core_thickness": 3.3278183736548397, - "beam_face_thickness": 0.5041252715430171, - "holes_diameter": 0.8832183249749435, - "hole_count": 6 - } - }, - { - "mass": 3112.628173828125, - "frequency": 42.17412185668945, - "params": { - "beam_half_core_thickness": 1.0456383489016772, - "beam_face_thickness": 0.6774090691229979, - "holes_diameter": 1.8917716350410352, - "hole_count": 6 - } - }, - { - "mass": 3094.5625, - "frequency": 33.89433670043945, - "params": { - "beam_half_core_thickness": 1.3962806565290555, - "beam_face_thickness": 1.1614600106791797, - "holes_diameter": 0.8832183249749435, - "hole_count": 6 - } - }, - { - "mass": 3126.260009765625, - "frequency": 47.673248291015625, - "params": { - "beam_half_core_thickness": 1.3962806565290555, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 0.8832183249749435, - "hole_count": 6 - } - }, - { - "mass": 3211.88720703125, - "frequency": 75.36439514160156, - "params": { - "beam_half_core_thickness": 3.1585748489918766, - "beam_face_thickness": 0.6324388321433609, - "holes_diameter": 1.836549713019586, - "hole_count": 6 - } - }, - { - "mass": 3144.510498046875, - "frequency": 54.26613235473633, - "params": { - "beam_half_core_thickness": 1.8943939409207835, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 1.2245404307782575, - "hole_count": 6 - } - }, - { - "mass": 3170.388916015625, - "frequency": 64.68653869628906, - "params": { - "beam_half_core_thickness": 2.5530893500744107, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 0.6252140837309559, - "hole_count": 6 - } - }, - { - "mass": 3211.88720703125, - "frequency": 75.36439514160156, - "params": { - "beam_half_core_thickness": 3.1585748489918766, - "beam_face_thickness": 0.6324388321433609, - "holes_diameter": 1.836549713019586, - "hole_count": 6 - } - }, - { - "mass": 3077.309814453125, - "frequency": 25.387819290161133, - "params": { - "beam_half_core_thickness": 1.0456383489016772, - "beam_face_thickness": 1.5504061055311311, - "holes_diameter": 0.8832183249749435, - "hole_count": 6 - } - }, - { - "mass": 3107.912841796875, - "frequency": 40.721473693847656, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 0.6774090691229979, - "holes_diameter": 0.7486584016696707, - "hole_count": 6 - } - }, - { - "mass": 3234.30419921875, - "frequency": 81.93788146972656, - "params": { - "beam_half_core_thickness": 3.423181225171196, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 0.6060647226757658, - "hole_count": 6 - } - }, - { - "mass": 3220.917724609375, - "frequency": 77.92039489746094, - "params": { - "beam_half_core_thickness": 3.3278183736548397, - "beam_face_thickness": 0.6324388321433609, - "holes_diameter": 0.8832183249749435, - "hole_count": 6 - } - }, - { - "mass": 3136.993408203125, - "frequency": 51.277496337890625, - "params": { - "beam_half_core_thickness": 1.5214862346246192, - "beam_face_thickness": 0.5041252715430171, - "holes_diameter": 1.836549713019586, - "hole_count": 6 - } - }, - { - "mass": 3240.3173828125, - "frequency": 83.4113998413086, - "params": { - "beam_half_core_thickness": 3.392066357243967, - "beam_face_thickness": 0.5041252715430171, - "holes_diameter": 0.8832183249749435, - "hole_count": 6 - } - }, - { - "mass": 3174.826416015625, - "frequency": 66.47643280029297, - "params": { - "beam_half_core_thickness": 2.5530893500744107, - "beam_face_thickness": 0.5041252715430171, - "holes_diameter": 0.6077512602398445, - "hole_count": 6 - } - }, - { - "mass": 3133.04541015625, - "frequency": 49.580726623535156, - "params": { - "beam_half_core_thickness": 1.4847643198538059, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 1.836549713019586, - "hole_count": 6 - } - }, - { - "mass": 3160.83740234375, - "frequency": 60.34223175048828, - "params": { - "beam_half_core_thickness": 2.231851559763225, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 2.4096722447203405, - "hole_count": 6 - } - }, - { - "mass": 3252.630615234375, - "frequency": 94.16134643554688, - "params": { - "beam_half_core_thickness": 4.729761594130525, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 0.6077512602398445, - "hole_count": 6 - } - }, - { - "mass": 3094.5625, - "frequency": 33.89433670043945, - "params": { - "beam_half_core_thickness": 1.3962806565290555, - "beam_face_thickness": 1.1614600106791797, - "holes_diameter": 0.8832183249749435, - "hole_count": 6 - } - }, - { - "mass": 3107.912841796875, - "frequency": 40.721473693847656, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 0.6774090691229979, - "holes_diameter": 0.7486584016696707, - "hole_count": 6 - } - }, - { - "mass": 3181.42822265625, - "frequency": 66.5577163696289, - "params": { - "beam_half_core_thickness": 2.5530893500744107, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 3.198086969067685, - "hole_count": 6 - } - }, - { - "mass": 3210.794921875, - "frequency": 75.23535919189453, - "params": { - "beam_half_core_thickness": 3.1585748489918766, - "beam_face_thickness": 0.6324388321433609, - "holes_diameter": 1.6218873206765685, - "hole_count": 6 - } - }, - { - "mass": 3083.8759765625, - "frequency": 28.221725463867188, - "params": { - "beam_half_core_thickness": 1.0456383489016772, - "beam_face_thickness": 1.5041821264361572, - "holes_diameter": 4.282708936636067, - "hole_count": 6 - } - }, - { - "mass": 3082.485107421875, - "frequency": 28.0897274017334, - "params": { - "beam_half_core_thickness": 1.0456383489016772, - "beam_face_thickness": 1.4119523201311353, - "holes_diameter": 1.836549713019586, - "hole_count": 6 - } - }, - { - "mass": 3107.002197265625, - "frequency": 37.8323974609375, - "params": { - "beam_half_core_thickness": 1.3962806565290555, - "beam_face_thickness": 1.0898121175739686, - "holes_diameter": 3.926030775169807, - "hole_count": 6 - } - }, - { - "mass": 3113.33837890625, - "frequency": 43.471736907958984, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 1.0886680383459773, - "hole_count": 6 - } - }, - { - "mass": 3167.1533203125, - "frequency": 63.198143005371094, - "params": { - "beam_half_core_thickness": 2.327374083302436, - "beam_face_thickness": 0.5041252715430171, - "holes_diameter": 1.836549713019586, - "hole_count": 6 - } - }, - { - "mass": 3120.15771484375, - "frequency": 45.950504302978516, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 0.5041252715430171, - "holes_diameter": 2.579991702709256, - "hole_count": 6 - } - }, - { - "mass": 3131.0537109375, - "frequency": 49.49456787109375, - "params": { - "beam_half_core_thickness": 1.3962806565290555, - "beam_face_thickness": 0.5041252715430171, - "holes_diameter": 1.5488894432729157, - "hole_count": 6 - } - }, - { - "mass": 3252.630615234375, - "frequency": 94.16134643554688, - "params": { - "beam_half_core_thickness": 4.729761594130525, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 0.6077512602398445, - "hole_count": 6 - } - }, - { - "mass": 3223.907470703125, - "frequency": 78.26632690429688, - "params": { - "beam_half_core_thickness": 3.3278183736548397, - "beam_face_thickness": 0.6324388321433609, - "holes_diameter": 1.4614681390803579, - "hole_count": 6 - } - }, - { - "mass": 3188.510986328125, - "frequency": 70.62683868408203, - "params": { - "beam_half_core_thickness": 2.8314589621296857, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 0.8832183249749435, - "hole_count": 6 - } - }, - { - "mass": 3170.388916015625, - "frequency": 64.68653869628906, - "params": { - "beam_half_core_thickness": 2.5530893500744107, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 0.6252140837309559, - "hole_count": 6 - } - }, - { - "mass": 3088.017578125, - "frequency": 31.041561126708984, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 1.1614600106791797, - "holes_diameter": 0.8832183249749435, - "hole_count": 6 - } - }, - { - "mass": 3118.00390625, - "frequency": 45.1279411315918, - "params": { - "beam_half_core_thickness": 1.0015527259904768, - "beam_face_thickness": 0.5295594081047337, - "holes_diameter": 2.232659406112648, - "hole_count": 6 - } - }, - { - "mass": 3098.416259765625, - "frequency": 35.50634765625, - "params": { - "beam_half_core_thickness": 1.3962806565290555, - "beam_face_thickness": 1.0898121175739686, - "holes_diameter": 0.8832183249749435, - "hole_count": 6 - } - }, - { - "mass": 3221.646484375, - "frequency": 78.25287628173828, - "params": { - "beam_half_core_thickness": 3.1585748489918766, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 1.836549713019586, - "hole_count": 6 - } - }, - { - "mass": 3193.80126953125, - "frequency": 72.46080017089844, - "params": { - "beam_half_core_thickness": 2.8314589621296857, - "beam_face_thickness": 0.5041252715430171, - "holes_diameter": 0.7486584016696707, - "hole_count": 6 - } - }, - { - "mass": 3126.8984375, - "frequency": 47.87540817260742, - "params": { - "beam_half_core_thickness": 1.4132758914712373, - "beam_face_thickness": 0.5605122409373815, - "holes_diameter": 0.8832183249749435, - "hole_count": 6 - } - }, - { - "mass": 3258.183349609375, - "frequency": 95.68132781982422, - "params": { - "beam_half_core_thickness": 4.9083312250322635, - "beam_face_thickness": 0.5041252715430171, - "holes_diameter": 1.836549713019586, - "hole_count": 6 - } - }, - { - "mass": 3254.08203125, - "frequency": 95.48703002929688, - "params": { - "beam_half_core_thickness": 4.729761594130525, - "beam_face_thickness": 0.5041252715430171, - "holes_diameter": 0.8832183249749435, - "hole_count": 6 - } - } - ] -} \ No newline at end of file diff --git a/archive/temp_outputs/simple_mlp_surrogate.pt b/archive/temp_outputs/simple_mlp_surrogate.pt deleted file mode 100644 index 79cacdca..00000000 Binary files a/archive/temp_outputs/simple_mlp_surrogate.pt and /dev/null differ diff --git a/archive/temp_outputs/temp_optuna_view.db b/archive/temp_outputs/temp_optuna_view.db deleted file mode 100644 index f5e1de55..00000000 Binary files a/archive/temp_outputs/temp_optuna_view.db and /dev/null differ diff --git a/archive/temp_outputs/test_output.txt b/archive/temp_outputs/test_output.txt deleted file mode 100644 index 20c61159..00000000 --- a/archive/temp_outputs/test_output.txt +++ /dev/null @@ -1,122 +0,0 @@ -fatal: not a git repository (or any of the parent directories): .git -================================================================================ - HYBRID MODE - AUTOMATED STUDY CREATION -================================================================================ - -[1/5] Creating study structure... - [OK] Study directory: circular_plate_frequency_tuning - -[2/5] Copying model files... - [OK] Copied 4 files - -[3/5] Installing workflow configuration... - [OK] Workflow: circular_plate_frequency_tuning - [OK] Variables: 2 - [OK] Objectives: 1 - -[4/5] Running benchmarking (validating simulation setup)... - Running INTELLIGENT benchmarking... - - Solving ALL solutions in .sim file - - Discovering all available results - - Matching objectives to results - - -================================================================================ - INTELLIGENT SETUP - COMPLETE ANALYSIS -================================================================================ - -[Phase 1/4] Extracting ALL expressions from model... -[NX] Exporting expressions from Circular_Plate.prt to .exp format... -[OK] Expressions exported to: c:\Users\antoi\Documents\Atomaste\Atomizer\studies\circular_plate_frequency_tuning\1_setup\model\Circular_Plate_expressions.exp - [OK] Found 4 expressions - - inner_diameter: 130.24581665835925 MilliMeter - - p0: None MilliMeter - - p1: 0.0 MilliMeter - - plate_thickness: 5.190705791851906 MilliMeter - -[Phase 2/4] Solving ALL solutions in .sim file... - [OK] Solved 0 solutions - -[Phase 3/4] Analyzing ALL result files... -DEBUG: op2.py:614 combine=True -DEBUG: op2.py:615 -------- reading op2 with read_mode=1 (array sizing) -------- -INFO: op2_scalar.py:1960 op2_filename = 'c:\\Users\\antoi\\Documents\\Atomaste\\Atomizer\\studies\\circular_plate_frequency_tuning\\1_setup\\model\\circular_plate_sim1-solution_1.op2' -DEBUG: op2_reader.py:323 date = (11, 18, 25) -WARNING: version.py:88 nx version='2412' is not supported -DEBUG: op2_reader.py:403 mode='nx' version='2412' -DEBUG: op2_scalar.py:2173 table_name=b'IBULK' (explicit bulk data) -DEBUG: op2_scalar.py:2173 table_name=b'ICASE' (explicit case control) -DEBUG: op2_scalar.py:2173 table_name=b'CASECC' (case control) -DEBUG: op2_scalar.py:2173 table_name=b'PVT0' (PARAM cards) -DEBUG: op2_scalar.py:2173 table_name=b'GPL' (grid point list) -DEBUG: op2_scalar.py:2173 table_name=b'GPDT' (grid point locations) -DEBUG: op2_scalar.py:2173 table_name=b'EPT' (property cards) -DEBUG: op2_scalar.py:2173 table_name=b'MPT' (material cards) -DEBUG: op2_scalar.py:2173 table_name=b'GEOM2' (element cards) -DEBUG: op2_scalar.py:2173 table_name=b'GEOM4' (load cards) -DEBUG: op2_scalar.py:2173 table_name=b'GEOM1' (grid/coord cards) -DEBUG: op2_scalar.py:2173 table_name=b'BGPDT' (grid points in cid=0 frame) -DEBUG: op2_scalar.py:2173 table_name=b'EQEXIN' (internal/external ids) -DEBUG: op2_reader.py:672 eqexin idata=(101, 613, 0, 0, 0, 0, 0) -DEBUG: op2_scalar.py:2173 table_name=b'OQG1' (spc/mpc forces) -DEBUG: op2_scalar.py:2173 table_name=b'BOUGV1' (g-set U in cid=0 frame) -DEBUG: op2_scalar.py:2173 table_name=b'OES1' (linear stress) -DEBUG: op2.py:634 -------- reading op2 with read_mode=2 (array filling) -------- -DEBUG: op2_reader.py:323 date = (11, 18, 25) -WARNING: version.py:88 nx version='2412' is not supported -DEBUG: op2_scalar.py:2173 table_name=b'IBULK' (explicit bulk data) -DEBUG: op2_scalar.py:2173 table_name=b'ICASE' (explicit case control) -DEBUG: op2_scalar.py:2173 table_name=b'CASECC' (case control) -DEBUG: op2_scalar.py:2173 table_name=b'PVT0' (PARAM cards) -DEBUG: op2_scalar.py:2173 table_name=b'GPL' (grid point list) -DEBUG: op2_scalar.py:2173 table_name=b'GPDT' (grid point locations) -DEBUG: op2_scalar.py:2173 table_name=b'EPT' (property cards) -DEBUG: op2_scalar.py:2173 table_name=b'MPT' (material cards) -DEBUG: op2_scalar.py:2173 table_name=b'GEOM2' (element cards) -DEBUG: op2_scalar.py:2173 table_name=b'GEOM4' (load cards) -DEBUG: op2_scalar.py:2173 table_name=b'GEOM1' (grid/coord cards) -DEBUG: op2_scalar.py:2173 table_name=b'BGPDT' (grid points in cid=0 frame) -DEBUG: op2_scalar.py:2173 table_name=b'EQEXIN' (internal/external ids) -DEBUG: op2_reader.py:672 eqexin idata=(101, 613, 0, 0, 0, 0, 0) -DEBUG: op2_scalar.py:2173 table_name=b'OQG1' (spc/mpc forces) -DEBUG: op2_scalar.py:2173 table_name=b'BOUGV1' (g-set U in cid=0 frame) -DEBUG: op2_scalar.py:2173 table_name=b'OES1' (linear stress) -DEBUG: op2.py:932 combine_results -DEBUG: op2.py:648 finished reading op2 - [OK] Found 1 result files - - displacements: 613 entries in circular_plate_sim1-solution_1.op2 - -[Phase 4/4] Matching objectives to available results... - [OK] Objective mapping complete - - frequency_error - Solution: NONE - Result type: eigenvalues - Extractor: extract_first_frequency - -================================================================================ - ANALYSIS COMPLETE -================================================================================ - - [OK] Expressions found: 4 - [OK] Solutions found: 4 - [OK] Results discovered: 1 - [OK] Objectives matched: 1 - - frequency_error: eigenvalues from 'NONE' (ERROR confidence) - [OK] Simulation validated - [OK] Extracted 0 results - -[4.5/5] Generating configuration report... -Traceback (most recent call last): - File "c:\Users\antoi\Documents\Atomaste\Atomizer\create_circular_plate_study.py", line 70, in - main() - File "c:\Users\antoi\Documents\Atomaste\Atomizer\create_circular_plate_study.py", line 52, in main - study_dir = creator.create_from_workflow( - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\hybrid_study_creator.py", line 100, in create_from_workflow - self._generate_configuration_report(study_dir, workflow, benchmark_results) - File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\hybrid_study_creator.py", line 757, in _generate_configuration_report - f.write(content) - File "C:\Users\antoi\anaconda3\envs\test_env\Lib\encodings\cp1252.py", line 19, in encode - return codecs.charmap_encode(input,self.errors,encoding_table)[0] - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -UnicodeEncodeError: 'charmap' codec can't encode characters in position 1535-1536: character maps to diff --git a/archive/temp_outputs/validated_nn_optimization_results.json b/archive/temp_outputs/validated_nn_optimization_results.json deleted file mode 100644 index f9b070be..00000000 --- a/archive/temp_outputs/validated_nn_optimization_results.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "stats": { - "total_time": 3.4194347858428955, - "avg_trial_time_ms": 0.25935888290405273, - "trials_per_second": 584.8919851550838, - "extrapolation_count": 1757, - "extrapolation_pct": 87.85 - }, - "pareto_summary": { - "total": 407, - "confident": 0, - "needs_fea": 407 - }, - "top_designs": [ - { - "mass": 717.7724576426426, - "frequency": 15.794277791999079, - "uncertainty": 0.3945587883026621, - "needs_fea": \ No newline at end of file diff --git a/run_cleanup.py b/run_cleanup.py deleted file mode 100644 index 79762941..00000000 --- a/run_cleanup.py +++ /dev/null @@ -1,67 +0,0 @@ -"""Run cleanup excluding protected studies.""" -import sys -from pathlib import Path - -# Add project root to path -sys.path.insert(0, str(Path(__file__).parent)) - -from optimization_engine.utils.study_cleanup import cleanup_study, get_study_info - -m1_dir = Path(r"C:\Users\antoi\Atomizer\studies\M1_Mirror") - -# Studies to SKIP (user requested) -skip_patterns = [ - "cost_reduction_V10", - "cost_reduction_V11", - "cost_reduction_V12", - "flat_back", -] - -# Parse args -dry_run = "--execute" not in sys.argv -keep_best = 5 - -total_saved = 0 -studies_to_clean = [] - -print("=" * 75) -print(f"CLEANUP (excluding V10-V12 and flat_back studies)") -print(f"Mode: {'DRY RUN' if dry_run else 'EXECUTE'}") -print("=" * 75) -print(f"{'Study':<45} {'Trials':>7} {'Size':>8} {'Savings':>8}") -print("-" * 75) - -for study_path in sorted(m1_dir.iterdir()): - if not study_path.is_dir(): - continue - # Check if has iterations - if not (study_path / "2_iterations").exists(): - continue - - # Skip protected studies - skip = False - for pattern in skip_patterns: - if pattern in study_path.name: - skip = True - break - - if skip: - info = get_study_info(study_path) - print(f"{study_path.name:<45} {info['trial_count']:>7} SKIPPED") - continue - - # This study will be cleaned - result = cleanup_study(study_path, dry_run=dry_run, keep_best=keep_best) - saved = result["space_saved_gb"] - total_saved += saved - status = "would save" if dry_run else "saved" - print(f"{study_path.name:<45} {result['trial_count']:>7} {result['total_size_before']/(1024**3):>7.1f}G {saved:>7.1f}G") - studies_to_clean.append(study_path.name) - -print("-" * 75) -print(f"{'TOTAL SAVINGS:':<45} {' '*15} {total_saved:>7.1f}G") - -if dry_run: - print(f"\n[!] This was a dry run. Run with --execute to actually delete files.") -else: - print(f"\n[OK] Cleanup complete! Freed {total_saved:.1f} GB") diff --git a/temp_compare.py b/temp_compare.py deleted file mode 100644 index e6cdb0b2..00000000 --- a/temp_compare.py +++ /dev/null @@ -1,74 +0,0 @@ -#!/usr/bin/env python -"""Compare V8 and V11 lateral parameter convergence""" -import optuna -import statistics - -# Load V8 study -v8_study = optuna.load_study( - study_name='m1_mirror_cost_reduction_V8', - storage='sqlite:///studies/M1_Mirror/m1_mirror_cost_reduction_V8/3_results/study.db' -) - -# Load V11 study -v11_study = optuna.load_study( - study_name='m1_mirror_cost_reduction_V11', - storage='sqlite:///studies/M1_Mirror/m1_mirror_cost_reduction_V11/3_results/study.db' -) - -print("="*70) -print("V8 BEST TRIAL (Z-only Zernike)") -print("="*70) -v8_best = v8_study.best_trial -print(f"Trial: {v8_best.number}") -print(f"WS: {v8_best.value:.2f}") -print("\nLateral Parameters:") -for k, v in sorted(v8_best.params.items()): - print(f" {k}: {v:.4f}") -print("\nObjectives:") -for k, v in v8_best.user_attrs.items(): - if isinstance(v, (int, float)): - print(f" {k}: {v:.4f}") - -print("\n" + "="*70) -print("V11 BEST TRIAL (ZernikeOPD + extract_relative)") -print("="*70) -v11_best = v11_study.best_trial -print(f"Trial: {v11_best.number}") -print(f"WS: {v11_best.value:.2f}") -print("\nLateral Parameters:") -for k, v in sorted(v11_best.params.items()): - print(f" {k}: {v:.4f}") -print("\nObjectives:") -for k, v in v11_best.user_attrs.items(): - if isinstance(v, (int, float)): - print(f" {k}: {v:.4f}") - -# Compare parameter ranges explored -print("\n" + "="*70) -print("PARAMETER EXPLORATION COMPARISON") -print("="*70) - -params = ['lateral_inner_angle', 'lateral_outer_angle', 'lateral_outer_pivot', - 'lateral_inner_pivot', 'lateral_middle_pivot', 'lateral_closeness'] - -for p in params: - v8_vals = [t.params.get(p) for t in v8_study.trials if t.state.name == 'COMPLETE' and p in t.params] - v11_vals = [t.params.get(p) for t in v11_study.trials if t.state.name == 'COMPLETE' and p in t.params] - - if v8_vals and v11_vals: - print(f"\n{p}:") - print(f" V8: mean={statistics.mean(v8_vals):.2f}, std={statistics.stdev(v8_vals) if len(v8_vals) > 1 else 0:.2f}, range=[{min(v8_vals):.2f}, {max(v8_vals):.2f}]") - print(f" V11: mean={statistics.mean(v11_vals):.2f}, std={statistics.stdev(v11_vals) if len(v11_vals) > 1 else 0:.2f}, range=[{min(v11_vals):.2f}, {max(v11_vals):.2f}]") - print(f" Best V8: {v8_best.params.get(p, 'N/A'):.2f}") - print(f" Best V11: {v11_best.params.get(p, 'N/A'):.2f}") - -# Lateral displacement comparison (V11 has this data) -print("\n" + "="*70) -print("V11 LATERAL DISPLACEMENT DATA (not available in V8)") -print("="*70) -for t in v11_study.trials: - if t.state.name == 'COMPLETE': - lat_rms = t.user_attrs.get('lateral_rms_um', None) - lat_max = t.user_attrs.get('lateral_max_um', None) - if lat_rms is not None: - print(f"Trial {t.number}: RMS={lat_rms:.2f} um, Max={lat_max:.2f} um, WS={t.value:.2f}")