feat: Add neural loop automation - templates, auto-trainer, CLI
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>
This commit is contained in:
117
templates/bracket_stress_minimization.json
Normal file
117
templates/bracket_stress_minimization.json
Normal file
@@ -0,0 +1,117 @@
|
||||
{
|
||||
"study_name": "bracket_stress_minimization",
|
||||
"description": "Bracket Stress Minimization - Minimize peak stress while maintaining stiffness",
|
||||
"engineering_context": "L-bracket or mounting bracket optimization. Minimize stress concentrations by adjusting fillet radii, wall thickness, and material distribution.",
|
||||
"template_info": {
|
||||
"category": "structural",
|
||||
"analysis_type": "static",
|
||||
"typical_applications": ["mounting brackets", "L-brackets", "gusset plates", "corner joints"],
|
||||
"required_nx_expressions": ["wall_thickness", "fillet_radius", "web_thickness"]
|
||||
},
|
||||
|
||||
"optimization_settings": {
|
||||
"protocol": "protocol_10_single_objective",
|
||||
"n_trials": 75,
|
||||
"sampler": "TPE",
|
||||
"pruner": "MedianPruner",
|
||||
"timeout_per_trial": 400
|
||||
},
|
||||
|
||||
"design_variables": [
|
||||
{
|
||||
"parameter": "wall_thickness",
|
||||
"bounds": [2, 10],
|
||||
"description": "Main wall thickness (mm)",
|
||||
"units": "mm"
|
||||
},
|
||||
{
|
||||
"parameter": "fillet_radius",
|
||||
"bounds": [3, 20],
|
||||
"description": "Corner fillet radius (mm) - stress relief",
|
||||
"units": "mm"
|
||||
},
|
||||
{
|
||||
"parameter": "web_thickness",
|
||||
"bounds": [1, 8],
|
||||
"description": "Stiffening web thickness (mm)",
|
||||
"units": "mm"
|
||||
},
|
||||
{
|
||||
"parameter": "rib_count",
|
||||
"bounds": [0, 5],
|
||||
"description": "Number of stiffening ribs",
|
||||
"type": "integer"
|
||||
}
|
||||
],
|
||||
|
||||
"objectives": [
|
||||
{
|
||||
"name": "max_stress",
|
||||
"goal": "minimize",
|
||||
"weight": 1.0,
|
||||
"description": "Peak von Mises stress (MPa)",
|
||||
"target": 50,
|
||||
"extraction": {
|
||||
"action": "extract_stress",
|
||||
"domain": "result_extraction",
|
||||
"params": {
|
||||
"result_type": "stress",
|
||||
"metric": "max_von_mises"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
"constraints": [
|
||||
{
|
||||
"name": "max_displacement_limit",
|
||||
"type": "less_than",
|
||||
"threshold": 0.5,
|
||||
"description": "Maximum displacement < 0.5mm for stiffness requirement",
|
||||
"extraction": {
|
||||
"action": "extract_displacement",
|
||||
"domain": "result_extraction",
|
||||
"params": {
|
||||
"result_type": "displacement",
|
||||
"metric": "max"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "max_mass_limit",
|
||||
"type": "less_than",
|
||||
"threshold": 200,
|
||||
"description": "Maximum mass < 200g for weight budget",
|
||||
"extraction": {
|
||||
"action": "extract_mass",
|
||||
"domain": "result_extraction",
|
||||
"params": {
|
||||
"result_type": "mass",
|
||||
"metric": "total"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
"simulation": {
|
||||
"model_file": "Bracket.prt",
|
||||
"sim_file": "Bracket_sim1.sim",
|
||||
"fem_file": "Bracket_fem1.fem",
|
||||
"solver": "nastran",
|
||||
"analysis_types": ["static"]
|
||||
},
|
||||
|
||||
"reporting": {
|
||||
"generate_plots": true,
|
||||
"save_incremental": true,
|
||||
"llm_summary": false
|
||||
},
|
||||
|
||||
"training_data_export": {
|
||||
"enabled": true,
|
||||
"export_dir": "atomizer_field_training_data/${study_name}",
|
||||
"export_every_n_trials": 1,
|
||||
"include_mesh": true,
|
||||
"compress": false
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user