Skip to main content

analyze

Function analyze 

Source
pub fn analyze<S>(solution: &S) -> ScoreAnalysis<S::Score>
where S: Analyzable, S::Score: 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));