Optimize schedules

Using optimization to automatically schedule multiple jobs

Skedulo optimization now uses route optimization as the default implementation throughout the Skedulo web app.


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

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:

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.

Get started with optimization

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?