Files
Atomizer/tests/setup_beam_optimization.py

106 lines
3.1 KiB
Python
Raw Normal View History

"""
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)