Optimize schedules
Skedulo optimization now uses route optimization as the default implementation throughout the Skedulo web app.
Planr deprecation
Skedulo continues to support our legacy optimization endpoint; /planr
, however, the default optimization engine is now our new route optimization engine, which uses the /optimization
endpoint.
Suggest is currently only available through the Planr API. All new batch optimization and schedule requests should be made using Optimization.
Overview
Skedulo uses optimization to efficiently schedule multiple jobs and resources across a scheduling window, taking into account multiple constraints such as skills matching, resource availability, location, and travel time.
Optimization uses a constraint solving algorithm that attempts to find a valid scheduling solution based on the selected jobs and constraint options included in your request.
You can optimize schedules of work using the Skedulo web application or remotely using the Skedulo API:
-
In the Skedulo web application, you can select a number of jobs on the swimlane and click the Optimize button to open constraints menu and run an optimization query.
This provides optimization results in real time on the swimlane, which you can then accept, modify manually, or decline.
-
In the web application, you can use the Optimization schedules settings page to schedule a batch optimization.
-
Use the
/optimization
REST API to create optimization requests or schedule a batch optimization remotely.Batch optimization can be scheduled to run at a scheduled time daily, weekly, monthly, or ad hoc, with results displayed on the swimlane.
See the Getting started with optimization section for tutorials for how to create optimization requests using each of the above methods.
Usage limitations
Important
While batch or recurring optimization requests support a larger number of request items than Planr, there is still a limit on the number of jobs and resources that can be handled in a single request.
For optimization requests through the API or web application, there is a hard limit of 2000 jobs and 200 resources in a single request.
To ensure meaningful results, we recommend keeping the number of jobs and resources in a single request to smaller numbers where possible.
Planr is limited to 200 jobs per request within the scheduling window.
Optimization is an expensive operation, therefore it is necessary to limit the number of jobs included in a request to provide real time response to schedule problems. The higher the number of jobs, resources, and activities being optimized, the longer the optimization engine will take to find a solution.
For this reason, Skedulo recommends using the optimization feature to process the smallest number of jobs and resources as is practical.
Skedulo recommends grouping jobs to remain within the 2000 jobs per request limitation. You can use several methods to group jobs:
Region
: Filters the jobs you want to schedule by region to schedule jobs one region at a time.Resource Type
: Groups jobs by resource type required to complete the job. For example, a person or a physical asset (non-human resource, usually an object, such as a truck, forklift, and so on).Resource Category
: Groups jobs by the category of work that needs to be performed by the resource.Resource Tags
: Groups jobs by the skills the resource is required to have in order to carry out the job.
Where you have a high number of jobs that require automated scheduling using optimization, Skedulo recommends that you use these filters to group your jobs, then use optimization to schedule jobs accordingly for that group.
The efficiency of this process depends highly on the number of jobs you want to schedule using optimization.
Depending on the number of jobs and resources, you can schedule all jobs for that group for the entire scheduling window, or you may need run a new optimization request for each day for each group.
These filters are available in the scheduling page of the Skedulo web application. For more information about using optimization to schedule jobs using the web application, see Automate scheduling with optimization.
You can also use the Skedulo GraphQL API and the Optimization API to filter query jobs and optimize based on other criteria. This is discussed further in this chapter.
Optimization constraints
Optimization uses hard, medium, and soft constraints to determine how to best schedule a set of jobs according to the scheduling options.
Constraints are a set of business rules applied to both jobs and resources that the engine must follow when determining the optimal solution.
These rules are based on the job settings and scheduling options that are configured when jobs are created. Optimization uses these rules to determine when to schedule each job.
-
A hard constraint must not be broken when scheduling a job. For example, one resource cannot be assigned two different jobs at the same time.
-
A medium constraint constrains the number of unscheduled job allocations in the solution. This minimizes the number of unscheduled jobs. Higher medium score violations indicate that a number of jobs might not have been scheduled by the request.
-
A soft constraint may be violated under certain circumstances in favor of a better overall scheduling outcome. For example, a resource prefers not to travel more than 15 minutes from their home address on Fridays.
Hard, medium, and soft scores are returned by the Optimization and Planr APIs when making /schedule
or /suggest
requests.
These scores are primarily for Skedulo’s internal use and indicate how successful the schedule is in terms of respecting constraints in the context of the request.
The engine accounts for the following constraints when deciding on a schedule:
- Account Inclusion and Exclusion (View inclusions and View exclusions)
- Soft / Hard skill tags (Manage tags (Skills))
- Time constraints (Apply time constraints to jobs)
- Work with pre-allocated time (Allocate work))
- Work with pre-assigned resource (Manage resources)
Valid schedules
Using optimization does not necessarily guarantee the best solution possible, but it is a valid solution that violates no hard constraints and as few soft constraints as possible based on the needs of the business, within a commercially reasonable timeframe.
For more information about optimization rules, see Overview of optimization (Mastermind).
Multiple resource requirements
Optimization can create a valid scheduling solution for jobs that have resource requirements for multiple skill sets and therefore, need more than one resource to work on the same job.
For example, a job may require a qualified high-voltage electrician, two third-year electrical apprentices, and a laborer, all with a Working At Heights certificate. Set a time for the job to be carried out and optimization can assign the resources required based on the skills required to complete the job.
Resource Inclusion and Exclusion
The optimization engine will also consider resources included in exclusion or inclusion lists (Skedulo for Salesforce users will need to set up an “Account Resource Score”).
Where a resource is on both inclusion and exclusion lists, the optimization engine treats the resource as excluded and will not allocate jobs to them.
Create a scheduled optimization
Create large scheduling queries to be run at a specified time daily, weekly, or monthly.
Optimize vs Suggest
What is the difference between using optimize and suggest for allocating jobs?
Feedback
Was this page helpful?