104 lines
2.6 KiB
JSON
104 lines
2.6 KiB
JSON
|
|
{
|
||
|
|
"study_name": "drone_gimbal_arm_optimization",
|
||
|
|
"optimization_request": "Multi-objective: minimize mass + maximize natural frequency, subject to displacement < 1.5mm, stress < 120 MPa, frequency > 150 Hz",
|
||
|
|
|
||
|
|
"design_variables": [
|
||
|
|
{
|
||
|
|
"parameter": "beam_half_core_thickness",
|
||
|
|
"bounds": [20, 30],
|
||
|
|
"description": "Half thickness of beam core in mm"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"parameter": "beam_face_thickness",
|
||
|
|
"bounds": [1, 3],
|
||
|
|
"description": "Thickness of beam face sheets in mm"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"parameter": "holes_diameter",
|
||
|
|
"bounds": [180, 280],
|
||
|
|
"description": "Diameter of lightening holes in mm"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"parameter": "hole_count",
|
||
|
|
"bounds": [8, 14],
|
||
|
|
"description": "Number of lightening holes"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
|
||
|
|
"objectives": [
|
||
|
|
{
|
||
|
|
"name": "mass",
|
||
|
|
"goal": "minimize",
|
||
|
|
"weight": 1.0,
|
||
|
|
"extraction": {
|
||
|
|
"action": "extract_mass",
|
||
|
|
"domain": "result_extraction",
|
||
|
|
"description": "Extract total mass from FEA results",
|
||
|
|
"params": {
|
||
|
|
"result_type": "mass",
|
||
|
|
"metric": "total"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"name": "fundamental_frequency",
|
||
|
|
"goal": "maximize",
|
||
|
|
"weight": 1.0,
|
||
|
|
"extraction": {
|
||
|
|
"action": "extract_frequency",
|
||
|
|
"domain": "result_extraction",
|
||
|
|
"description": "Extract first natural frequency from modal analysis",
|
||
|
|
"params": {
|
||
|
|
"result_type": "frequency",
|
||
|
|
"mode_number": 1
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
],
|
||
|
|
|
||
|
|
"constraints": [
|
||
|
|
{
|
||
|
|
"name": "max_displacement_limit",
|
||
|
|
"type": "less_than",
|
||
|
|
"threshold": 1.5,
|
||
|
|
"extraction": {
|
||
|
|
"action": "extract_displacement",
|
||
|
|
"domain": "result_extraction",
|
||
|
|
"description": "Extract maximum displacement from FEA results",
|
||
|
|
"params": {
|
||
|
|
"result_type": "displacement",
|
||
|
|
"metric": "max"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"name": "max_stress_limit",
|
||
|
|
"type": "less_than",
|
||
|
|
"threshold": 120,
|
||
|
|
"extraction": {
|
||
|
|
"action": "extract_stress",
|
||
|
|
"domain": "result_extraction",
|
||
|
|
"description": "Extract maximum von Mises stress",
|
||
|
|
"params": {
|
||
|
|
"result_type": "stress",
|
||
|
|
"metric": "max_von_mises"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"name": "min_frequency_limit",
|
||
|
|
"type": "greater_than",
|
||
|
|
"threshold": 150,
|
||
|
|
"extraction": {
|
||
|
|
"action": "extract_frequency",
|
||
|
|
"domain": "result_extraction",
|
||
|
|
"description": "Extract first natural frequency",
|
||
|
|
"params": {
|
||
|
|
"result_type": "frequency",
|
||
|
|
"mode_number": 1
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|