{
  "study_name": "simple_beam_optimization",
  "description": "Test Phase 3.3 post-processing features",
  "substudy_name": "05_test_postprocessing_5trials",
  "design_variables": {
    "beam_half_core_thickness": {
      "type": "continuous",
      "min": 10.0,
      "max": 40.0,
      "baseline": 20.0,
      "units": "mm",
      "description": "Half thickness of beam core"
    },
    "beam_face_thickness": {
      "type": "continuous",
      "min": 10.0,
      "max": 40.0,
      "baseline": 20.0,
      "units": "mm",
      "description": "Thickness of beam face sheets"
    },
    "holes_diameter": {
      "type": "continuous",
      "min": 150.0,
      "max": 450.0,
      "baseline": 300.0,
      "units": "mm",
      "description": "Diameter of lightening holes"
    },
    "hole_count": {
      "type": "integer",
      "min": 5,
      "max": 15,
      "baseline": 10,
      "units": "unitless",
      "description": "Number of lightening holes"
    }
  },
  "extractors": [
    {
      "name": "max_displacement",
      "action": "extract_displacement",
      "description": "Extract maximum displacement from OP2",
      "parameters": {
        "metric": "max"
      }
    },
    {
      "name": "max_stress",
      "action": "extract_solid_stress",
      "description": "Extract maximum von Mises stress from OP2",
      "parameters": {
        "subcase": 1,
        "element_type": "auto"
      }
    },
    {
      "name": "mass",
      "action": "extract_expression",
      "description": "Extract mass from p173 expression",
      "parameters": {
        "expression_name": "p173"
      }
    }
  ],
  "objectives": [
    {
      "name": "minimize_displacement",
      "extractor": "max_displacement",
      "goal": "minimize",
      "weight": 0.33,
      "description": "Minimize maximum displacement"
    },
    {
      "name": "minimize_stress",
      "extractor": "max_stress",
      "goal": "minimize",
      "weight": 0.33,
      "description": "Minimize maximum von Mises stress"
    },
    {
      "name": "minimize_mass",
      "extractor": "mass",
      "goal": "minimize",
      "weight": 0.34,
      "description": "Minimize beam mass"
    }
  ],
  "constraints": [
    {
      "name": "displacement_limit",
      "extractor": "max_displacement",
      "type": "less_than",
      "value": 10.0,
      "units": "mm",
      "description": "Maximum displacement must be less than 10mm"
    }
  ],
  "optimization_settings": {
    "algorithm": "optuna",
    "n_trials": 5,
    "sampler": "TPE",
    "pruner": "HyperbandPruner",
    "direction": "minimize",
    "timeout_per_trial": 600
  },
  "post_processing": {
    "generate_plots": true,
    "plot_formats": ["png", "pdf"],
    "cleanup_models": true,
    "keep_top_n_models": 3,
    "cleanup_dry_run": false
  }
}
