Files
Atomizer/tests/setup_beam_optimization.py
Anto01 eabcc4c3ca refactor: Major reorganization of optimization_engine module structure
BREAKING CHANGE: Module paths have been reorganized for better maintainability.
Backwards compatibility aliases with deprecation warnings are provided.

New Structure:
- core/           - Optimization runners (runner, intelligent_optimizer, etc.)
- processors/     - Data processing
  - surrogates/   - Neural network surrogates
- nx/             - NX/Nastran integration (solver, updater, session_manager)
- study/          - Study management (creator, wizard, state, reset)
- reporting/      - Reports and analysis (visualizer, report_generator)
- config/         - Configuration management (manager, builder)
- utils/          - Utilities (logger, auto_doc, etc.)
- future/         - Research/experimental code

Migration:
- ~200 import changes across 125 files
- All __init__.py files use lazy loading to avoid circular imports
- Backwards compatibility layer supports old import paths with warnings
- All existing functionality preserved

To migrate existing code:
  OLD: from optimization_engine.nx_solver import NXSolver
  NEW: from optimization_engine.nx.solver import NXSolver

  OLD: from optimization_engine.runner import OptimizationRunner
  NEW: from optimization_engine.core.runner import OptimizationRunner

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 12:30:59 -05:00

106 lines
3.1 KiB
Python

"""
Setup Beam Optimization Study
This script configures the optimization study based on benchmarking results:
- Design variables: beam_half_core_thickness, beam_face_thickness, holes_diameter, hole_count
- Objectives: Minimize stress AND minimize weight (p173 mass)
- Constraint: max_displacement < 10mm
"""
import sys
import json
from pathlib import Path
sys.path.insert(0, str(Path(__file__).parent.parent))
from optimization_engine.study.creator import StudyCreator
def main():
print()
print("="*80)
print("SIMPLE BEAM OPTIMIZATION - SETUP")
print("="*80)
print()
# Load configuration
config_file = Path('studies/simple_beam_optimization/beam_optimization_config.json')
if not config_file.exists():
print(f"[ERROR] Configuration file not found: {config_file}")
return False
with open(config_file, 'r') as f:
config = json.load(f)
print("Configuration loaded:")
print(f" Study: {config['study_name']}")
print(f" Substudy: {config['substudy_name']}")
print()
print("Design Variables:")
for name, info in config['design_variables'].items():
print(f" - {name}: [{info['min']}, {info['max']}] {info['units']} (baseline: {info['baseline']})")
print()
print("Objectives:")
for obj in config['objectives']:
print(f" - {obj['name']}: {obj['goal']} (weight: {obj['weight']})")
print()
print("Constraints:")
for const in config['constraints']:
print(f" - {const['name']}: {const['extractor']} {const['type']} {const['value']} {const['units']}")
print()
# Create substudy
creator = StudyCreator()
study_dir = Path('studies') / config['study_name']
print(f"Creating substudy '{config['substudy_name']}'...")
try:
substudy_dir = creator.create_substudy(
study_dir=study_dir,
substudy_name=config['substudy_name'],
config=config
)
print(f"[SUCCESS] Substudy created: {substudy_dir}")
print()
# Save configuration to substudy
substudy_config_file = substudy_dir / "optimization_config.json"
with open(substudy_config_file, 'w', encoding='utf-8') as f:
json.dump(config, f, indent=2)
print(f"[OK] Configuration saved to: {substudy_config_file}")
print()
print("="*80)
print("NEXT STEPS")
print("="*80)
print()
print("1. Review configuration:")
print(f" {substudy_config_file}")
print()
print("2. Run initial trials to validate pipeline:")
print(f" python tests/run_initial_trials.py")
print()
print("3. If validation passes, run full optimization:")
print(f" python run_optimization.py studies/{config['study_name']} --substudy {config['substudy_name']}")
print()
return True
except Exception as e:
print(f"[ERROR] Failed to create substudy: {e}")
import traceback
traceback.print_exc()
return False
if __name__ == '__main__':
success = main()
sys.exit(0 if success else 1)