Closes the neural training loop with automated workflow: - atomizer.py: One-command neural workflow CLI - auto_trainer.py: Auto-training trigger system (50pt threshold) - template_loader.py: Study creation from templates - study_reset.py: Study reset/cleanup utility - 3 templates: beam stiffness, bracket stress, frequency tuning - State assessment document (Nov 25) Usage: python atomizer.py neural-optimize --study my_study --trials 500 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
137 lines
3.6 KiB
JSON
137 lines
3.6 KiB
JSON
{
|
|
"study_name": "uav_arm_optimization",
|
|
"description": "UAV Camera Support Arm - Multi-Objective Lightweight Design",
|
|
"engineering_context": "Unmanned aerial vehicle camera gimbal arm. Target: lighter than current 145g design while maintaining camera stability under 850g payload. Must avoid resonance with rotor frequencies (80-120 Hz).",
|
|
|
|
"optimization_settings": {
|
|
"protocol": "protocol_11_multi_objective",
|
|
"n_trials": 30,
|
|
"sampler": "NSGAIISampler",
|
|
"pruner": null,
|
|
"timeout_per_trial": 600
|
|
},
|
|
|
|
"design_variables": [
|
|
{
|
|
"parameter": "beam_half_core_thickness",
|
|
"bounds": [5, 10],
|
|
"description": "Half thickness of beam core (mm) - affects weight and stiffness"
|
|
},
|
|
{
|
|
"parameter": "beam_face_thickness",
|
|
"bounds": [1, 3],
|
|
"description": "Thickness of beam face sheets (mm) - bending resistance"
|
|
},
|
|
{
|
|
"parameter": "holes_diameter",
|
|
"bounds": [10, 50],
|
|
"description": "Diameter of lightening holes (mm) - weight reduction"
|
|
},
|
|
{
|
|
"parameter": "hole_count",
|
|
"bounds": [8, 14],
|
|
"description": "Number of lightening holes - balance weight vs strength"
|
|
}
|
|
],
|
|
|
|
"objectives": [
|
|
{
|
|
"name": "mass",
|
|
"goal": "minimize",
|
|
"weight": 1.0,
|
|
"description": "Total mass (grams) - minimize for longer flight time",
|
|
"target": 4000,
|
|
"extraction": {
|
|
"action": "extract_mass",
|
|
"domain": "result_extraction",
|
|
"params": {
|
|
"result_type": "mass",
|
|
"metric": "total"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "fundamental_frequency",
|
|
"goal": "maximize",
|
|
"weight": 1.0,
|
|
"description": "First natural frequency (Hz) - avoid rotor resonance",
|
|
"target": 150,
|
|
"extraction": {
|
|
"action": "extract_frequency",
|
|
"domain": "result_extraction",
|
|
"params": {
|
|
"result_type": "frequency",
|
|
"mode_number": 1
|
|
}
|
|
}
|
|
}
|
|
],
|
|
|
|
"constraints": [
|
|
{
|
|
"name": "max_displacement_limit",
|
|
"type": "less_than",
|
|
"threshold": 1.5,
|
|
"description": "Maximum tip displacement under 850g camera load < 1.5mm for image stabilization",
|
|
"extraction": {
|
|
"action": "extract_displacement",
|
|
"domain": "result_extraction",
|
|
"params": {
|
|
"result_type": "displacement",
|
|
"metric": "max"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "max_stress_limit",
|
|
"type": "less_than",
|
|
"threshold": 120,
|
|
"description": "Maximum von Mises stress < 120 MPa (Al 6061-T6, SF=2.3)",
|
|
"extraction": {
|
|
"action": "extract_stress",
|
|
"domain": "result_extraction",
|
|
"params": {
|
|
"result_type": "stress",
|
|
"metric": "max_von_mises"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "min_frequency_limit",
|
|
"type": "greater_than",
|
|
"threshold": 150,
|
|
"description": "Natural frequency > 150 Hz to avoid rotor frequencies (80-120 Hz safety margin)",
|
|
"extraction": {
|
|
"action": "extract_frequency",
|
|
"domain": "result_extraction",
|
|
"params": {
|
|
"result_type": "frequency",
|
|
"mode_number": 1
|
|
}
|
|
}
|
|
}
|
|
],
|
|
|
|
"simulation": {
|
|
"model_file": "Beam.prt",
|
|
"sim_file": "Beam_sim1.sim",
|
|
"fem_file": "Beam_fem1.fem",
|
|
"solver": "nastran",
|
|
"analysis_types": ["static", "modal"]
|
|
},
|
|
|
|
"reporting": {
|
|
"generate_plots": true,
|
|
"save_incremental": true,
|
|
"llm_summary": false
|
|
},
|
|
|
|
"training_data_export": {
|
|
"enabled": true,
|
|
"export_dir": "atomizer_field_training_data/uav_arm_optimization",
|
|
"export_every_n_trials": 1,
|
|
"include_mesh": true,
|
|
"compress": false
|
|
}
|
|
}
|