Workforce scheduling is a process of establishing schedules of workers to meet current and future demands in a workplace, such as a restaurant, a hospital, a retail store, a call center, and/or the like. Workforce scheduling also involves defining schedules so that a transition from one shift to another shift is seamless and work remains uninterrupted. In an industry that relies on hourly workers, workforce scheduling forms a foundation of smooth business functioning.
Some implementations described herein relate to a method. The method may include receiving a request for a schedule and scheduling constraints to utilize when generating the schedule, and processing, based on the request, a first portion of the scheduling constraints and first optimization variables, with a first optimization solver model, to generate capacity data for the schedule. The method may include processing the capacity data, a second portion of the scheduling constraints, and second optimization variables, with a second optimization solver model, to generate shift assignment data for the schedule, and processing the shift assignment data, a third portion of the scheduling constraints, and third optimization variables, with a third optimization solver model, to generate skill and task assignment data for the schedule. The method may include generating the schedule based on the capacity data, the shift assignment data, and the skill and task assignment data, and performing one or more actions based on the schedule.
Some implementations described herein relate to a device. The device may include one or more memories and one or more processors coupled to the one or more memories. The one or more processors may be configured to receive a request for a schedule and scheduling constraints to utilize when generating the schedule, and process, based on the request, a first portion of the scheduling constraints and first optimization variables, with a first constraint programming model, to generate capacity data for the schedule. The one or more processors may be configured to process the capacity data, a second portion of the scheduling constraints, and second optimization variables, with a second constraint programming model, to generate shift assignment data for the schedule, and process the shift assignment data, a third portion of the scheduling constraints, and third optimization variables, with a third constraint programming model, to generate skill and task assignment data for the schedule. The one or more processors may be configured to generate the schedule based on the capacity data, the shift assignment data, and the skill and task assignment data, and perform one or more actions based on the schedule.
Some implementations described herein relate to a non-transitory computer-readable medium that stores a set of instructions for a device. The set of instructions, when executed by one or more processors of the device, may cause the device to receive a request for a schedule and scheduling constraints to utilize when generating the schedule. The scheduling constraints may include demand constraints, operation hours constraints, shift timing constraints, days off pattern constraints, schedule rotation constraints, employee roster constraints, and/or employee restriction constraints. The set of instructions, when executed by one or more processors of the device, may cause the device to process, based on the request, a first portion of the scheduling constraints and first optimization variables, with a first optimization solver model, to generate capacity data for the schedule, and process the capacity data, a second portion of the scheduling constraints, and second optimization variables, with a second optimization solver model, to generate shift assignment data for the schedule. The set of instructions, when executed by one or more processors of the device, may cause the device to process the shift assignment data, a third portion of the scheduling constraints, and third optimization variables, with a third optimization solver model, to generate skill and task assignment data for the schedule, and generate the schedule based on the capacity data, the shift assignment data, and the skill and task assignment data. The set of instructions, when executed by one or more processors of the device, may cause the device to perform one or more actions based on the schedule.
The following detailed description of example implementations refers to the accompanying drawings. The same reference numbers in different drawings may identify the same or similar elements.
Workforce scheduling is the backbone of many business operations. For example, a business may employ a computer-implemented scheduler to perform workforce scheduling within a portion of or across an entire organization. A scheduler must plan for enough capacity to ensure that no demand (e.g., every thirty minutes for four through twelve weeks) goes unmet and that there is no waste of manpower. A scheduler must also ensure that the correct skills of employees are utilized to meet dynamic demand, that shifts are defined to mirror demand distribution, that a buffer is maintained to handle vacation and/or breaks, that a schedule complies with labor laws, that there is uniform and proportionate distribution of over and under capacity, and/or the like. Current workforce scheduling systems may fail to handle over and under scheduling, unfair scheduling, employee vacation and leave planning, shift swapping, conformance with labor laws, task allocation across intervals for multi-skilled employees, and/or the like. Furthermore, current workforce scheduling systems require an inordinate quantity of resources and may require a couple of days or weeks to generate an acceptable schedule for large organizations.
Therefore, current workforce scheduling systems consume computing resources (e.g., processing resources, memory resources, communication resources, and/or the like), networking resources, and/or the like associated with requiring an inordinate quantity of time to generate an acceptable schedule for large organizations, generating unacceptable schedules that fail to handle over and under scheduling, unfair scheduling, employee vacation and leave planning, shift swapping, conformance with labor laws, task allocation across intervals for multi-skilled employees, and/or the like.
Some implementations described herein relate to a scheduling system that utilizes optimization solver models for sequential automated workforce scheduling. Optimization solver models may improve decision-making around planning, allocating, and scheduling scarce computing resources by embedding powerful models that can solve programming models, constraint programming, and constraint-based scheduling models. For example, the scheduling system may receive a request for a schedule and scheduling constraints to utilize when generating the schedule, and may process, based on the request, a first portion of the scheduling constraints and first optimization variables, with a first optimization solver model, to generate capacity data for the schedule. The scheduling system may process the capacity data, a second portion of the scheduling constraints, and second optimization variables, with a second optimization solver model, to generate shift assignment data for the schedule, and may process the shift assignment data, a third portion of the scheduling constraints, and third optimization variables, with a third optimization solver model, to generate skill and task assignment data for the schedule. The scheduling system may generate the schedule based on the capacity data, the shift assignment data, and the skill and task assignment data, and may perform one or more actions based on the schedule.
In this way, the scheduling system utilizes optimization solver models for sequential automated workforce scheduling. The scheduling system may include a optimization solver model-based automated workforce scheduling system that creates and manages schedules more quickly (e.g., within thirty minutes for large organizations), experiences fewer scheduling errors, reduces deviations or infractions to safety and compliance regulations, provides employee fairness and flexibility, better utilizes cross-skilled resources, optimizes team size to meet demand, provides interval level schedule generation, provides greater employee engagement, and/or the like. The scheduling system may process scheduling constraints (e.g., demand, capacity, shift and/or break constraints, rotation constraints, labor laws, and vacation and/or holiday schedules), with a three-stage optimization engine, to generate an optimal and compliant schedule. This, in turn, conserves computing resources, networking resources, and/or the like that would otherwise have been consumed in requiring an inordinate quantity of time to generate an acceptable schedule for large organizations, generating unacceptable schedules that fail to handle over and under scheduling, unfair scheduling, employee vacation and leave planning, shift swapping, conformance with labor laws, task allocation across intervals for multi-skilled employees, and/or the like.
As shown in
As further shown in
The scheduling system may receive the scheduling constraints from the user device or from another device (e.g., a server device) associated with an entity requesting the schedule. The scheduling constraints may include requirements to be satisfied when generating the schedule. For example, the scheduling constraints may include demand constraints (e.g., a group of employees, tasks associated with the employees, skills associated with the employees, and/or the like), operation hours constraints (e.g., different skills of the employees may follow different operation hours), shift timing constraints (e.g., a fixed start time, a flexible start time with guides for start and end times, and/or the like), days off pattern constraints (e.g., fixed days off, flexible days off with additional constraints on possible days off patterns, and/or the like), schedule rotation constraints (e.g., days off rotation, frequency of days off rotation, shift time rotation, and frequency of shift time rotation), employee roster constraints (e.g., work in any shift, work in a specific time range, requested specific days off, and/or the like), employee restriction constraints (e.g., multiple skills, and employees associated with different groups and/or teams), and/or the like. In some implementations, the scheduling system may store the scheduling constraints in a data structure (e.g., a database, a table, a list, and/or the like) associated with the scheduling system.
As shown in
In some implementations, the first optimization variables may include a variable (xi,j,k) defining an agent (j) working on a skill (i) during a time period (k), a variable (Ai,j,k) defining the agent (j) eligible to work on the skill (i) in the time period (k), and/or the like. The first constraint programming model may iterate (e.g., over a particular time period) through the first portion of the scheduling constraints and the first optimization variables until a feasible solution is determined for the capacity data. In some implementations, the capacity data may be calculated according to the following equation:
Capacity data=MinimizeΣi,j,kxi,j,k.
For example, the capacity data may include data identifying capacity requirements as per a demand for the schedule, whether a schedule shift definition is retraining capacity planning for the schedule, which skills are under the demand or over the demand for the schedule, and/or the like.
As further shown in
As shown in
For example, the second portion of the scheduling constraints may include the following scheduling constraints:
In some implementations, the second optimization variables may include a variable (Aa) associated with an agent (a) assigned to a shift, a variable (Pp,d) associated with a day (d) working in a pattern identifier (p), a variable (ASa,sh) associated with the agent (a) belonging to a shift (sh), a variable (ADa,d) associated with a day type for the agent (a) on a day (d), a variable (APa,p) associated with the pattern identifier (p) assigned to the agent (a), a variable (ASSa,dt,sh,sks) associated with the agent (a) assigned a skillset (sks) in the shift (sh) on a date (dt), a variable (ASKa,dt,sh,sks,sk) associated with the agent (a) assigned a skill (sk) in the skillset (sks) in the shift (sh) on the date (dt), a variable (TSt,sh) associated with a quantity of agents in a team (t) assigned to the shift (sh), a variable (SLdt,sh,sks,sk) associated with a shortfall on the date (dt) in the shift (sh) for the skill (sk) in the skillset (sks), a variable (SLdt,sh,sks,sk) associated with a square of the shortfall on the date (dt) in the shift (sh) for the skill (sk) in the skillset (sks), a variable (APHa,h,d) associated with a working day for the agent (a) on the day (d) in a historical schedule (h), a variable (ASHa,h,sh) associated the agent (a) assigned to the shift (sh) in the historical schedule (h), and/or the like. The second constraint programming model may iterate (e.g., over a particular time period) through the capacity data, the second portion of the scheduling constraints, and the second optimization variables until a feasible solution is determined for the shift assignment data. In some implementations, the shift assignment data may be calculated according to the following equations:
As further shown in
As shown in
For example, the third portion of the scheduling constraints may include the following scheduling constraints:
In some implementations, the third optimization variables may include a variable (ASa,I,sk) associated with an agent (a) working with a skill (sk) in an interval (i), a variable (SLi,sk) associated with a shortfall in the interval (i) for the skill (sk), a variable (SLSdt,sk) associated with a square of the shortfall on a date (dt) for the skill (sk), a variable (ASa,i,sk=0) associated with the agent (a) being on leave, a holiday, a day off, or an exclusion in the interval (i), a variable (AAa,i,ac=0) associated the activity (ac) not being allowed in the interval (i), and/or the like. The third constraint programming model may iterate (e.g., over a particular time period) through the shift assignment data, the third portion of the scheduling constraints, and the third optimization variables until a feasible solution is determined for the skill and task assignment data. In some implementations, the skill and task assignment data may be calculated according to the following equation:
Skill and task assignment data=Σi,sk(SLi,sk).
For example, the skill and task assignment data may include data identifying whether breaks are causing a shortfall during one or more time intervals, and/or the like.
As further shown in
As shown in
In some implementations, the scheduling system may modify one or more of the scheduling constraints (e.g., for different scenarios) to generate one or more schedules based on the one or more scheduling constraints. The one or more schedules may include information identifying different shortfalls, different agents assigned to the different schedules, and/or the like. Such scenario building may enable the scheduling system to tune the scheduling constraints based on needs before executing actual automated scheduling to generate the final schedule. For example, the scheduling system may modify the quantity of shifts, shift timings, skills allowed in each shift, shift types (e.g., flexible or fixed), days off, types of days off (e.g., flexible or fixed), the quantity of agents, agent skill distribution, activity timing, activity type (e.g., fixed, flexible, maximum agents allowed, time limitations, and/or the like), duration, and/or the like.
In some implementations, the scheduling system may utilize autoscaling when utilizing the capacity planner solver, the shift assignment solver, and the skill and task assignment solver. For example, the scheduling system may temporarily allocate one or more first resources for generating the capacity data for the schedule (e.g., by the capacity planner solver), may temporarily allocate one or more second resources for generating the shift assignment data for the schedule (e.g., by the shift assignment solver), may temporarily allocate one or more third resources for generating the skill and task assignment data for the schedule (e.g., by the skill and task assignment solver), and/or the like). In some implementations, the scheduling system may temporarily add resources when resource (e.g., processor) usage is greater than a threshold usage (e.g., 70%, 80%, 90%, and/or the like).
As further shown in
In some implementations, performing the one or more actions includes the scheduling system causing the schedule to be approved and deployed. For example, the scheduling system may provide the schedule the user device with a request to approve the schedule. A user of the user device may review and approve the schedule via the user device. The approval of the schedule may be provided to the scheduling system, and the scheduling system may cause the schedule to be deployed (e.g., via a scheduling system). In this way, the scheduling system may conserve computing resources, networking resources, and/or the like that would otherwise have been consumed in requiring an inordinate quantity of time to generate an acceptable schedule for large organizations, generating unacceptable schedules that fail to handle over and under scheduling, and/or the like.
In some implementations, performing the one or more actions includes the scheduling system receiving feedback on the schedule and updating the schedule based on the feedback. For example, the scheduling system may provide the schedule to the user device and a user may utilize the user device to review and provide the feedback on the schedule. The user device may provide the feedback to the scheduling system, and the scheduling system may update the schedule based on the feedback. In this way, the scheduling system may conserve computing resources, networking resources, and/or the like that would otherwise have been consumed in generating unacceptable schedules that fail to handle over and under scheduling, unfair scheduling, employee vacation and leave planning, shift swapping, conformance with labor laws, task allocation across intervals for multi-skilled employees, and/or the like.
In some implementations, performing the one or more actions includes the scheduling system updating the scheduling constraints and generating an updated schedule based on the updated scheduling constraints. For example, the scheduling system may modify one or more of the scheduling constraints (e.g., for different scenarios) and may generate one or more schedules based on the one or more modified scheduling constraints. In some implementations, the scheduling system may modify the quantity of shifts, shift timings, skills allowed in each shift, shift types, days off, types of days off, the quantity of agents, agent skill distribution, activity timing, activity type, duration, and/or the like. In this way, the scheduling system may conserve computing resources, networking resources, and/or the like that would otherwise have been consumed in requiring an inordinate quantity of time to generate an acceptable schedule for large organizations, generating unacceptable schedules that fail to handle over and under scheduling, unfair scheduling, and/or the like.
In some implementations, performing the one or more actions includes the scheduling system retraining the first constraint programming model, the second constraint programming model, and/or the third constraint programming model based on the schedule. For example, the scheduling system may utilize the schedule as additional training data for retraining the first constraint programming model, the second constraint programming model, and/or the third constraint programming model, thereby increasing the quantity of training data available for training the first constraint programming model, the second constraint programming model, and/or the third constraint programming model. Accordingly, the scheduling system may conserve computing resources associated with identifying, obtaining, and/or generating historical data for training the first constraint programming model, the second constraint programming model, and/or the third constraint programming model relative to other systems for identifying, obtaining, and/or generating historical data for training optimization solver models.
In this way, the scheduling system utilizes optimization solver models for sequential automated workforce scheduling. The scheduling system may include a optimization solver model-based automated workforce scheduling system that creates and manages schedules more quickly (e.g., within thirty minutes for large organizations), experiences fewer scheduling errors, reduces deviations or infractions to safety and compliance regulations, provides employee fairness and flexibility, better utilizes cross-skilled resources, optimizes team size to meet demand, provides interval level schedule generation, provides greater employee engagement, and/or the like. The scheduling system may process scheduling constraints (e.g., demand, capacity, shift and/or break constraints, rotation constraints, labor laws, and vacation and/or holiday schedules), with a three-stage optimization engine, to generate an optimal and compliant schedule. This, in turn, conserves computing resources, networking resources, and/or the like that would otherwise have been consumed in requiring an inordinate quantity of time to generate an acceptable schedule for large organizations, generating unacceptable schedules that fail to handle over and under scheduling, unfair scheduling, employee vacation and leave planning, shift swapping, conformance with labor laws, task allocation across intervals for multi-skilled employees, and/or the like.
As indicated above,
As indicated above,
The cloud computing system 302 includes computing hardware 303, a resource management component 304, a host operating system (OS) 305, and/or one or more virtual computing systems 306. The resource management component 304 may perform virtualization (e.g., abstraction) of the computing hardware 303 to create the one or more virtual computing systems 306. Using virtualization, the resource management component 304 enables a single computing device (e.g., a computer, a server, and/or the like) to operate like multiple computing devices, such as by creating multiple isolated virtual computing systems 306 from the computing hardware 303 of the single computing device. In this way, the computing hardware 303 can operate more efficiently, with lower power consumption, higher reliability, higher availability, higher utilization, greater flexibility, and lower cost than using separate computing devices.
The computing hardware 303 includes hardware and corresponding resources from one or more computing devices. For example, the computing hardware 303 may include hardware from a single computing device (e.g., a single server) or from multiple computing devices (e.g., multiple servers), such as multiple computing devices in one or more data centers. As shown, the computing hardware 303 may include one or more processors 307, one or more memories 308, one or more storage components 309, and/or one or more networking components 310. Examples of a processor, a memory, a storage component, and a networking component (e.g., a communication component) are described elsewhere herein.
The resource management component 304 includes a virtualization application (e.g., executing on hardware, such as the computing hardware 303) capable of virtualizing the computing hardware 303 to start, stop, and/or manage the one or more virtual computing systems 306. For example, the resource management component 304 may include a hypervisor (e.g., a bare-metal or Type 1 hypervisor, a hosted or Type 2 hypervisor, and/or the like) or a virtual machine monitor, such as when the virtual computing systems 306 are virtual machines 311. Additionally, or alternatively, the resource management component 304 may include a container manager, such as when the virtual computing systems 306 are containers 312. In some implementations, the resource management component 304 executes within and/or in coordination with a host operating system 305.
A virtual computing system 306 includes a virtual environment that enables cloud-based execution of operations and/or processes described herein using computing hardware 303. As shown, a virtual computing system 306 may include a virtual machine 311, a container 312, a hybrid environment 313 that includes a virtual machine and a container, and/or the like. A virtual computing system 306 may execute one or more applications using a file system that includes binary files, software libraries, and/or other resources required to execute applications on a guest operating system (e.g., within the virtual computing system 306) or the host operating system 305.
Although the scheduling system 301 may include one or more elements 303-313 of the cloud computing system 302, may execute within the cloud computing system 302, and/or may be hosted within the cloud computing system 302, in some implementations, the scheduling system 301 may not be cloud-based (e.g., may be implemented outside of a cloud computing system) or may be partially cloud-based. For example, the scheduling system 301 may include one or more devices that are not part of the cloud computing system 302, such as device 400 of
The network 320 includes one or more wired and/or wireless networks. For example, the network 320 may include a cellular network, a public land mobile network (PLMN), a local area network (LAN), a wide area network (WAN), a private network, the Internet, and/or the like, and/or a combination of these or other types of networks. The network 320 enables communication among the devices of the environment 300.
The user device 330 includes one or more devices capable of receiving, generating, storing, processing, and/or providing information, as described elsewhere herein. The user device 330 may include a communication device and/or a computing device. For example, the user device 330 may include a wireless communication device, a mobile phone, a user equipment, a laptop computer, a tablet computer, a desktop computer, a gaming console, a set-top box, a wearable communication device (e.g., a smart wristwatch, a pair of smart eyeglasses, a head mounted display, or a virtual reality headset), or a similar type of device.
The number and arrangement of devices and networks shown in
The bus 410 includes a component that enables wired and/or wireless communication among the components of device 400. The processor 420 includes a central processing unit, a graphics processing unit, a microprocessor, a controller, a microcontroller, a digital signal processor, a field-programmable gate array, an application-specific integrated circuit, and/or another type of processing component. The processor 420 is implemented in hardware, firmware, or a combination of hardware and software. In some implementations, the processor 420 includes one or more processors capable of being programmed to perform a function. The memory 430 includes a random-access memory, a read only memory, and/or another type of memory (e.g., a flash memory, a magnetic memory, and/or an optical memory).
The input component 440 enables the device 400 to receive input, such as user input and/or sensed inputs. For example, the input component 440 may include a touch screen, a keyboard, a keypad, a mouse, a button, a microphone, a switch, a sensor, a global positioning system component, an accelerometer, a gyroscope, an actuator, and/or the like. The output component 450 enables the device 400 to provide output, such as via a display, a speaker, and/or one or more light-emitting diodes. The communication component 460 enables the device 400 to communicate with other devices, such as via a wired connection and/or a wireless connection. For example, the communication component 460 may include a receiver, a transmitter, a transceiver, a modem, a network interface card, an antenna, and/or the like.
The device 400 may perform one or more processes described herein. For example, a non-transitory computer-readable medium (e.g., the memory 430) may store a set of instructions (e.g., one or more instructions, code, software code, program code, and/or the like) for execution by the processor 420. The processor 420 may execute the set of instructions to perform one or more processes described herein. In some implementations, execution of the set of instructions, by one or more processors 420, causes the one or more processors 420 and/or the device 400 to perform one or more processes described herein. In some implementations, hardwired circuitry may be used instead of or in combination with the instructions to perform one or more processes described herein. Thus, implementations described herein are not limited to any specific combination of hardware circuitry and software.
The number and arrangement of components shown in
As shown in
As further shown in
As further shown in
In some implementations, the shift assignment data includes data identifying one or more of issues due to agent restrictions for the schedule, whether vacation days are defined properly for the schedule, or whether vacation date rotations constrain planning for one or more shifts of the schedule.
As further shown in
As further shown in
As further shown in
In some implementations, performing the one or more actions includes providing the schedule for display to a user device, receiving feedback on the schedule from the user device, updating the schedule based on the feedback and to generate an updated schedule, and providing the updated schedule for display. In some implementations, performing the one or more actions includes updating the scheduling constraints to generate updated scheduling constraints, generating an updated schedule based on the updated scheduling constraints, and providing the updated schedule for display.
In some implementations, process 500 includes temporarily allocating one or more first resources for generating the capacity data for the schedule, temporarily allocating one or more second resources for generating the shift assignment data for the schedule, and temporarily allocating one or more third resources for generating the skill and task assignment data for the schedule.
Although
The foregoing disclosure provides illustration and description but is not intended to be exhaustive or to limit the implementations to the precise form disclosed. Modifications may be made in light of the above disclosure or may be acquired from practice of the implementations.
As used herein, the term “component” is intended to be broadly construed as hardware, firmware, or a combination of hardware and software. It will be apparent that systems and/or methods described herein may be implemented in different forms of hardware, firmware, and/or a combination of hardware and software. The actual specialized control hardware or software code used to implement these systems and/or methods is not limiting of the implementations. Thus, the operation and behavior of the systems and/or methods are described herein without reference to specific software code - it being understood that software and hardware can be used to implement the systems and/or methods based on the description herein.
As used herein, satisfying a threshold may, depending on the context, refer to a value being greater than the threshold, greater than or equal to the threshold, less than the threshold, less than or equal to the threshold, equal to the threshold, and/or the like, depending on the context.
Although particular combinations of features are recited in the claims and/or disclosed in the specification, these combinations are not intended to limit the disclosure of various implementations. In fact, many of these features may be combined in ways not specifically recited in the claims and/or disclosed in the specification. Although each dependent claim listed below may directly depend on only one claim, the disclosure of various implementations includes each dependent claim in combination with every other claim in the claim set.
No element, act, or instruction used herein should be construed as critical or essential unless explicitly described as such. Also, as used herein, the articles “a” and “an” are intended to include one or more items and may be used interchangeably with “one or more.” Further, as used herein, the article “the” is intended to include one or more items referenced in connection with the article “the” and may be used interchangeably with “the one or more.” Furthermore, as used herein, the term “set” is intended to include one or more items (e.g., related items, unrelated items, a combination of related and unrelated items, and/or the like), and may be used interchangeably with “one or more.” Where only one item is intended, the phrase “only one” or similar language is used. Also, as used herein, the terms “has,” “have,” “having,” or the like are intended to be open-ended terms. Further, the phrase “based on” is intended to mean “based, at least in part, on” unless explicitly stated otherwise. Also, as used herein, the term “or” is intended to be inclusive when used in a series and may be used interchangeably with “and/or,” unless explicitly stated otherwise (e.g., if used in combination with “either” or “only one of”).
In the preceding specification, various example embodiments have been described with reference to the accompanying drawings. It will, however, be evident that various modifications and changes may be made thereto, and additional embodiments may be implemented, without departing from the broader scope of the invention as set forth in the claims that follow. The specification and drawings are accordingly to be regarded in an illustrative rather than restrictive sense.