Planr and the optimization engine

Using Planr and the optimization engine to automatically schedule multiple jobs

Getting started with Planr

Planr uses Skedulo’s optimization engine to efficiently schedule multiple jobs and resources across a scheduling window, taking into account multiple constraints such as skills matching, resource availability, and location. You can provide Planr with a set of jobs to schedule with constraint options, and the optimization engine will attempt to find the optimal scheduling solution.

Planr uses hard 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. Planr 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 soft constraint may be violated under certain circumstances in favor of a better overall scheduling outcome. For example, a resource prefers not to have their last job scheduled more than 15 minutes from their home address on Friday afternoons.

Multiple resource requirements

Planr 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 Planr can assign the resources required based on the skills required to complete the job.


The engine accounts for the following constraints when deciding on a schedule:

It is important to note that using Planr 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.

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.

Usage limitations

Optimization is an expensive operation, therefore it is necessary to limit the amount 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 limits the number of resources to 200 jobs per request, and we recommend using the optimize feature to process the smallest number of resources as is practical.

Skedulo recommends grouping jobs to remain within the 200 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.

For example, you have 1000 jobs that need to be scheduled between 50 resources over a five day work week. Using a filter to group jobs by the Resource Category, you can schedule 150 jobs that all require a registered nurse to carry out the job for 15 resources that match this category.

Where you have a high number of jobs that require automated scheduling using Planr, Skedulo recommends that you use these filters to group your jobs, then use Planr to schedule jobs accordingly for that group. The efficiency of this process depends highly on the number of jobs you want to schedule using Planr. 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 Planr request for each day for each group, provided that the number of jobs included in the Planr request does not exceed 200.

These filters are available in the scheduling page of the Skedulo web application. For more information about using Planr to schedule jobs using the web application, see Optimized Scheduling.

You can also use the Skedulo GraphQL API and the Planr API to filter query jobs and optimize based on other criteria. This is discussed further in this chapter.

Optimize vs Suggest

What is the difference between using optimize and suggest for allocating jobs?