pub fn analyze<S>(solution: &S) -> ScoreAnalysis<S::Score>Expand description
Analyzes a solution for constraint violations.
Returns a breakdown of each constraint’s contribution to the score.
§Example
use solverforge_core::domain::PlanningSolution;
use solverforge_core::score::SimpleScore;
use solverforge_solver::manager::{analyze, Analyzable, ScoreAnalysis};
#[derive(Clone)]
struct Schedule { score: Option<SimpleScore> }
impl PlanningSolution for Schedule {
type Score = SimpleScore;
fn score(&self) -> Option<Self::Score> { self.score }
fn set_score(&mut self, score: Option<Self::Score>) { self.score = score; }
}
impl Analyzable for Schedule {
fn analyze(&self) -> ScoreAnalysis<SimpleScore> {
ScoreAnalysis { score: SimpleScore::of(0), constraints: vec![] }
}
}
let schedule = Schedule { score: Some(SimpleScore::of(0)) };
let result = analyze(&schedule);
assert_eq!(result.score, SimpleScore::of(0));