blackopsrepl's picture
feat(core): scale Bergamo routing model
610cbd2
/* Constraint definitions.
Add constraint modules with `solverforge generate constraint ...`.
The neutral shell starts with an empty constraint set. */
use crate::domain::FieldServicePlan;
use solverforge::prelude::*;
pub use self::assemble::create_constraints;
mod route_constraint;
pub mod route_metrics;
#[cfg(test)]
mod route_metrics_tests;
// @solverforge:begin constraint-modules
mod assigned_visits;
mod balance_workload;
mod minimize_travel;
mod priority_slack;
mod reachable_legs;
mod required_parts;
mod required_skills;
mod shift_capacity;
mod territory_affinity;
mod time_windows;
// @solverforge:end constraint-modules
mod assemble {
use super::*;
pub fn create_constraints() -> impl ConstraintSet<FieldServicePlan, HardSoftScore> {
// @solverforge:begin constraint-calls
(
assigned_visits::constraint(),
balance_workload::constraint(),
minimize_travel::constraint(),
priority_slack::constraint(),
reachable_legs::constraint(),
required_parts::constraint(),
required_skills::constraint(),
shift_capacity::constraint(),
territory_affinity::constraint(),
time_windows::constraint(),
)
// @solverforge:end constraint-calls
}
}