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
287 lines
5.9 KiB
JSON
287 lines
5.9 KiB
JSON
{
|
|
"meta": {
|
|
"version": "2.0",
|
|
"created": "2026-01-17T15:35:12.010333Z",
|
|
"modified": "2026-01-17T15:35:12.010333Z",
|
|
"created_by": "migration",
|
|
"modified_by": "migration",
|
|
"study_name": "drone_gimbal_arm_optimization",
|
|
"description": "Drone Camera Gimbal Support Arm - Multi-Objective Lightweight Design",
|
|
"tags": []
|
|
},
|
|
"model": {
|
|
"sim": {
|
|
"path": "1_setup\\model\\Beam_sim1.sim",
|
|
"solver": "nastran"
|
|
}
|
|
},
|
|
"design_variables": [
|
|
{
|
|
"id": "dv_001",
|
|
"name": "param_1",
|
|
"expression_name": "beam_half_core_thickness",
|
|
"type": "continuous",
|
|
"bounds": {
|
|
"min": 5,
|
|
"max": 10
|
|
},
|
|
"baseline": null,
|
|
"units": "",
|
|
"enabled": true,
|
|
"description": "Half thickness of beam core (mm) - affects weight and stiffness",
|
|
"canvas_position": {
|
|
"x": 50,
|
|
"y": 100
|
|
}
|
|
},
|
|
{
|
|
"id": "dv_002",
|
|
"name": "param_2",
|
|
"expression_name": "beam_face_thickness",
|
|
"type": "continuous",
|
|
"bounds": {
|
|
"min": 1,
|
|
"max": 3
|
|
},
|
|
"baseline": null,
|
|
"units": "",
|
|
"enabled": true,
|
|
"description": "Thickness of beam face sheets (mm) - bending resistance",
|
|
"canvas_position": {
|
|
"x": 50,
|
|
"y": 180
|
|
}
|
|
},
|
|
{
|
|
"id": "dv_003",
|
|
"name": "param_3",
|
|
"expression_name": "holes_diameter",
|
|
"type": "continuous",
|
|
"bounds": {
|
|
"min": 10,
|
|
"max": 50
|
|
},
|
|
"baseline": null,
|
|
"units": "",
|
|
"enabled": true,
|
|
"description": "Diameter of lightening holes (mm) - weight reduction",
|
|
"canvas_position": {
|
|
"x": 50,
|
|
"y": 260
|
|
}
|
|
},
|
|
{
|
|
"id": "dv_004",
|
|
"name": "param_4",
|
|
"expression_name": "hole_count",
|
|
"type": "continuous",
|
|
"bounds": {
|
|
"min": 8,
|
|
"max": 14
|
|
},
|
|
"baseline": null,
|
|
"units": "",
|
|
"enabled": true,
|
|
"description": "Number of lightening holes - balance weight vs strength",
|
|
"canvas_position": {
|
|
"x": 50,
|
|
"y": 340
|
|
}
|
|
}
|
|
],
|
|
"extractors": [
|
|
{
|
|
"id": "ext_001",
|
|
"name": "Mass Extractor",
|
|
"type": "mass",
|
|
"builtin": true,
|
|
"outputs": [
|
|
{
|
|
"name": "mass",
|
|
"metric": "total"
|
|
}
|
|
],
|
|
"canvas_position": {
|
|
"x": 740,
|
|
"y": 100
|
|
}
|
|
}
|
|
],
|
|
"objectives": [
|
|
{
|
|
"id": "obj_001",
|
|
"name": "Total mass (grams) - minimize for longer flight time",
|
|
"direction": "minimize",
|
|
"weight": 1.0,
|
|
"source": {
|
|
"extractor_id": "ext_001",
|
|
"output_name": "mass"
|
|
},
|
|
"target": 4000,
|
|
"units": "",
|
|
"canvas_position": {
|
|
"x": 1020,
|
|
"y": 100
|
|
}
|
|
},
|
|
{
|
|
"id": "obj_002",
|
|
"name": "First natural frequency (Hz) - avoid rotor resonance",
|
|
"direction": "maximize",
|
|
"weight": 1.0,
|
|
"source": {
|
|
"extractor_id": "ext_001",
|
|
"output_name": "fundamental_frequency"
|
|
},
|
|
"target": 150,
|
|
"units": "",
|
|
"canvas_position": {
|
|
"x": 1020,
|
|
"y": 200
|
|
}
|
|
}
|
|
],
|
|
"constraints": [
|
|
{
|
|
"id": "con_001",
|
|
"name": "Maximum tip displacement under 850g camera load < 1.5mm for image stabilization",
|
|
"type": "hard",
|
|
"operator": "<",
|
|
"threshold": 1.5,
|
|
"source": {
|
|
"extractor_id": "ext_001",
|
|
"output_name": "mass"
|
|
},
|
|
"penalty_config": {
|
|
"method": "quadratic",
|
|
"weight": 1000.0
|
|
},
|
|
"canvas_position": {
|
|
"x": 1020,
|
|
"y": 400
|
|
}
|
|
},
|
|
{
|
|
"id": "con_002",
|
|
"name": "Maximum von Mises stress < 120 MPa (Al 6061-T6, SF=2.3)",
|
|
"type": "hard",
|
|
"operator": "<",
|
|
"threshold": 120,
|
|
"source": {
|
|
"extractor_id": "ext_001",
|
|
"output_name": "mass"
|
|
},
|
|
"penalty_config": {
|
|
"method": "quadratic",
|
|
"weight": 1000.0
|
|
},
|
|
"canvas_position": {
|
|
"x": 1020,
|
|
"y": 500
|
|
}
|
|
},
|
|
{
|
|
"id": "con_003",
|
|
"name": "Natural frequency > 150 Hz to avoid rotor frequencies (80-120 Hz safety margin)",
|
|
"type": "hard",
|
|
"operator": ">",
|
|
"threshold": 150,
|
|
"source": {
|
|
"extractor_id": "ext_001",
|
|
"output_name": "mass"
|
|
},
|
|
"penalty_config": {
|
|
"method": "quadratic",
|
|
"weight": 1000.0
|
|
},
|
|
"canvas_position": {
|
|
"x": 1020,
|
|
"y": 600
|
|
}
|
|
}
|
|
],
|
|
"optimization": {
|
|
"algorithm": {
|
|
"type": "TPE",
|
|
"config": {
|
|
"n_startup_trials": 10
|
|
}
|
|
},
|
|
"budget": {
|
|
"max_trials": 30
|
|
},
|
|
"canvas_position": {
|
|
"x": 1300,
|
|
"y": 150
|
|
}
|
|
},
|
|
"canvas": {
|
|
"edges": [
|
|
{
|
|
"source": "dv_001",
|
|
"target": "model"
|
|
},
|
|
{
|
|
"source": "dv_002",
|
|
"target": "model"
|
|
},
|
|
{
|
|
"source": "dv_003",
|
|
"target": "model"
|
|
},
|
|
{
|
|
"source": "dv_004",
|
|
"target": "model"
|
|
},
|
|
{
|
|
"source": "model",
|
|
"target": "solver"
|
|
},
|
|
{
|
|
"source": "solver",
|
|
"target": "ext_001"
|
|
},
|
|
{
|
|
"source": "ext_001",
|
|
"target": "obj_001"
|
|
},
|
|
{
|
|
"source": "ext_001",
|
|
"target": "obj_002"
|
|
},
|
|
{
|
|
"source": "ext_001",
|
|
"target": "con_001"
|
|
},
|
|
{
|
|
"source": "ext_001",
|
|
"target": "con_002"
|
|
},
|
|
{
|
|
"source": "ext_001",
|
|
"target": "con_003"
|
|
},
|
|
{
|
|
"source": "obj_001",
|
|
"target": "optimization"
|
|
},
|
|
{
|
|
"source": "obj_002",
|
|
"target": "optimization"
|
|
},
|
|
{
|
|
"source": "con_001",
|
|
"target": "optimization"
|
|
},
|
|
{
|
|
"source": "con_002",
|
|
"target": "optimization"
|
|
},
|
|
{
|
|
"source": "con_003",
|
|
"target": "optimization"
|
|
}
|
|
],
|
|
"layout_version": "2.0"
|
|
}
|
|
} |