use std::fmt;
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum GaError {
ConfigurationError(String),
ValidationError(String),
CrossoverError(String),
MutationError(String),
InitializationError(String),
SelectionError(String),
InvalidIslandConfiguration(String),
InvalidNichingConfiguration(String),
InvalidNsga2Configuration(String),
InvalidNsga3Configuration(String),
InvalidMoeaDConfiguration(String),
InvalidSpea2Configuration(String),
InvalidSmsEmoaConfiguration(String),
InvalidIbeaConfiguration(String),
InvalidConstraintConfiguration(String),
InvalidIndicatorConfiguration(String),
MigrationError(String),
CheckpointError(String),
LocalSearchError(String),
}
impl fmt::Display for GaError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
GaError::ConfigurationError(msg) => write!(f, "Configuration error: {}", msg),
GaError::ValidationError(msg) => write!(f, "Validation error: {}", msg),
GaError::CrossoverError(msg) => write!(f, "Crossover error: {}", msg),
GaError::MutationError(msg) => write!(f, "Mutation error: {}", msg),
GaError::InitializationError(msg) => write!(f, "Initialization error: {}", msg),
GaError::SelectionError(msg) => write!(f, "Selection error: {}", msg),
GaError::InvalidIslandConfiguration(msg) => {
write!(f, "Invalid island configuration: {}", msg)
}
GaError::InvalidNichingConfiguration(msg) => {
write!(f, "Invalid niching configuration: {}", msg)
}
GaError::InvalidNsga2Configuration(msg) => {
write!(f, "Invalid NSGA-II configuration: {}", msg)
}
GaError::InvalidNsga3Configuration(msg) => {
write!(f, "Invalid NSGA-III configuration: {}", msg)
}
GaError::InvalidMoeaDConfiguration(msg) => {
write!(f, "Invalid MOEA/D configuration: {}", msg)
}
GaError::InvalidSpea2Configuration(msg) => {
write!(f, "Invalid SPEA2 configuration: {}", msg)
}
GaError::InvalidSmsEmoaConfiguration(msg) => {
write!(f, "Invalid SMS-EMOA configuration: {}", msg)
}
GaError::InvalidIbeaConfiguration(msg) => {
write!(f, "Invalid IBEA configuration: {}", msg)
}
GaError::InvalidConstraintConfiguration(msg) => {
write!(f, "Invalid constraint configuration: {}", msg)
}
GaError::InvalidIndicatorConfiguration(msg) => {
write!(f, "Invalid indicator configuration: {}", msg)
}
GaError::MigrationError(msg) => write!(f, "Migration error: {}", msg),
GaError::CheckpointError(msg) => write!(f, "Checkpoint error: {}", msg),
GaError::LocalSearchError(msg) => write!(f, "Local search error: {}", msg),
}
}
}
impl std::error::Error for GaError {}