Neural Acceleration (MLP Surrogate): - Add run_nn_optimization.py with hybrid FEA/NN workflow - MLP architecture: 4-layer (64->128->128->64) with BatchNorm/Dropout - Three workflow modes: - --all: Sequential export->train->optimize->validate - --hybrid-loop: Iterative Train->NN->Validate->Retrain cycle - --turbo: Aggressive single-best validation (RECOMMENDED) - Turbo mode: 5000 NN trials + 50 FEA validations in ~12 minutes - Separate nn_study.db to avoid overloading dashboard Performance Results (bracket_pareto_3obj study): - NN prediction errors: mass 1-5%, stress 1-4%, stiffness 5-15% - Found minimum mass designs at boundary (angle~30deg, thick~30mm) - 100x speedup vs pure FEA exploration Protocol Operating System: - Add .claude/skills/ with Bootstrap, Cheatsheet, Context Loader - Add docs/protocols/ with operations (OP_01-06) and system (SYS_10-14) - Update SYS_14_NEURAL_ACCELERATION.md with MLP Turbo Mode docs NX Automation: - Add optimization_engine/hooks/ for NX CAD/CAE automation - Add study_wizard.py for guided study creation - Fix FEM mesh update: load idealized part before UpdateFemodel() New Study: - bracket_pareto_3obj: 3-objective Pareto (mass, stress, stiffness) - 167 FEA trials + 5000 NN trials completed - Demonstrates full hybrid workflow 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
131 lines
2.9 KiB
Markdown
131 lines
2.9 KiB
Markdown
# bracket_pareto_3obj
|
|
|
|
Three-objective Pareto optimization: minimize mass, minimize stress, maximize stiffness
|
|
|
|
**Generated**: 2025-12-06 14:43
|
|
**Protocol**: Multi-Objective NSGA-II
|
|
**Trials**: 100
|
|
|
|
---
|
|
|
|
## 1. Engineering Problem
|
|
|
|
Three-objective Pareto optimization: minimize mass, minimize stress, maximize stiffness
|
|
|
|
---
|
|
|
|
## 2. Mathematical Formulation
|
|
|
|
### Design Variables
|
|
|
|
| Parameter | Bounds | Units | Description |
|
|
|-----------|--------|-------|-------------|
|
|
| `support_angle` | [20, 70] | degrees | Angle of support arm relative to base |
|
|
| `tip_thickness` | [30, 60] | mm | Thickness at bracket tip where load is applied |
|
|
|
|
|
|
### Objectives
|
|
|
|
| Objective | Goal | Extractor | Weight |
|
|
|-----------|------|-----------|--------|
|
|
| mass | minimize | `extract_mass_from_bdf` | 1.0 |
|
|
| stress | minimize | `extract_solid_stress` | 1.0 |
|
|
| stiffness | maximize | `extract_displacement` | 1.0 |
|
|
|
|
|
|
### Constraints
|
|
|
|
| Constraint | Type | Threshold | Units |
|
|
|------------|------|-----------|-------|
|
|
| stress_limit | less_than | 300 | MPa |
|
|
|
|
|
|
---
|
|
|
|
## 3. Optimization Algorithm
|
|
|
|
- **Protocol**: protocol_11_multi
|
|
- **Sampler**: NSGAIISampler
|
|
- **Trials**: 100
|
|
- **Neural Acceleration**: Disabled
|
|
|
|
---
|
|
|
|
## 4. Simulation Pipeline
|
|
|
|
```
|
|
Design Variables → NX Expression Update → Nastran Solve → Result Extraction → Objective Evaluation
|
|
```
|
|
|
|
---
|
|
|
|
## 5. Result Extraction Methods
|
|
|
|
| Result | Extractor | Source |
|
|
|--------|-----------|--------|
|
|
| mass | `extract_mass_from_bdf` | OP2/DAT |
|
|
| stress | `extract_solid_stress` | OP2/DAT |
|
|
| stiffness | `extract_displacement` | OP2/DAT |
|
|
|
|
---
|
|
|
|
## 6. Study File Structure
|
|
|
|
```
|
|
bracket_pareto_3obj/
|
|
├── 1_setup/
|
|
│ ├── model/
|
|
│ │ ├── Bracket.prt
|
|
│ │ ├── Bracket_sim1.sim
|
|
│ │ └── Bracket_fem1.fem
|
|
│ ├── optimization_config.json
|
|
│ └── workflow_config.json
|
|
├── 2_results/
|
|
│ ├── study.db
|
|
│ └── optimization.log
|
|
├── run_optimization.py
|
|
├── reset_study.py
|
|
├── README.md
|
|
├── STUDY_REPORT.md
|
|
└── MODEL_INTROSPECTION.md
|
|
```
|
|
|
|
---
|
|
|
|
## 7. Quick Start
|
|
|
|
```bash
|
|
# 1. Discover model outputs
|
|
python run_optimization.py --discover
|
|
|
|
# 2. Validate setup with single trial
|
|
python run_optimization.py --validate
|
|
|
|
# 3. Run integration test (3 trials)
|
|
python run_optimization.py --test
|
|
|
|
# 4. Run full optimization
|
|
python run_optimization.py --run --trials 100
|
|
|
|
# 5. Resume if interrupted
|
|
python run_optimization.py --run --trials 50 --resume
|
|
```
|
|
|
|
---
|
|
|
|
## 8. Results Location
|
|
|
|
| File | Description |
|
|
|------|-------------|
|
|
| `2_results/study.db` | Optuna SQLite database |
|
|
| `2_results/optimization.log` | Structured log file |
|
|
| `2_results/pareto_front.json` | Pareto-optimal solutions |
|
|
|
|
---
|
|
|
|
## 9. References
|
|
|
|
- [Atomizer Documentation](../../docs/)
|
|
- [Protocol protocol_11_multi](../../docs/protocols/system/)
|
|
- [Extractor Library](../../docs/protocols/system/SYS_12_EXTRACTOR_LIBRARY.md)
|