feat(config): Add AtomizerSpec v2.0 schema and migrate all studies
Added JSON Schema: - optimization_engine/schemas/atomizer_spec_v2.json Migrated 28 studies to AtomizerSpec v2.0 format: - Drone_Gimbal studies (1) - M1_Mirror studies (21) - M2_Mirror studies (2) - SheetMetal_Bracket studies (4) Each atomizer_spec.json is the unified configuration containing: - Design variables with bounds and expressions - Extractors (standard and custom) - Objectives and constraints - Optimization algorithm settings - Canvas layout information
This commit is contained in:
@@ -0,0 +1,209 @@
|
||||
{
|
||||
"meta": {
|
||||
"version": "2.0",
|
||||
"created": "2026-01-17T15:35:12.042505Z",
|
||||
"modified": "2026-01-17T15:35:12.042505Z",
|
||||
"created_by": "migration",
|
||||
"modified_by": "migration",
|
||||
"study_name": "bracket_stiffness_optimization_atomizerfield",
|
||||
"description": "Bracket Stiffness Optimization with AtomizerField Neural Acceleration - Multi-objective optimization of bracket geometry for maximum stiffness and minimum mass",
|
||||
"tags": []
|
||||
},
|
||||
"model": {
|
||||
"sim": {
|
||||
"path": "1_setup\\model\\Bracket_sim1.sim",
|
||||
"solver": "nastran"
|
||||
}
|
||||
},
|
||||
"design_variables": [
|
||||
{
|
||||
"id": "dv_001",
|
||||
"name": "param_1",
|
||||
"expression_name": "support_angle",
|
||||
"type": "continuous",
|
||||
"bounds": {
|
||||
"min": 20,
|
||||
"max": 70
|
||||
},
|
||||
"baseline": null,
|
||||
"units": "degrees",
|
||||
"enabled": true,
|
||||
"description": "Angle of the support arm (degrees)",
|
||||
"canvas_position": {
|
||||
"x": 50,
|
||||
"y": 100
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "dv_002",
|
||||
"name": "param_2",
|
||||
"expression_name": "tip_thickness",
|
||||
"type": "continuous",
|
||||
"bounds": {
|
||||
"min": 30,
|
||||
"max": 60
|
||||
},
|
||||
"baseline": null,
|
||||
"units": "mm",
|
||||
"enabled": true,
|
||||
"description": "Thickness at the bracket tip (mm)",
|
||||
"canvas_position": {
|
||||
"x": 50,
|
||||
"y": 180
|
||||
}
|
||||
}
|
||||
],
|
||||
"extractors": [
|
||||
{
|
||||
"id": "ext_001",
|
||||
"name": "Displacement Extractor",
|
||||
"type": "displacement",
|
||||
"builtin": true,
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stiffness",
|
||||
"metric": "total"
|
||||
}
|
||||
],
|
||||
"canvas_position": {
|
||||
"x": 740,
|
||||
"y": 100
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "ext_002",
|
||||
"name": "Mass Extractor",
|
||||
"type": "mass",
|
||||
"builtin": true,
|
||||
"outputs": [
|
||||
{
|
||||
"name": "mass_kg",
|
||||
"metric": "total"
|
||||
}
|
||||
],
|
||||
"canvas_position": {
|
||||
"x": 740,
|
||||
"y": 250
|
||||
}
|
||||
}
|
||||
],
|
||||
"objectives": [
|
||||
{
|
||||
"id": "obj_001",
|
||||
"name": "Structural stiffness (inverse of max displacement)",
|
||||
"direction": "maximize",
|
||||
"weight": 1.0,
|
||||
"source": {
|
||||
"extractor_id": "ext_001",
|
||||
"output_name": "stiffness"
|
||||
},
|
||||
"target": null,
|
||||
"units": "",
|
||||
"canvas_position": {
|
||||
"x": 1020,
|
||||
"y": 100
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "obj_002",
|
||||
"name": "Total bracket mass (kg)",
|
||||
"direction": "minimize",
|
||||
"weight": 0.1,
|
||||
"source": {
|
||||
"extractor_id": "ext_001",
|
||||
"output_name": "mass"
|
||||
},
|
||||
"target": null,
|
||||
"units": "",
|
||||
"canvas_position": {
|
||||
"x": 1020,
|
||||
"y": 200
|
||||
}
|
||||
}
|
||||
],
|
||||
"constraints": [
|
||||
{
|
||||
"id": "con_001",
|
||||
"name": "Maximum mass constraint (kg)",
|
||||
"type": "hard",
|
||||
"operator": "<",
|
||||
"threshold": 0.2,
|
||||
"source": {
|
||||
"extractor_id": "ext_002",
|
||||
"output_name": "mass_kg"
|
||||
},
|
||||
"penalty_config": {
|
||||
"method": "quadratic",
|
||||
"weight": 1000.0
|
||||
},
|
||||
"canvas_position": {
|
||||
"x": 1020,
|
||||
"y": 400
|
||||
}
|
||||
}
|
||||
],
|
||||
"optimization": {
|
||||
"algorithm": {
|
||||
"type": "TPE",
|
||||
"config": {
|
||||
"n_startup_trials": 10
|
||||
}
|
||||
},
|
||||
"budget": {
|
||||
"max_trials": 100
|
||||
},
|
||||
"canvas_position": {
|
||||
"x": 1300,
|
||||
"y": 150
|
||||
}
|
||||
},
|
||||
"canvas": {
|
||||
"edges": [
|
||||
{
|
||||
"source": "dv_001",
|
||||
"target": "model"
|
||||
},
|
||||
{
|
||||
"source": "dv_002",
|
||||
"target": "model"
|
||||
},
|
||||
{
|
||||
"source": "model",
|
||||
"target": "solver"
|
||||
},
|
||||
{
|
||||
"source": "solver",
|
||||
"target": "ext_001"
|
||||
},
|
||||
{
|
||||
"source": "solver",
|
||||
"target": "ext_002"
|
||||
},
|
||||
{
|
||||
"source": "ext_001",
|
||||
"target": "obj_001"
|
||||
},
|
||||
{
|
||||
"source": "ext_001",
|
||||
"target": "obj_002"
|
||||
},
|
||||
{
|
||||
"source": "ext_002",
|
||||
"target": "con_001"
|
||||
},
|
||||
{
|
||||
"source": "obj_001",
|
||||
"target": "optimization"
|
||||
},
|
||||
{
|
||||
"source": "obj_002",
|
||||
"target": "optimization"
|
||||
},
|
||||
{
|
||||
"source": "con_001",
|
||||
"target": "optimization"
|
||||
}
|
||||
],
|
||||
"layout_version": "2.0"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user