Optimization Recipes

Learn about Optimization Recipes, including objectives, job removal, constraints, travel controls, and scheduling rules.

Introduction

Efficient resource scheduling is critical for any organization, enabling teams to maximize productivity, streamline workflows, and meet customer demands. A one-size-fits-all approach often falls short of addressing unique business needs.

Skedulo addresses this challenge with Optimization Recipes, which allow organizations to tune objectives and tailor scheduling outcomes to their specific priorities. By weighing and prioritizing different objectives, teams can generate optimized schedules that enhance operational efficiency and align with strategic goals.


Recipe tabs

The recipe editor is organized into three tabs:

  • Objectives: Details, Objectives, and the spider diagram.
  • Constraints and Rules: Scheduled jobs, Travel time, Snap and padding, and Job removal.
  • Advanced: Extensions.

Objectives tab

The Objectives tab contains the recipe’s details, the objective weights, and a spider diagram of those weights.

Objectives

Objectives are soft constraints, scheduling preferences, priorities, or guidelines that can be adjusted during scheduling without making a solution infeasible. Unlike hard constraints, which must always be satisfied:

  • Soft constraints allow trade-offs.
  • The importance of each objective is determined by its weight or priority.
  • Higher-weighted objectives are less likely to be violated during optimization.

Available Objectives

Objective Description
Minimize disruption Maintain assigned resources for jobs to minimize disruption. Scheduling dates and times may adjust for efficiency, but reassignments should be rare and only for significant benefits.
Balance workload Attempt to distribute work between resources so that every resource has an even amount of allocated time across the entire scheduling window.
Travel time Attempt to distribute work so that travel time is minimized for scheduled resources.
Minimize resources Attempt to distribute work between as few resources as possible.
Work priority Give the highest priority to scheduling critical work immediately.
Soft skills Attempt to distribute work to resources so that as many soft skill requirements are met as possible. Favor the most qualified candidates.
Resource rating Distribute work in favor of more suitable or higher-performing resources based on rating.

Constraints and Rules tab

Recipes also allow you to configure scheduling constraints to control how jobs are handled:

Scheduled Jobs

Option Description
Only allocate jobs when all resources are available Enforces full resource allocation for jobs that require multiple resources. When this option is on, a job is only scheduled if all of its required resources can be allocated; otherwise, it is left unscheduled. When it is off (the default), optimization allocates as many resources as possible, even if the job’s full resource requirements can’t be met.
Retain allocated resources Resources already allocated to a job stay on that job, and optimization fills only the remaining allocations. Job times can still change to suit both the retained and newly allocated resources. If a retained resource isn’t available, the job isn’t scheduled. This option is off by default.
Respect scheduled jobs Protect already scheduled jobs from being optimized.
Prevent pending dispatch from moving Prevent allocated jobs in Pending Dispatch status from being moved.
Respect job times Allocate jobs in Queued or Pending Allocation status to the time set on the job unless time constraints are set.
Respect job times over time constraint Allocate jobs in Queued or Pending Allocation status to the time set on the job even if job time constraints are set.
All-or-nothing toggle for jobs with dependencies When this option is on, a job is only scheduled if every job it depends on can also be scheduled in the same run. If any dependency can’t be scheduled, none of the linked jobs are. Default behavior is unchanged for existing recipes.

Travel Time Controls

Recipes let you configure how travel time is considered during optimization:

Option Description
Ignore travel times Ignore travel between jobs, activities, and travel to/from home. Routes breakdown will not appear on the results page.
Ignore travel time at start of day Ignores travel from the resource’s home address to the first job of the day.
Ignore travel time at end of day Ignores travel from the resource’s last job of the day to their home address.
Set maximum travel time between locations (minutes) Prevent resources from being allocated to jobs where travel from the previous location exceeds this value.

Snap and Padding

You can also configure timing rules between jobs:

Option Description
Set snap unit for job start times (minutes) Snap job times to the nearest time interval.
Set standard time interval between jobs (minutes) Define a fixed interval of time between jobs on the schedule.

Job Removal Settings

Optimization recipes now allow you to define how jobs should be handled if they are removed from the schedule during an optimization run. This Job Removal setting does not affect how the solver finds a solution, it only controls what happens to jobs that are removed.

You can choose from three options:

Option Description
Keep job times, deallocate resources The job retains its scheduled time, but all resource allocations are removed.
Keep resource allocation, clear job times The job keeps its resource allocations, but scheduled times are cleared.
Clear both job times and resource allocation Both scheduled times and resource allocations are removed.

Example:
A job may be removed if keeping it would increase travel time or disrupt a logical route. This setting gives teams control over the state of jobs after optimization, helping maintain operational clarity and flexibility.


Advanced tab

Extensions

The Extensions section uses an ordered selector that shows which optimization extensions are applied to the recipe and in what order. Extensions run from top to bottom, and each one is applied on top of the result of the previous one.