Optimization of schedules
Skedulo currently supports two optimization endpoints:
If you are a new Skedulo user or wanting to implement a new optimization solution via our API, it is recommended that you use
/optimization going forward as
/planr is being deprecated in favor of
Suggest is currently only available through the Planr API. All new batch optimization and schedule requests should be made using Optimization.
Planr continues to be the default implementation for optimization in the Skedulo web application.
Contact your Skedulo Customer Success representative to enable the new optimization configuration for your organization.
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 Lens 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.
/optimizationREST 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.
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 Optimized Scheduling.
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 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
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 (see Data Table: Inclusion and Data Table: Exclusion)
- Soft / Hard skill tags (See Tags (Skills))
- Time constraints (See Work time constraints)
- Work with pre-allocated time (See Allocating work))
- Work with pre-assigned resource (See Resource console)
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 Intelligent Scheduling Using 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.
ImportantJobs must have a job time set to use optimization with resource requirements. If a job has resource requirements but does not have a job time set, those jobs will be filtered out and ignored by the optimization engine.
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 large scheduling queries to be run at a specified time daily, weekly, or monthly.
What is the difference between using optimize and suggest for allocating jobs?
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.