solverforge-solver 0.15.0

Solver engine for SolverForge
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use solverforge_core::domain::PlanningSolution;
use solverforge_scoring::Director;

use crate::heuristic::r#move::Move;

pub(crate) fn evaluate_trial_move<S, D, M>(score_director: &mut D, m: &M) -> S::Score
where
    S: PlanningSolution,
    D: Director<S>,
    M: Move<S>,
{
    let score_state = score_director.snapshot_score_state();
    let undo = m.do_move(score_director);
    let score = score_director.calculate_score();
    m.undo_move(score_director, undo);
    score_director.restore_score_state(score_state);
    score
}