File size: 520 Bytes
7596726
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
use crate::domain::{Plan, PlanConstraintStreams};
use solverforge::prelude::*;
use solverforge::IncrementalConstraint;

const SCORE_SCALE: i64 = 100_000;

/// Hard-penalizes each shift whose scalar planning variable is still unassigned.
pub fn constraint() -> impl IncrementalConstraint<Plan, HardSoftDecimalScore> {
    ConstraintFactory::<Plan, HardSoftDecimalScore>::new()
        .shifts()
        .unassigned()
        .penalize(HardSoftDecimalScore::of_hard_scaled(SCORE_SCALE))
        .named("Assigned shift")
}