Skip to main content

Crate u_schedule

Crate u_schedule 

Source
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, TransitionMatrix
  • validation: Input integrity checks (duplicate IDs, DAG cycles, resource refs)
  • dispatching: Priority dispatching rules (SPT, EDD, ATC, etc.) and rule engine
  • scheduler: Greedy scheduler and KPI evaluation
  • ga: GA-based scheduling with OSV/MAV encoding
  • cp: 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:

FeatureSimpleSchedulerGA decodeCP 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 onlyvalidated 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)

  1. Pins are opaque reservations — they never update last_category, so the next TransitionMatrix-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. See scheduler::SimpleScheduler::with_fixed_assignments for the full writeup. Known limitation, not yet addressed: changeover-aware pin accounting — treat a pin as a last_category update 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.