pub struct SimpleScheduler { /* private fields */ }Expand description
Simple priority-driven greedy scheduler.
Schedules tasks by priority (or dispatching rule), assigning each activity to the earliest-available candidate resource. Supports sequence-dependent setup times via transition matrices.
§Example
use u_schedule::scheduler::{SimpleScheduler, ScheduleRequest};
use u_schedule::models::{Task, Resource, ResourceType, Activity, ActivityDuration, ResourceRequirement};
let tasks = vec![
Task::new("J1").with_activity(
Activity::new("O1", "J1", 0)
.with_duration(ActivityDuration::fixed(1000))
.with_requirement(
ResourceRequirement::new("Machine")
.with_candidates(vec!["M1".into()])
)
),
];
let resources = vec![Resource::new("M1", ResourceType::Primary)];
let request = ScheduleRequest::new(tasks, resources);
let scheduler = SimpleScheduler::new();
let schedule = scheduler.schedule_request(&request);
assert_eq!(schedule.assignment_count(), 1);Implementations§
Source§impl SimpleScheduler
impl SimpleScheduler
Sourcepub fn with_transition_matrices(
self,
matrices: TransitionMatrixCollection,
) -> Self
pub fn with_transition_matrices( self, matrices: TransitionMatrixCollection, ) -> Self
Sets transition matrices.
Sourcepub fn with_rule_engine(self, engine: RuleEngine) -> Self
pub fn with_rule_engine(self, engine: RuleEngine) -> Self
Sets a rule engine for task ordering.
When set, tasks are sorted by the rule engine instead of by priority.
Sourcepub fn schedule(
&self,
tasks: &[Task],
resources: &[Resource],
start_time_ms: i64,
) -> Schedule
pub fn schedule( &self, tasks: &[Task], resources: &[Resource], start_time_ms: i64, ) -> Schedule
Schedules tasks on resources.
§Algorithm
- Sort tasks by rule engine or priority (descending).
- For each task, schedule activities in sequence order.
- For each activity, find the earliest-available candidate resource.
- Apply setup time from transition matrices.
Sourcepub fn schedule_request(&self, request: &ScheduleRequest) -> Schedule
pub fn schedule_request(&self, request: &ScheduleRequest) -> Schedule
Schedules from a request.
Trait Implementations§
Source§impl Clone for SimpleScheduler
impl Clone for SimpleScheduler
Source§fn clone(&self) -> SimpleScheduler
fn clone(&self) -> SimpleScheduler
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for SimpleScheduler
impl Debug for SimpleScheduler
Auto Trait Implementations§
impl Freeze for SimpleScheduler
impl !RefUnwindSafe for SimpleScheduler
impl Send for SimpleScheduler
impl Sync for SimpleScheduler
impl Unpin for SimpleScheduler
impl UnsafeUnpin for SimpleScheduler
impl !UnwindSafe for SimpleScheduler
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more