#[derive(Debug, Clone)]
pub struct MultiObjectiveConfig {
pub scalarization_method: ScalarizationMethod,
pub reference_point: Option<Vec<f64>>,
pub objective_weights: Vec<f64>,
pub pareto_method: ParetoApproximationMethod,
pub num_objectives: usize,
}
impl Default for MultiObjectiveConfig {
fn default() -> Self {
Self {
scalarization_method: ScalarizationMethod::WeightedSum,
reference_point: None,
objective_weights: vec![1.0],
pareto_method: ParetoApproximationMethod::NonDominatedSorting,
num_objectives: 1,
}
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum ScalarizationMethod {
WeightedSum,
Tchebycheff,
Achievement,
Hypervolume,
ExpectedHypervolumeImprovement,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum ParetoApproximationMethod {
NonDominatedSorting,
NSGAII,
SPEA2,
HypervolumeSelection,
}