Objectives and constraints used with Schedule Optimization
Objectives and constraints are optimization features that determine how tasks are assigned to technicians in Schedule Optimization.
Objectives
| Objective | Description | Example |
|---|---|---|
| Maximize balance in number of hours agents work | Reward for even distribution of work hours ( that is, tasks, travel) between technicians. | Shift "A" is assigned to tech A, and Shift "B" is assigned to tech B. Tasks "X", "Y", and "Z" have durations of 1 hour, 2 hours, and 3 hours, respectively. Travel between the shift start location, task
locations, and the shift end location takes 1 hour for each segment. Result: When the objective applies, the assignment prioritizes an even distribution of total work hours (tasks plus travel) across technicians. Assigning tasks "X" and "Y" to Shift "A" (3 hours on tasks + 3 hours on travel) and task "Z" to Shift "B" (3 hours on tasks + 2 hours on travel) achieves a more balanced split than other assignments. |
| Maximize balance in number of tasks agents work | Reward for even distribution of tasks between technicians. | Shift "A" is assigned to tech A, and Shift "B" is assigned to tech B. Tasks "X" and "Y" each require one hour to complete. Result: When the objective applies, the assignment prioritizes giving one task to each shift so both technicians have an equal workload. |
| Maximize consecutive collocated task assignments | Reward for each pair of collocated tasks that are assigned consecutively to the same technician. | Shift "A" is scheduled from 9:00 a.m. to 5:00 p.m. Tasks "X" and "Y" are located at the same site, and task "Z" is at a different location. Result: Applying the objective prioritizes scheduling tasks "X" and "Y" back-to-back on Shift "A" to reduce unnecessary travel and earn the consecutive collocation reward. |
| Maximize efficient assignments |
Incentive to assign tasks to technicians based on efficiency, with rewards for quicker completion and penalties for slower completion compared to planned durations.
Note: The Field Service
Agent Efficiency (com.snc.fsm_agent_efficiency) plugin must be installed to use this feature. |
Shift "A" is assigned to a technician who completes task "X" in 45 minutes and task "Y" in 90 minutes. Shift "B" is assigned to a technician who completes both tasks in 60 minutes. The planned duration
of both tasks is 60 minutes. Result: Applying the objective prioritizes assigning task "X" to Shift "A" and task "Y" to Shift "B" because these assignments reduce overall completion time compared to planned durations. |
| Maximize higher priority task assignments | Reward for every high-priority task that is assigned. The reward is higher for tasks with higher priorities. |
Shift "A" is 5 hours long. Tasks "X," "Y," and "Z" each require 2 hours, and travel time between tasks is 15 minutes. Task "X" has high priority, task "Y" has medium priority, and task "Z" has low priority. Result: Applying the objective prioritizes assigning tasks "X" and "Y" to shift "A" because they have higher priorities. Task "Z" is not assigned because there is not enough time remaining in the shift. |
| Maximize higher value task assignments | Reward for the value of tasks that are assigned. | Shift "A" is 5 hours long. Task "X" requires 4 hours and has an optimization value of 10. Tasks "Y" and "Z" each require 2 hours and have optimization values of 5 and 4. Result: Applying the objective to maximize total optimization value prioritizes assigning task "X" to Shift "A" because it yields the highest total value, even though fewer tasks are completed. |
| Maximize preferred agent assignments | Reward for each task assigned to a preferred or secondary technician, in order of priority. | Shift “A” is assigned to an agent who is a high-preference match for task “X” and a low-preference match for task “Y”. Shift “B” is assigned to an agent who is a high-preference match for task
“Y”. Result: This objective rewards assigning tasks to their preferred agents, with higher rewards for stronger preference values. It incentivizes assigning task “X” to shift “A” and task “Y” to shift “B” to maximize the total reward from preferred agent assignments. Shift "A" is assigned to Alex, who is a preferred technician for task "Y." Shift "B" is assigned to a technician who is a preferred match for task "Z." Note:
Preferred and secondary preferences are soft. Tasks can still be assigned to other technicians if no preferred or secondary match is available. |
| Maximize task assignments | Reward for every task that is assigned. | Shift "A" is 5 hours long. Task "X" requires 2 hours, task "Y" requires 2 hours, and task "Z" requires 4 hours. Result: Applying the objective to maximize the number of scheduled tasks prioritizes assigning tasks "X" and "Y" to Shift "A" because they fit within the available time. Task "Z" is not assigned because there is not enough time remaining in the shift. |
| Maximize tasks in earlier shifts | Reward for each task that is assigned to an earlier shift. The reward is higher for shifts that start earlier in the optimization horizon. | Shift "A" runs from 9:00 a.m. to 2:00 p.m., and Shift "B" runs from 2:00 p.m. to 6:00 p.m. Tasks "X" and "Y" each require two hours. Result: Applying the objective prioritizes assigning both tasks to Shift A because it starts earlier in the optimization horizon and yields a higher reward. |
| Maximize work hours | Reward for every hour of work that is assigned. | Shift "A" is 6 hours long. Task "X" requires 5 hours, and tasks "Y" and "Z" each require 2 hours. Result: When the objective applies, the assignment prioritizes maximizing time spent on tasks (excluding travel). Assigning task "X" to Shift "A" results in 5 hours of task work, which is greater than alternatives such as assigning tasks "Y" and "Z" (4 hours total). |
| Minimize work hours (technician level) | Penalty for each hour of work assigned. The penalty is higher for technicians with higher Work Penalty Per Hour values. | Shift "A" is assigned to a technician with a work penalty of 1 per hour, and shift "B" is assigned to a technician with a work penalty of 3 per hour. Tasks "X" and "Y" each require 2
hours. Result: Assigning the objective prioritizes assigning tasks "X" and "Y" to shift "A" because the technician has a lower work penalty per hour. |
| Minimize higher priority task start times | Penalty for each hour that a task starts later than its earliest window start. The penalty is higher for tasks with higher priorities. | Task "X" has high priority and task "Y" has medium priority. Both have an earliest start time of 9:00 a.m. Result: Applying the objective prioritizes assigning task "X" before task "Y" because "X" has a higher priority. Scheduling tasks later than their earliest start time incurs penalties, with higher penalties for higher-priority tasks. For example, if both tasks start at 10:00 a.m., task "X" incurs a larger penalty than task "Y." |
| Minimize number of shifts with tasks | Penalty for every shift that is assigned one or more tasks. | Shift "A" and Shift "B" are each 8 hours long. Tasks "X" and "Y" each require 2 hours. Result: Applying the objective prioritizes assigning both tasks "X" and "Y" to the same shift (either "A" or "B") instead of splitting them across shifts. This approach reduces the total number of active shifts. |
| Minimize overtime |
Penalty for every hour of overtime. |
Shift "A" is scheduled from 9:00 a.m. to 5:00 p.m., and Shift "B" is scheduled from 1:00 p.m. to 9:00 p.m. Task "X" has a duration of 2 hours and must start between 3:30 p.m. and 7:00
p.m.. Result: Applying the objective prioritizes assigning task "X" to Shift "B" because it avoids any overtime penalty. Assigning task "X" to Shift "A" would result in a half-hour of overtime, as the task would run from 4:30 p.m. to 6:30 p.m. |
| Minimize overtime (agent level) | Penalty for each hour of overtime work. The penalty is higher for technicians with higher overtime penalty per-hour values. |
Shift "A" is assigned to a technician with an overtime penalty of 1 per hour, and shift "B" is assigned to a technician with an overtime penalty of 3 per hour. Task "X" requires 2 hours and can only be completed as overtime. Result: Applying the objective prioritizes assigning task "X" to shift "A" because the technician's overtime penalty is lower. |
| Maximize SLA compliance buffers | Reward for each hour that a task finishes earlier than its window end. The reward is smaller for tasks with longer SLA windows. | Shift "A" is scheduled from 9:00 a.m. to 5:00 p.m.. Tasks "X" and "Y" each have a 1-hour duration and SLA due times of 12:00 p.m. and 5:00 p.m. Result: Applying the objective prioritizes finishing tasks before their SLA due times, with smaller rewards for tasks that have longer SLA windows. Scheduling task "X" to finish at 10:00 a.m. earns a larger reward than scheduling task "Y" at the same time because task "X" has a shorter SLA window. |
| Minimize SLA violation (fixed) | Penalty for each task that finishes later than its SLA due date. | Shift "A" is scheduled from 9:00 a.m. to 5:00 p.m. Tasks "X", "Y", and "Z" each have a 2-hour duration and SLA due times of 8:00 a.m., 1:00 p.m., and 2:00 p.m. Assume zero travel time between
locations. Result: When the objective applies, the assignment prioritizes scheduling tasks before their SLA due times. Tasks "Y" and "Z" can be scheduled to finish at 11:00 a.m. and 1:00 p.m., meeting their SLAs and incurring no penalties. Task "X" cannot meet its SLA because its due time (8:00 a.m.) is before Shift "A" begins (9:00 p.m.), so it incurs a penalty regardless of when it is scheduled. |
| Minimize SLA violation (hourly) | Penalty for each hour that a task finishes later than its SLA due date. | Shift "A" is scheduled from 9:00 a.m. to 5:00 p.m. Tasks "X", "Y", and "Z" each have a 2-hour duration and SLA due times of 8:00 a.m., 1:00 p.m., and 2:00 p.m.. Assume zero travel time between
locations. Result: When the objective applies, the assignment minimizes the total number of hours tasks exceed their SLA due times. Scheduling tasks "X," "Y," and "Z" to finish at 11:00 a.m. (3-hour violation), 1:00 p.m. (0-hour violation), and 3:00 p.m. (1-hour violation) results in a total SLA violation of 4 hours, which is the minimum possible when assigning all tasks. Any other task order would lead to more total hours of SLA violation. |
| Minimize task start times | Penalty for each hour that a task starts later than its earliest window start. | Shift "A" is scheduled from 9:00 a.m. to 5:00 p.m. Tasks "X" and "Y" each have a 1-hour duration and earliest start times of 9:00 a.m. and 11:00 a.m.. Result: Applying the objective prioritizes scheduling task "X" as close to 9:00 a.m. as possible and task "Y" as close to 11:00 a.m. as possible to reduce total penalties. |
| Minimize task time penalties (fixed) | Penalty for each task that finishes later than its penalty time. | Shift "A" is scheduled from 9:00 a.m. to 5:00 p.m. Tasks "X," "Y," and "Z" each have a 1-hour duration and penalty times of 8:00 a.m., 1:00 p.m., and 2:00 p.m., respectively. Travel between the shift
start location, task locations, and shift end location takes 1 hour. Result: Applying the objective penalizes tasks that finish after their penalty times. Tasks "Y" and "Z" can be scheduled to finish at 11:00 a.m. and 1:00 p.m., meeting their penalty times and avoiding penalties. Task "X" incurs a penalty regardless of when it is scheduled because its penalty time occurs before Shift "A" begins. |
| Minimize task time penalties (hourly) | Penalty for each hour that a task finishes later than its penalty time. | Shift "A" is scheduled from 9:00 a.m. to 5:00 p.m.. Tasks "X," "Y," and "Z" each have a 1-hour duration and penalty times of 8:00 a.m., 1:00 p.m., and 2:00 p.m., respectively. Travel between the shift
start location, task locations, and shift end location takes 1 hour. Result: Applying the objective prioritizes scheduling tasks "X," "Y," and "Z" to finish at 11:00 a.m. (3-hour violation), 1:00 p.m. (0-hour violation), and 3:00 p.m. (1-hour violation), respectively. This sequence results in a total penalty of 4 hours, which is the minimum possible when assigning all tasks. Any other task order would lead to more total hours of time penalties. |
| Minimize travel time | Penalty for every hour of travel. | Shift "A" is 5 hours long and starts and ends at the same location. Task "X" is 10 minutes away, and task "Y" is 30 minutes away. Both tasks are 3 hours long, so there is only enough time to schedule
one of them. Result: Applying the objective prioritizes assigning task "X" to Shift "A" because the round trip takes 20 minutes compared to 60 minutes for task "Y." |
| Minimize travel time (agent level) | Penalty for each hour of travel. The penalty is higher for technicians with higher Travel Penalty Per Hour values. | Shift "A" is assigned to a technician with a travel penalty of 1 per hour, and shift "B" is assigned to a technician with a travel penalty of 3 per hour. Task "X" is 1 hour away from the shift start
location, and task "Y" is 30 minutes away. Both shifts are 5 hours long, and each task is 3 hours long, so there is only enough time for each shift to complete one task. Result: Applying the objective prioritizes assigning shift "A" to task "X" and shift "B" to task "Y" because this pairing minimizes the total weighted travel penalty across all assignments. |
| Minimize over-skilled agent assignments | Penalty for skill level deviation between technicians with a higher skill level than their assigned tasks. | Shift "A" is assigned to a technician with skill level 5. Task "X" requires skill level 5, and task "Y" requires skill level 2. Result: Applying the objective prioritizes assigning task "X" to Shift "A" because the skill levels match. Assigning task "Y" incurs a penalty because the technician's skill level exceeds the requirement. If Shift "A" only has space for one task, task "X" is more likely to be scheduled than task "Y." |
| Minimize under-skilled agent assignments | Penalty for skill level deviation between technicians with a lower skill level than their assigned tasks. | Shift "A" is assigned to a technician with skill level 2. Task "X" requires an optional skill level 2, and task "Y" requires an optional skill level 5. Result: Applying the objective prioritizes assigning task "X" to Shift "A" because the skill levels match. Assigning task "Y" incurs a penalty because the technician's skill level is lower than required. In general, task "X" is more likely to be scheduled on Shift "A" than task "Y." |
| Objective | Description | Example |
|---|---|---|
| Maximize existing assignments | Reward for every technician and task assignment that remains in the schedule. | Shift "A" is currently assigned task "X" from 9:00 a.m. to 10:00 a.m., and Shift "B" currently has no assignments but is 5 minutes closer to task "X". Result: Applying the objective prioritizes keeping Shift "A" assigned to task "X" rather than reassigning it to Shift "B" to achieve slightly less travel time. |
| Minimize delayed tasks (fixed) | Penalty for every task that starts after it was originally scheduled. | Task "X" was originally scheduled to start at 10:00 a.m.. Task "X" has a delay penalty cost of 10. Result: When the objective applies, the assignment penalizes rescheduling task "X" to any time later than 10:00 a.m.. The penalty is the same whether the task moves to 10:01 a.m. or 1:00 p.m. and is based on the task's delay penalty cost field. No penalty applies if the task is scheduled earlier than 10:00 a.m.. |
| Minimize delayed tasks (hourly) | Penalty for every hour that tasks start later than originally scheduled. | Task "X" was originally scheduled to start at 10:00 a.m.. Task "X" has a delay penalty cost of 10. Result: When the objective applies, the assignment penalizes task "X" based on how many hours it is delayed. For example, rescheduling task "X" to 10:01 a.m. incurs a small penalty, while moving it to 1:00 p.m. incurs a larger penalty. The penalty is calculated using the task's delay penalty cost field. No penalty applies if the task is scheduled earlier than 10:00 a.m. |
| Minimize unassigned tasks | Penalty for every task that is removed from the schedule. | Shift "A" and Shift "B" are each 5 hours long. Tasks "X" and "Y" were included in the original schedule, and task "Z" wasn't scheduled. All tasks require 3 hours. Result: Applying the objective prioritizes keeping tasks "X" and "Y" assigned, even if they move to different shifts, rather than unassigning them to make room for task "Z." |
Constraints
| Constraint | Description | Example |
|---|---|---|
| Block excluded agents from assignment | Tasks with excluded technicians cannot be assigned to those technicians. | Shift "A" is assigned to a technician who is excluded from task "Y" but not from task "X." Result: Applying the constraint allows task "X" to be assigned to Shift "A" while preventing task "Y" from being assigned because the technician is listed as excluded for that task. When this constraint is inactive, both tasks can be assigned to Shift "A." |
| Enable access hours | Task time windows are restricted based on their access hours. Note: The Field Service (com.snc.fsm_access_hours) Access Hours plugin must be installed to use this feature. |
Shift "A" is scheduled from 9:00 a.m. to 5:00 p.m.. Task "X" has a 1-hour duration and access hours from 9:00 a.m. to 11:00 a.m. and from 3:00 p.m. to 5:00 p.m. Result: Applying the constraint allows task "X" to be scheduled only within its access windows. When the constraint is active, task "X" can only be scheduled between 9:00–11:00 a.m. or 3:00–5:00 p.m. When the constraint is inactive, task "X" can be scheduled at any time between 9:00 a.m. and 5:00 p.m. |
| Enable agent radius | Technicians can only be assigned tasks that are within the travel radius of their home location. | Shift "A" starts at a defined location. Tasks "X", "Y", and "Z" are 10 miles, 20 miles, and 60 miles from that point. The constraint is active and the technician for Shift "A" has a 50-mile travel
radius limit. Result: Shift "A" includes tasks "X" and "Y" and excludes task "Z". When the constraint does not apply, Shift "A" includes all three tasks. |
| Enable excluded technician restrictions | Tasks with excluded technicians cannot be assigned to those technicians. | Task "X" includes technicians marked as excluded. Result: Applying this constraint prevents assigning Task "X" to any excluded technician. |
| Enable flexible breaks | Task assignments consider flexible breaks and can move them within their allowable windows for efficient scheduling. Note: The Shift Scheduling for Field Service (com.snc.sn_fsm_shift_schdl) plugin must be installed and Workforce Optimization for Field Service must be activated to use the flexible breaks feature. For more information, see Activate Workforce Optimization for Field Service. |
Shift "A" is scheduled from 9:00 a.m. to 5:00 p.m. and includes a required 1-hour break that can be taken anytime between 11:00 a.m. and 2:00 p.m. When the constraint is active, the break must occur
within this allowable window. Result: Shift "A" honors the flexible break within the specified time range. When the constraint does not apply, the break is ignored and may not be scheduled. |
| Enable mandatory parts | Tasks can only be assigned technicians who have a sufficient inventory of parts. | A technician has 3 parts. Task "X" requires 3 optional parts, task "Y" requires 1 mandatory part, and task "Z" requires 3 mandatory parts. Result: Task "X" can be assigned to the technician because it requires no mandatory parts. Only one of tasks "Y" or "Z" can be assigned because the technician has enough parts for only one. Assigning both tasks would require 4 mandatory parts, which exceeds the available inventory. When the constraint does not apply, all tasks can be assigned to the technician. |
| Enable mandatory skills | Tasks can only be assigned to technicians with necessary skills. | Shift "A" is assigned to a technician with skill level 2. Task "X" requires skill level 2, and task "Y" requires skill level 4. When the constraint is active, assignments must meet or exceed the
required skill level. Higher skill levels represent greater expertise (level 4 is more advanced than level 2). Result: Shift "A" includes task "X" because the technician meets the required skill level. Task "Y" cannot be assigned because the technician's skill level is insufficient. When the constraint does not apply, both tasks can be assigned to Shift "A". |
| Enable overtime | Technicians can work overtime. | Shift "A" is scheduled from 9:00 a.m. to 5:00 p.m. Task "X" has a duration of 2 hours and must be completed between 4:00 p.m. and 10:00 p.m. The task location is 15 minutes away from the shift end
location. Result: When the constraint applies, the technician working Shift "A" can work up to 3 hours of overtime. Task "X" can be scheduled from 4:00 p.m. to 6:00 p.m., extending one hour beyond regular shift hours. An additional 15 minutes is used for travel, so the shift effectively ends at 6:15 p.m. When the constraint does not apply, task "X" cannot be assigned to Shift "A". |
| Enable travel outside work hours |
Technicians can travel outside work hours. |
Shift "A" is scheduled from 9:00 a.m. to 5:00 p.m. Task "X" is 1 hour away from the shift start location and is scheduled to begin at 9:00 a.m.. Result: When the constraint applies, the technician can travel before the start of Shift "A" to reach task "X" on time. When the constraint does not apply, travel must occur during the shift or overtime hours. |
| Enable task dependencies | Tasks can only be assigned when their dependencies are met. | Shift "A" is scheduled from 9:00 a.m. to 5:00 p.m. Task "Y" depends on the completion of task "X," and each task has a 1-hour duration. Enable Task Dependencies constraint applies, task "Y" can only be scheduled after task "X" is completed. When the constraint does not apply, task dependencies may not be respected. |
| Enable travel time limits between locations | Technicians must travel between locations within their travel time limit. | Shift "A" is assigned to a technician with a maximum travel time limit of 45 minutes between locations. Task "X" is 30 minutes away from the shift location, and task "Y" is 60 minutes away from both
Task "X" and the shift location. Result: When the constraint applies, each segment of a route must meet the travel time limit. The route from Shift "A" start to Task "X" and back to the shift end is feasible because all travel segments are within the 45-minute limit. However, the route from Shift "A" start to Task "X" to Task "Y" and then to the shift end is infeasible because the segments between Task "X" and Task "Y" and between Task "Y" and the shift end each take 60 minutes, exceeding the limit. When the constraint does not apply, both routes are feasible. |
| Enable agent-dependent task durations | The estimated duration for completing a task is determined by considering the primary skills required for the task and technician efficiency. Note: The Field Service
Agent Efficiency (com.snc.fsm_agent_efficiency) plugin must be installed to use this feature. |
Shift "A" and Shift "B" are assigned to different technicians who complete task "X" in 45 and 90 minutes. Shift "C" is assigned to a technician who has no technician-dependent task duration. The
planned duration of task "X" is 60 minutes. Result: When the constraint applies, task durations adjust based on the assigned technician. Task "X" takes 45 minutes when assigned to Shift "A" and 90 minutes when assigned to Shift "B." When assigned to Shift "C," task "X" takes 60 minutes (the planned duration) because there is no technician-dependent adjustment. When the constraint does not apply, all three shifts require 60 minutes to complete the task. Note:
This constraint works with the Maximize Efficient Assignments objective to reward faster completions. |