[docs]classParameterType(Enum):"""Enum defining types of hyperparameters for optimization. Each type corresponds to a specific Optuna suggest method and parameter behavior. """CATEGORICAL="categorical"# Uses suggest_categorical for discrete choicesINTEGER="integer"# Uses suggest_int for whole numbersFLOAT="float"# Uses suggest_float for continuous valuesLOG_FLOAT="log_float"# Uses suggest_float with log=True for exponential scale
[docs]classParameterSpec(NamedTuple):"""Specification for a hyperparameter including its type and valid range/options."""param_type:ParameterTypevalue_range:Union[Tuple[Any,Any],List[Any]]
[docs]defsuggest_parameter(trial:Any,param_name:str,param_spec:ParameterSpec)->Any:"""Suggest a parameter value using the appropriate Optuna suggest method. Parameters ---------- trial : optuna.Trial The Optuna trial object param_name : str Name of the parameter param_spec : ParameterSpec Specification of the parameter type and range Returns ------- Any The suggested parameter value Raises ------ ValueError If the parameter type is not recognized """ifparam_spec.param_type==ParameterType.CATEGORICAL:returntrial.suggest_categorical(param_name,param_spec.value_range)elifparam_spec.param_type==ParameterType.INTEGER:min_val,max_val=param_spec.value_rangereturntrial.suggest_int(param_name,min_val,max_val)elifparam_spec.param_type==ParameterType.FLOAT:min_val,max_val=param_spec.value_rangereturntrial.suggest_float(param_name,min_val,max_val)elifparam_spec.param_type==ParameterType.LOG_FLOAT:min_val,max_val=param_spec.value_rangereturntrial.suggest_float(param_name,min_val,max_val,log=True)else:raiseValueError(f"Unknown parameter type: {param_spec.param_type}")