Abstract:
Systems and methods are disclosed for scheduling overtime and time-off for a workforce. In one embodiment, a method of workforce scheduling to handle an expected workload comprises, in an instruction execution system, receiving a first workforce schedule describing existing assignments of a plurality of workers to a plurality of shifts, each of the shifts being associated with a time range and a day; in response to a variance in the expected workload, selecting a modification to the first workforce schedule required to handle the variance in the expected workload during the day; and producing a second workforce schedule that modifies the length of at least one of the plurality of shifts to accommodate the modification to the first workforce schedule.

Description:
RELATED APPLICATIONS 
     This application is a continuation of and claims priority to U.S. application Ser. No. 11/396,063, entitled “Systems and Methods for Automatic Scheduling of a Workforce”, filed on Mar. 31, 2006, now U.S. Pat. No. 7,672,746 which is hereby incorporated by reference in its entirety. 
    
    
     FIELD OF THE DISCLOSURE 
     The present disclosure relates to contact centers, and more specifically, to automatic scheduling of a workforce. 
     BACKGROUND 
     A manager in a contact center (also known as a call center) typically uses workforce scheduling software to create a schedule which assigns workers (agents) to shifts throughout the workday. The scheduler chooses an optimal schedule that meets constraints while optimizing goals. Inputs such as predicted workload (e.g., call volume in 15-minute intervals, average call duration) and work rules (e.g., maximum shift length, possible shift start time, break requirements) are treated as constraints. Inputs such as expected level of service (e.g., call hold time) are treated as goals. The scheduler generates many possible schedules, and examines the possibilities to find a schedule that optimizes goals while remaining within the constraint boundaries. 
     In general, existing workforce schedulers accurately schedule an appropriate number of agents to handle the expected workload during each time interval. It is common, however, for workload and/or agent availability to vary from predicted values once a workday has begun. To keep the contact center running at peak performance, the schedule should then be adjusted, by giving some agents overtime or giving some agents time off. Existing schedulers do not support automatically scheduling of overtime or time-off after a schedule has been created and the day has started. Therefore, a contact center manager typically responds by manually creating overtime or time-off events, through which a particular shift for a particular agent is extended or truncated. The process by which a manager manually determines which agents should be assigned overtime or time-off, and where the overtime or time-off should be placed on a schedule, can be time-consuming, tedious, and difficult. 
     OVERVIEW 
     Systems and methods are disclosed for scheduling overtime and time-off for a workforce. In one embodiment, a method of workforce scheduling to handle an expected workload comprises, in an instruction execution system, receiving a first workforce schedule describing existing assignments of a plurality of workers to a plurality of shifts, each of the shifts being associated with a time range and a day; in response to a variance in the expected workload, selecting a modification to the first workforce schedule required to handle the variance in the expected workload during the day; and producing a second workforce schedule that modifies the length of at least one of the plurality of shifts to accommodate the modification to the first workforce schedule. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       Many aspects of the disclosure can be better understood with reference to the following drawings. The components in the drawings are not necessarily to scale, emphasis instead being placed upon clearly illustrating the principles of the present disclosure. 
         FIG. 1  is a block diagram of a representative contact center environment, in which an embodiment of a system and/or method for automatic scheduling of a workforce can be implemented. 
         FIG. 2  is a dataflow diagram showing one embodiment of a system for automatic scheduling of a workforce. 
         FIG. 3A  is a block diagram showing one representation of an overtime (OT) template from  FIG. 2 . 
         FIG. 3B  is a block diagram showing one representation of a voluntary time-off (VTO) template from  FIG. 2 . 
         FIG. 4  is a flowchart for one embodiment of a method for automatic scheduling of a workforce. 
         FIG. 5  shows a set of entities, and the interrelationships between them, used by one embodiment of a scheduler that includes automatic scheduling of a workforce. 
         FIG. 6  is a flowchart for one embodiment of a scheduler that includes automatic scheduling of a workforce. 
         FIG. 7A-7D  illustrate an example scenario in which a scheduler automatically schedules overtime and time-off for a workforce. 
         FIG. 8  is a hardware block diagram of a general-purpose computer which can be used to implement systems and methods for automatic scheduling of a workforce. 
     
    
    
     DETAILED DESCRIPTION 
       FIG. 1  is a block diagram of a contact center environment  100 . contact center  100  is staffed by agents who handle incoming and/or outgoing contacts. Although the traditional and most common form of contact is by phone, other types of contacts can be used, such as text chat, web collaboration, email, and fax. An agent workspace includes an agent phone  110  and a workstation computer  120 . A network  130  connects one or more of the workstations  120 . 
     A contact router  140  distributes or routes contacts (incoming or outgoing) to an agent position. Voice over Internet Protocol (VoIP) calls and computer-based contacts (e.g., chat, email) are routed over one or more data networks, and distributed over network  130  to one of the agent workstations  120 . Contact router  140  may include an automatic call distributor (ACD)  150  to route phone contacts. The embodiments described herein will refer to ACD  150  instead of contact router  140 , but analogous contact router actions and operations are intended to be captured by this disclosure. Note that a predictive dialer (not shown) could be used for directing outbound calls to agents for handling. 
     If an agent is not available to handle a particular call, ACD  150  puts the call into a queue, which effectively places the caller on hold. When an agent is available, ACD  150  connects the outside trunk line  160  carrying the phone call to one of the agents. More specifically, ACD  150  connects the outside trunk line  160  to the trunk line  170  of the selected agent. 
     When an agent is ready to handle contacts, the agent first logs into ACD  150 . This login notifies ACD  150  that the agent is available to take calls. An agent&#39;s ACD state changes throughout the workday, as the agent performs work activities such as handling calls, performing after-call work, and taking breaks. An example list of states includes available, busy, after-call work, and unavailable. 
     While handling a contact, the agent interacts with one or more applications running on workstation  120 . By way of example, workstation applications could provide the agent with access to customer records, product information, ordering status, and transaction history. The applications may access one or more business databases (not shown) via the network  130 . 
     Call center  100  also includes a work force management system (WFMS)  180 . WFMS  180  performs many functions. One such function is providing a contact center supervisor or manager with information about agents and contacts, both historical and real-time. Another function is supplying the supervisor with information on how well each agent complies with contact center policies. Yet another function is calculating staffing levels and creating agent schedules based on historical patterns of incoming contacts. The functionality of the entire work force management system (WFMS)  180  is typically divided among several applications, some of which have a user interface component, and WFMS  180  comprises the suite of applications. 
     In the environment described above, the workers assigned to shifts are contact center agents. However, the scheduling methods and systems described herein are also applicable to scheduling other kinds of workers in other types of work environments. Therefore, the remaining embodiments will refer to workers rather than agents. 
       FIG. 2  is a dataflow diagram showing one embodiment of a system ( 200 ) for automatic scheduling of a workforce. A user interacts with a template user interface component  210  of WFMS  180  to define one or more schedule alteration templates  220 . These schedule alteration templates  220  define ways in which a schedule can be altered. A user also interacts with a work-rule user interface component  230  to define work rules such as maximum shift length, shift start times, and break requirements. Although shown as two separate components in  FIG. 2 , in another embodiment the template user interface  210  and work-rule interface  230  are combined into a single user interface. 
     Two different types of templates can be created in the embodiment in  FIG. 2 . Voluntary time-off (VTO) templates  220 V describe an alteration that truncates an already-scheduled shift and adds a new time-off activity located adjacent to that shift. Overtime (OT) templates  220 O describe an alteration that extends an already-scheduled shift to include a new work activity, where the extension may allow a gap between the original shift and the overtime. 
     Schedule alteration templates  220  are provided as input to a scheduler component  240 , along with an existing schedule  250 . Scheduler  260  produces an updated schedule  270  that attempts to optimize goals  280  while meeting a workload forecast  290  and a set of work-rule constraints  2100 . 
       FIG. 3A  is a block diagram showing one representation of an overtime (OT) template  220 O. An OT template  220 O is one type of schedule alteration template  220 , through which a user defines ways in which a workday shift can be altered. OT template  220 O includes the following attributes: an activity  310 ; a duration  320 ; an action  330 ; a placement  340 ; and a gap  350 . Activity  310  represents the expected work activity to be performed during the overtime. Typical examples include phone, email, and fax, but this field can be any work activity. Duration  320  represents the duration of the overtime shift. In one embodiment, duration  320  is a range, indicating a minimum and a maximum value for the duration. For overtime, action  330  is set to Extend, since overtime extends an existing shift. Placement  340  refers to where the overtime is placed on the schedule relative to the existing shift: BeginnningOfShift, EndOfShift, or Either. Finally, gap  350  allows time between the existing shift and the overtime. A special value, such as zero, indicates that the overtime occurs next to the existing shift, with no gap. In one embodiment, gap  350  is a range, indicating a minimum and a maximum value for the gap. 
       FIG. 3B  is a block diagram showing one representation of a voluntary time-off (VTO) template  220 V. VTO template  220 V is another type of schedule alteration template  220 , through which a user defines ways in which a workday shift can be altered. VTO template  220 V includes an activity  360 ; a duration  370 ; an action  380 ; and a placement  390 . Activity  360  is set to VoluntaryTimeOff since the worker is not performing a work activity. Duration  370  represents the duration of the time off. In one embodiment, duration  370  is a range, indicating a minimum and a maximum value for the duration. Action  380  is set to Truncate, since time-off truncates an existing shift. Placement  390  refers to where the time-off activity is placed relative to the existing shift: BeginnningOfShift, EndOfShift, or Either. 
       FIG. 4  is a flowchart for one embodiment of a method ( 400 ) for automatic scheduling of a workforce. At block  410 , one or more schedule alteration templates ( 220 ) are received. Next (block  420 ), an association between workers and templates  220  is received. At block  430 , worker-specific VTO/OT scheduling options are received. In one embodiment, these worker-specific scheduling options include: maximum OT/VTO per day and/or per week; OT Before/After Shift preferences (e.g., Prefer, Don&#39;t Want, Any); and VTO Start Of/End Of Shift preferences (e.g. Prefer, Don&#39;t Want, Any). Block  430  is optional, but if present is repeated for each worker that is associated with a schedule alteration template  220 . 
     Processing then continues at block  440 , where a selection of an existing schedule  250  is received. Next (block  450 ), options specific to the selected schedule are received. In one embodiment, these schedule-specific options include: maximum OT/VTO per day and/or per week; Add OT Placement (Before/After shift); and Add VTO Placement (Start Of/End Of shift). Block  450  is optional. At block  460 , an updated schedule  270  is produced based on the received templates  220  and options (if present). Updated schedule  270  is produced in accordance with constraints  2100  and goals  280 . As will be described in further detail in connection with  FIGS. 5 ,  6 , and  7 A-D, updated schedule  270  is calculated by generating schedulable objects ( FIG. 5 ) and then applying the objects to existing schedule  250 . 
       FIG. 5  shows a set of entities, and the interrelationships between them, used by one embodiment of a scheduler  260  that supports automatic scheduling of a workforce. Schedule alteration templates  220  were discussed earlier in connection with  FIG. 3 . As stated earlier, each schedule alteration template  220  is associated with one or more workers  510 . Each worker  510  is also associated with a shift  520 , where a shift  520  is described by a time range and a day ( 530 ). As can be seen in  FIG. 5 , worker  510  can have more than one shift  520 , and a time range-day  530  can be associated with more than one shift  520  (e.g., different workers). However, a particular shift  520  is specific to worker and to a time range-day (e.g. a shift representing “John Doe on Monday 9 AM-5 PM.”). 
     A schedule alteration template  220  describes possible alterations to any already-scheduled shift  520 , but is not associated with any particular shift  520 . Scheduler  260  creates one or more schedulable objects  540  based on each schedule alteration template  220 , such that attributes in a schedulable object  540  are initialized from corresponding attributes in the template  220 . Each schedulable object  540  is associated with a shift  520 , and represents a possible change in the schedule adjacent to that shift  520 . 
     Scheduler  260  also creates a set, or domain, of bindings  550  for each shift  520 . A binding represents a time slot in, or adjacent to, an employee shift. As can be seen in  FIG. 5 , a schedulable object  540  can possibly be bound to more than one binding  550 . Scheduler  260  chooses one optimal binding  550  for each schedulable object  540 . By selecting a binding for a schedulable object, scheduler  260 , in effect, assigns the work activity for that one object (derived from a template) to the time slot specified in the binding. The process of creating schedulable objects  540 , creating bindings  550 , and choosing optimal bindings  550  will now be discussed in connection with  FIGS. 6 and 7 . 
       FIG. 6  is a flowchart for one embodiment of scheduler  260  that supports automatic scheduling of a workforce. At block  610 , schedulable objects are created from schedule alteration templates  220 . The creation of schedulable objects from schedule alteration templates  220  and an existing schedule  250  can be seen in the example scenario illustrated in  FIG. 7 . In this example scenario, existing schedule  250  is composed of multiple worker shifts  520 : John&#39;s Monday shift from 9 AM to 5 PM (shift  520 A); John&#39;s Tuesday shift from 10 AM to 6 PM (shift  520 B); and Fred&#39;s Tuesday shift from 11 AM to 7 PM (shift  520 C). John is associated with three schedule alteration templates  220 : overtime before (template  220 OB); voluntary time-off before (template  220 VB); and voluntary time-off after (template  220 VA). Fred is associated with the two “after” templates, template  220 OA and template  220 VA. 
     For templates  220  with a placement value of either “BeginningOfShift” or “EndOfShift”, scheduler  260  creates a set of schedulable objects  540  associated with those templates. (As the name suggests, these values specify where the object is scheduled in relation to the shift; see the discussion of  FIG. 3  for more discussion of these placement values.) Specifically, one object  540  is created for each worker shift associated with the template  220 . In the example scenario of  FIG. 7 , template  220 OB is associated with two shifts (John M9-5 and John T10-6), so two objects ( 540 A and  540 B) are created from template  220 OB. In this example, the template-shift association is indirect, through a template-worker relationship and a worker-shift relationship; however, another embodiment using a direct association between template and shift is contemplated. One of ordinary skill in the art should understand by viewing  FIG. 7  how the remaining objects  540 C-G are created from the other two templates in a similar manner. 
     If the template  220  has a placement value of “Either”, then the above process is repeated to create two such sets of objects. One of the sets gets a placement value of “BeginningOfShift” and the other corresponding set gets a placement value of “EndOfShift”. In the simple example scenario of  FIG. 7 , none of the three templates ( 220 OB,  220 VB,  220 VA) has a placement value of “Either”. 
     Returning to the flowchart in  FIG. 6 , after schedulable objects are created in block  610 , processing continues at block  620 , where a set, or domain, of potential bindings is created for schedulable objects  540 , based on attributes such as start time, end time, gap, and duration. Values for these schedulable object attributes are derived from corresponding attributes in template  220 . Creation of bindings  550  will now be discussed in connection with  FIG. 7 . 
     A schedulable object  540  is associated with a worker shift  520 , which has a start time and an end time. Bindings  550  also have a start time and an end time. Bindings  550  are created for a particular shift  520 , starting with the time slot adjacent to the shift start or end (depending on whether the Action attribute in object  540  is “Beginning” or “End”). The number of bindings  550  depends on the Duration attribute in the object  540 : enough bindings are created to span the time specified by the Duration attribute. However, these bindings  550  are also constrained by work-rules, which may limit the start or end time of a shift (e.g., a particular shift cannot starts before 6 AM or end after 9 PM). 
     In the example of  FIG. 7 , the object  540 A (“John M9-5 OT Before”) has a Duration of 2 hours, and is associated with shift  520 M. Therefore, three bindings  710  are created:  710 A is a one-hour slot from 8-9 AM;  710 B is a one-hour slot from 7-8 AM; and  710 C is a single two-hour slot from 7-9 AM. In addition, a “no time” binding is created ( 710 D), representing the possibility that no object will be scheduled in this slot. The time slot granularity chosen in  FIG. 7  is merely an example, and the time slot granularity of the bindings can be a larger or a smaller value. 
     Viewing  FIG. 7 , one of ordinary skill in the art should understand how bindings for remaining objects  540 B-G are created in a similar manner: binding  720 A-D for object  540 B (“John T10-6 OT Begin”); binding  730 A-B for object  540 C (“John M9-5 VTO Begin”); binding  740 A-B for object  540 D (“John T10-6 VTO Begin”); binding  750 A-B for object  540 E (“John M9-5 VTO End”); binding  760 A-B for object  540 F (“John T10-6 VTO End”); and binding  770 A-D for object  540 G (“Fred T11-7 VTO End”). 
     In this example, the domain of bindings for a schedulable object includes at least one binding with a time slot adjacent to the shift, because the Gap field in each object is zero. (The Gap field in a schedulable object is set from the template.) In contrast, the bindings created for objects that have a non-zero Gap field do not include a time slot adjacent to the shift. Instead, the closest time slot is separated from the shift by the value specified by Gap. In this example, the Gaps are fixed values, but in other embodiments Gap is a range, which results in the creation of additional bindings. 
     Returning to the flowchart in  FIG. 6 , after schedulable objects are created in block  610 , processing continues at block  630 , where OT objects are ordered according to worker-specific scheduling preferences. As described earlier in connection with  FIG. 5 , scheduler  260  receives OT and VTO preferences (e.g., Prefer, Don&#39;t Want, Any) set by workers. Thus, schedulable objects  540  associated with workers that prefer OT are first, and schedulable objects  540  associated with workers that do not want OT are last, with schedulable objects  540  associated with workers with no preference in the middle. 
     Next, at block  640 , the optimal binding for each OT object is selected. The techniques that schedulers use to produce an optimal schedule for a given set of inputs (workload, constraints, and goals) should be understood by a person of ordinary skill in the art. Such techniques include, but are not limited to, local search, simulated annealing, and heuristics. The use of schedulable objects and bindings should also be understood by such a person. 
     Since the previous step  630  was ordered by worker, the effect is to choose bindings for all the OT objects of the same type (Begin or End) for one worker before moving to the next worker. When bindings for all objects have been chosen, the ordering and selection blocks  630  and  640  are repeated for VTO objects. This process can be extended to support schedulable objects of other types as well. 
       FIG. 7C  shows the bindings chosen by the scheduler  260  for schedulable objects  540 A-I, in one example scenario. In this diagram, bindings selected by scheduler  260  are shaded, while those not selected are not shaded. As can be seen in  FIG. 7C , several objects are bound to a “none” slot: object  540 B (“John T10-6 OT Begin”); object  540 H (“John M9-5 VTO Begin”); object  540 I (“John M9-5 VTO End”); object  540 J (“John T10-6 VTO Begin”); and object  540 K (“John T10-6 VTO End”). Object  540 A (“John M9-5 OT Before”) is bound to the two-hour slot representing 7-9 ( 710 C). Object  540 G (“Fred T11-7 VTO After”) is bound to the two-hour slot representing 5-7 ( 770 C). 
       FIG. 7D  shows an updated schedule  270  resulting from the selected bindings shown in  FIG. 7C . Shift  520 A (“John M 9-5”) has been modified to include a new work activity from 7 AM to 9 AM. This is a result of the binding representing 7-9 AM (binding  710 C) being selected for object  540 A (“John M9-5 OT Before”). The bindings selected for the other objects for shift  520 A ( 540 L and  540 M) were all “none”, meaning schedulable objects  540 N and  540 O did not affect shift  520 A. All bindings selected for shift  520 B (“John T10-6”) object were “none”, meaning shift  520 B remains unchanged. Shift  520 C (“Fred T11-7”) has been modified to include a new time-off activity from 5 PM to 7 PM. This is a result of binding representing 5-7 PM (binding  770 C) being selected for object  540 G (“Fred T11-7 VTO After”). 
       FIG. 8  is a hardware block diagram of a general-purpose computer  800  which can be used to implement various embodiments of systems and methods for automatic scheduling of a workforce. Computer  800  contains a number of components that are well known in the art of contact center software, including a processor  810 , a network interface  820 , memory  830 , and non-volatile storage  840 . Examples of non-volatile storage include, for example, a hard disk, flash RAM, flash ROM, and EEPROM. These components are coupled via a bus  850 . Memory  830  contains instructions which, when executed by the processor  810 , implement systems and methods for automatic scheduling of a workforce, such as the processes depicted in the diagrams of  FIGS. 4 ,  5 ,  6 , and  7 A-D. Omitted from  FIG. 8  are a number of conventional components that are unnecessary to explain the operation of computer  800 . 
     The systems and methods for automatic scheduling of a workforce can be implemented in software, hardware, or a combination thereof. In some embodiments, the system and/or method is implemented in software that is stored in a memory and that is executed by a suitable microprocessor (μP) situated in a computing device. However, the systems and methods can be embodied in any computer-readable medium for use by or in connection with an instruction execution system, apparatus, or device. Such instruction execution systems include any computer-based system, processor-containing system, or other system that can fetch and execute the instructions from the instruction execution system. In the context of this disclosure, a “computer-readable medium” can be any means that can contain, store, communicate, propagate, or transport the program for use by, or in connection with, the instruction execution system. The computer readable medium can be, for example but not limited to, a system or propagation medium that is based on electronic, magnetic, optical, electromagnetic, infrared, or semiconductor technology. 
     Specific examples of a computer-readable medium using electronic technology would include (but are not limited to) the following: an electrical connection (electronic) having one or more wires; a random access memory (RAM); a read-only memory (ROM); an erasable programmable read-only memory (EPROM or Flash memory). A specific example using magnetic technology includes (but is not limited to) a portable computer diskette. Specific examples using optical technology includes (but are not limited to): an optical fiber; and a portable compact disk read-only memory (CD-ROM). In addition, the functionality could be implemented in logic embodied in hardware or software-configured media. 
     Any process descriptions or blocks in flowcharts should be understood as representing modules, segments, or portions of code which include one or more executable instructions for implementing specific logical functions or steps in the process. As would be understood by those of ordinary skill in the art of the software development, alternate embodiments are also included within the scope of the disclosure. In these alternate embodiments, functions may be executed out of order from that shown or discussed, including substantially concurrently or in reverse order, depending on the functionality involved. 
     This description has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the disclosure to the precise forms disclosed. Obvious modifications or variations are possible in light of the above teachings. The embodiments discussed, however, were chosen to illustrate the principles of the disclosure, and its practical application. The disclosure is thus intended to enable one of ordinary skill in the art to use the disclosure, in various embodiments and with various modifications, as are suited to the particular use contemplated. All such modifications and variation are within the scope of this disclosure, as determined by the appended claims when interpreted in accordance with the breadth to which they are fairly and legally entitled.