use crate::core::evaluation::Evaluation;
#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize};
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[derive(Debug, Clone, PartialEq)]
pub struct Candidate<D> {
pub decision: D,
pub evaluation: Evaluation,
}
impl<D> Candidate<D> {
pub fn new(decision: D, evaluation: Evaluation) -> Self {
Self {
decision,
evaluation,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn new_pairs_decision_and_evaluation() {
let c = Candidate::new(vec![1.0, 2.0], Evaluation::new(vec![5.0]));
assert_eq!(c.decision, vec![1.0, 2.0]);
assert_eq!(c.evaluation.objectives, vec![5.0]);
}
}