solverforge-hospital / src /constraints /assigned_shift.rs
github-actions[bot]
chore: sync uc-hospital Space
7596726
raw
history blame contribute delete
520 Bytes
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")
}