Contents

Cyclical Scheduling - Now Bulk Scheduling

Andrew Dotto Updated by Andrew Dotto

With the release of Dynamic Resource Scheduler, Cyclical Scheduling has been significantly enhanced to support all of your Bulk Scheduling needs.

Bulk Scheduling can now run against any job list you define. Using the power of Scheduled Services, user-defined datasets now drive your scheduling configuration, allowing you to control which jobs form part of your scheduling backlog. This introduces greater flexibility while retaining the capabilities of the original cyclical scheduling functionality.

Alongside this enhancement, two new scheduling operations have been introduced.

Cyclical Scheduling - Why it Works

The Cyclical Module allows you to schedule large quantities of jobs using configurable scheduling parameters. These parameters can be tailored to support the specific timing requirements of compliance, servicing, or any other type of large scale work that you need to organise for your resource pool.

Previous versions of this function would typically take tasks raised in bulk from a back-office system, identifies them though fixed data points, and then uses a combination of sorting and line-of-site scheduling, to efficiently fill your resource diaries.

This approach produces structured and efficient routes while remaining lightweight and fast. By avoiding the full dynamic optimisation engine, large volumes of cyclical work can be scheduled quickly and predictably.

Introducing Two New Scheduling Modes!

The new Bulk Scheduling function introduces two scheduling modes.

Greedy Mode works similarly to the previous implementation, using sorting and line-of-sight scheduling to place work quickly and efficiently.

Optimised Mode uses the power of the optimisation solver to generate schedules aligned with the standard dynamic scheduling experience.

Greedy Mode

Greedy Mode works similar to the original Cyclical Scheduling you have previously used. The process is simple, defined and efficient.

  1. Load unplanned jobs from DB via grid definition or service order query
  2. Sort jobs by configured sequence (postCode, targetDate, priority, template, distance)
  3. Optional pre-run: if possible, match jobs to existing scheduled jobs at same location
  4. For each job: set planning period, call DSS ScheduleJob command
  5. AM/PM cascade: up to 4 passes per job (AM → PM → allDay → nextDay) to determine best fit within the schedule
  6. Track diary fill % and maxJobs per worker in-memory to ensure scheduling rules are met
  7. Post-schedule: create Unavailabilities, remove locks, commit batch and resources.

Optimized Mode

Optimised mode is our new scheduling function for bulk scheduling tasks. Still focusing on your configuration requirements, jobs are no longer sorted via line of sight or proximity, but passed, sorted and ordered, in bulk to our optimising Solver. This scheduling will take longer, but will provide an optimised result based on your configuration and our adaptative travel time matrix.

This function provides for all of the power of your regular scheduling, now in bulk, following a similar, but more dynamic process.
  1. Load unplanned jobs from DB via grid definition or service order query
  2. Update planning periods in DB for all the jobs selected within the batch
  3. Build a scheduling queue for the Solver using scheduling criteria and restrictions
  4. Manage daily Unavailabilities within the Solver to manage your defined AM/PM configurations
  5. Manage resource availability with limitations, quotas and job limits
  6. Schedule jobs using Solver Optimisation within ordered batches
  7. Complete batch schedule and commit to resources.

Key Differences

Key Differences

Greedy

Optimized

AM/PM enforcement

Managed though manipluating the planning period through customer configuration

Solver Determined based on Unavailabilities and Slot rules

How does it fill the Diary?

An in-memory tracker resolves conflicts and availability per diary, or configured scheduling resource

The Dynamic Resource Scheduler Solver uses Scheduling Quotas and current loading to determine the best scheduling solution

Max jobs/worker/day

An in-memory tracker resolves conflicts and Job Loading per diary

The Dynamic Resource Scheduler Solver uses Scheduling Quotas and current loading and configurations to determine the best scheduling solution

Travel optimization

Jobs are sorted and a custom heuristic algorithm is used to determine optimal job scheduling and diary fit

Our Dynamic Resource Scheduler Solver is engaged to ensure that the most optimal route is applied at each scheduling request

Scalability

Slow for large batches, but does not require large scale Solver interactions, providing for scheduling with limited solver performance impact.

Faster for large batches, but requires high volume Solver calculations which may slightly impact solver performance.

Was this article useful?

Cyclical Scheduling - Configuration Interface

Resource Quotas Improvements - Percentages

Contact