use thiserror::Error;
use crate::algorithms::AlgorithmBuilderError;
use crate::evaluator::EvaluatorError;
use crate::operators::evolve::EvolveError;
#[derive(Debug, Error)]
pub enum InitializationError {
#[error("Error during evaluation at initialization: {0}")]
Evaluator(#[from] EvaluatorError),
#[error("Invalid fitness setup: {0}")]
InvalidFitness(String),
#[error("Invalid constraints setup: {0}")]
InvalidConstraints(String),
#[error("Algorithm is not initialized yet: {0}")]
NotInitializated(String),
}
#[derive(Debug, Error)]
pub enum AlgorithmError {
#[error("Error during evolution: {0}")]
Evolve(#[from] EvolveError),
#[error("Error during evaluation: {0}")]
Evaluator(#[from] EvaluatorError),
#[error("Invalid parameter: {0}")]
ValidationError(#[from] AlgorithmBuilderError),
#[error("Error during onitialization: {0}")]
Initialization(#[from] InitializationError),
}