Spaces:
Running
Running
File size: 1,308 Bytes
7b2a37a f093ab7 7b2a37a 610cbd2 f093ab7 610cbd2 f093ab7 7b2a37a 531908f f093ab7 7b2a37a f093ab7 7b2a37a f093ab7 531908f f093ab7 7b2a37a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | /* 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
}
}
|