{
  "study_name": "beam_optimization_with_neural",
  "sim_file": "examples/Models/Beam/Beam.sim",
  "fem_file": "examples/Models/Beam/Beam_fem1.fem",

  "design_variables": [
    {
      "name": "width",
      "expression_name": "width",
      "min": 20.0,
      "max": 80.0
    },
    {
      "name": "height",
      "expression_name": "height",
      "min": 30.0,
      "max": 100.0
    },
    {
      "name": "thickness",
      "expression_name": "thickness",
      "min": 2.0,
      "max": 10.0
    }
  ],

  "objectives": [
    {
      "name": "max_stress",
      "type": "minimize",
      "weight": 1.0,
      "extractor": {
        "type": "result_parameter",
        "parameter_name": "Max Von Mises Stress"
      }
    },
    {
      "name": "mass",
      "type": "minimize",
      "weight": 0.5,
      "extractor": {
        "type": "expression",
        "expression_name": "mass"
      }
    }
  ],

  "constraints": [
    {
      "name": "stress_limit",
      "type": "less_than",
      "value": 250.0,
      "extractor": {
        "type": "result_parameter",
        "parameter_name": "Max Von Mises Stress"
      }
    },
    {
      "name": "max_displacement",
      "type": "less_than",
      "value": 5.0,
      "extractor": {
        "type": "result_parameter",
        "parameter_name": "Max Displacement"
      }
    }
  ],

  "optimization": {
    "algorithm": "NSGA-II",
    "n_trials": 200,
    "population_size": 20
  },

  "neural_surrogate": {
    "enabled": true,
    "model_checkpoint": "atomizer-field/checkpoints/beam_model_v1.0/best_model.pt",
    "confidence_threshold": 0.85,
    "fallback_to_fea": true,
    "ensemble_models": [
      "atomizer-field/checkpoints/beam_model_v1.0/model_1.pt",
      "atomizer-field/checkpoints/beam_model_v1.0/model_2.pt",
      "atomizer-field/checkpoints/beam_model_v1.0/model_3.pt"
    ],
    "device": "cuda",
    "batch_size": 32,
    "cache_predictions": true
  },

  "hybrid_optimization": {
    "enabled": true,
    "exploration_trials": 20,
    "training_interval": 50,
    "validation_frequency": 10,
    "min_training_samples": 30,
    "retrain_on_drift": true,
    "drift_threshold": 0.15,
    "adaptive_switching": true,
    "phases": [
      {
        "name": "exploration",
        "trials": [0, 20],
        "use_nn": false,
        "description": "Initial FEA-based exploration"
      },
      {
        "name": "training",
        "trials": [21, 30],
        "use_nn": false,
        "description": "Collect training data"
      },
      {
        "name": "exploitation",
        "trials": [31, 180],
        "use_nn": true,
        "description": "Neural network exploitation"
      },
      {
        "name": "validation",
        "trials": [181, 200],
        "use_nn": false,
        "description": "Final FEA validation"
      }
    ]
  },

  "training_data_export": {
    "enabled": true,
    "export_dir": "atomizer_field_training_data/beam_study",
    "export_frequency": 1,
    "include_failed_trials": false,
    "compression": "gzip"
  },

  "neural_training": {
    "auto_train": true,
    "training_script": "atomizer-field/train.py",
    "epochs": 200,
    "learning_rate": 0.001,
    "batch_size": 16,
    "validation_split": 0.2,
    "early_stopping_patience": 20,
    "model_architecture": "GraphUNet",
    "hidden_channels": 128,
    "num_layers": 4,
    "dropout": 0.1,
    "physics_loss_weight": 0.3
  },

  "performance_tracking": {
    "track_speedup": true,
    "track_accuracy": true,
    "export_metrics": true,
    "metrics_file": "neural_performance_metrics.json"
  },

  "version": "2.0",
  "description": "Beam optimization with AtomizerField neural surrogate for 600x speedup"
}