{
  "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
        }
      }
    }
  ]
}
