Expand description
A scheduling framework.
Provides domain models, constraints, validation, dispatching rules,
and a greedy scheduler for scheduling problems. This crate defines
the scheduling domain language — metaheuristic algorithms (GA, SA, CP)
are provided by u-metaheur at a lower layer.
§Modules
models: Domain types —Task,Activity,Resource,Schedule,Assignment,Calendar,Constraint,TransitionMatrixvalidation: Input integrity checks (duplicate IDs, DAG cycles, resource refs)dispatching: Priority dispatching rules (SPT, EDD, ATC, etc.) and rule enginescheduler: Greedy scheduler and KPI evaluationga: GA-based scheduling with OSV/MAV encodingcp: CP-based scheduling formulation
§Architecture
This crate depends on u-metaheur and u-numflow, and contains only scheduling
domain logic — no nesting, packing, or manufacturing concepts.
§Solver enforcement matrix (0.4.0)
Model expressiveness and solver enforcement are distinct. What each execution path actually enforces:
| Feature | SimpleScheduler | GA decode | CP builder |
|---|---|---|---|
| Fixed-assignment seeding (pin) 1 | ✅ | ❌ | ❌ |
| Multi-requirement simultaneous hold | ✅ | ❌ (single resource per activity) | ❌ (first candidate) |
| Resource calendar | ✅ | ❌ | ❌ |
| Capacity > 1 | ✅ | ❌ | ❌ |
| Setup/teardown duration components | ✅ | ❌ | ❌ |
TransitionMatrix sequence-dependent setup | ✅ | ✅ | ❌ |
Constraint::{TimeWindow, Synchronize} | validated only | validated only | ❌ (skipped) |
Constraint::TransitionCost | ❌ (unsupported) | ❌ | ❌ |
Every scheduler::SimpleScheduler result self-annotates via
scheduler::check_schedule, so Schedule::is_valid() is
meaningful on that path. Run the checker manually on GA/CP output to
obtain honest violation reports.
§References
- Pinedo (2016), “Scheduling: Theory, Algorithms, and Systems”
- Brucker (2007), “Scheduling Algorithms”
- Blazewicz et al. (2019), “Handbook on Scheduling”
- Haupt (1989), “A Survey of Priority Rule-Based Scheduling”
- Kolisch & Hartmann (1999), “Heuristic algorithms for the RCPSP” (serial SGS)
Pins are opaque reservations — they never update
last_category, so the nextTransitionMatrix-governed activity placed on the same resource computes its changeover against the category that was current before the pin, understating the true setup from the pin’s task. Seescheduler::SimpleScheduler::with_fixed_assignmentsfor the full writeup. Known limitation, not yet addressed: changeover-aware pin accounting — treat a pin as alast_categoryupdate so the following activity’s setup reflects a transition from the pinned task’s category. ↩
Modules§
- cp
- CP-based scheduling formulation.
- dispatching
- Dispatching rules and rule engine for scheduling.
- ga
- GA-based scheduling optimization.
- models
- Scheduling domain models.
- scheduler
- Greedy schedulers and KPI evaluation.
- validation
- Input validation for scheduling problems.