The introduction of the mentioned macro simplifies a lot the creation of a new algorithm, however it doesn't allow to define default values for survival or selection operators. For example, in NSGA-III I'd like to have are_aspirational defaulted in false as shown in the code below
use ndarray::Array2;
use crate::{
define_algorithm_and_builder,
operators::{
selection::moo::Nsga3RandomSelection, survival::moo::Nsga3ReferencePointsSurvival,
},
};
define_algorithm_and_builder!(
Nsga3,
Nsga3RandomSelection,
Nsga3ReferencePointsSurvival,
survival_args = [ reference_points: Array2<f64>, are_aspirational: bool = false]
);