use super::types::*;
use crate::common::IntegrateFloat;
use crate::error::{IntegrateError, IntegrateResult};
impl<F: IntegrateFloat> AdaptiveAlgorithmSelector<F> {
pub fn new() -> Self {
Self {
algorithm_registry: AlgorithmRegistry::default(),
selection_criteria: SelectionCriteria::default(),
switching_policies: SwitchingPolicies::default(),
algorithm_models: std::collections::HashMap::new(),
}
}
pub fn select_algorithm(&self, metrics: &PerformanceMetrics) -> IntegrateResult<String> {
Ok("default".to_string())
}
pub fn register_algorithm(
&mut self,
_name: String,
_characteristics: AlgorithmCharacteristics<F>,
) -> IntegrateResult<()> {
Ok(())
}
}
impl<F: IntegrateFloat + Default> Default for AdaptiveAlgorithmSelector<F> {
fn default() -> Self {
Self::new()
}
}