Skip to content

Optimization Configuration

The optimization.json file configures parameter optimization settings, including the optimization algorithm, target parameters, observational constraints, and cost calculation methods.

Optimization Algorithm

The algorithm_optimization field specifies the optimization scheme, which can be either:

  • A direct algorithm name

  • A path to a JSON file with detailed algorithm settings

json
"algorithm_optimization": "Path to algorithm configuration or algorithm name"

Algorithm Configuration File

The algorithm configuration file specifies detailed optimization settings:

json
{
    "method": "Optimization method name",
    "options": {
        "maxfevals": "Maximum function evaluations",
        "multi_threading": "Enable multi-threading support"
    },
    "package": "Source package for optimization"
}

Algorithm Selection

  • The same method may be available through different packages

  • Both method and package must be specified

  • Options can be customized for each method/package combination

Available Methods To list all implemented optimization methods:

julia
using SindbadOptimization
showMethodsOf(OptimizationMethod)

Optimization Parameters

This section defines default parameter properties and lists parameters to optimize.

Default Parameter Settings

json
"model_parameter_default": {
    "distribution": ["Distribution type", "Distribution parameters"],
    "is_ml": "Flag for machine learning optimization"
}

Parameter List

json
"model_parameters_to_optimize": {
    "approach,parameter_name": "Override settings or null for defaults"
}

Parameter Naming

Parameters follow the convention: ${approach},${parameter_name}

Optimization Objective

This section configures observational constraints and cost combination methods.

json
{
    "multi_constraint_method": "Method to combine variable costs",
    "multi_objective_algorithm": "Flag for multi-objective optimization",
    "observational_constraints": ["List of variables for cost calculation"]
}

Available Methods

  • Use showMethodsOf(SpatialMetricAggr) for supported multi_constraint_method options

Observational Constraints

Default Cost Settings

json
"default_cost": {
    "aggr_func": "Spatial/temporal aggregation function",
    "aggr_obs": "Flag for observational data aggregation",
    "aggr_order": "Aggregation order (time_space or space_time)",
    "cost_metric": "Cost calculation method",
    "cost_weight": "Variable weight in cost calculation",
    "min_data_points": "Minimum valid data points required",
    "spatial_data_aggr": "Spatial data aggregation method",
    "spatial_cost_aggr": "Spatial cost aggregation method",
    "spatial_weight": "Enable area-based weighting",
    "temporal_data_aggr": "Temporal aggregation method"
}

Data Quality Settings

json
{
    "use_quality_flag": "Apply data quality flags",
    "use_spatial_weight": "Apply spatial area weights",
    "use_uncertainty": "Consider data uncertainty"
}

Available Methods

  • Use showMethodsOf(PerfMetric) for cost metrics

  • Use showMethodsOf(SpatialMetricAggr) for spatial aggregation

  • Use showMethodsOf(TimeAggregation) for temporal methods

Default Observation Settings

json
"default_observation": {
    "additive_unit_conversion": "Additive (true) or multiplicative (false) unit conversion",
    "bounds": "Valid data range after conversion",
    "data_path": "Path to observation data file",
    "is_categorical": "Flag for categorical data",
    "standard_name": "Descriptive variable name",
    "sindbad_unit": "Unit used within SINDBAD",
    "source_product": "Data source identifier",
    "source_to_sindbad_unit": "Unit conversion factor",
    "source_unit": "Original data unit",
    "source_variable": "Variable name in source file",
    "space_time_type": "Data type classification"
}

Data Handling

  • Values outside bounds are replaced with NaN/missing

  • Unit conversions are applied during data processing

  • Ensure data paths are accessible from the experiment environment