In the past, some dispatching systems have used heuristic or ad-hoc methods to accomplish the assignment of workers to jobs. The quality of results of these systems has varied depending on the order in which the jobs are presented to the system or on the order in which the workers are presented. As such, at least some of these systems may provide inefficient assignments.
While these systems are capable of generating work assignments, it would be desirable to utilize systems and methods that more fully and more strategically take into consideration various job and worker constraints in order to optimize work assignments. For example, it would be advantageous to consider the priorities of various jobs, the travel times between job locations and worker locations, and the skill sets of workers in order to dispatch work assignments more efficiently.
Exemplary embodiments will now be described hereinafter with reference to the accompanying drawings, in which exemplary embodiments and examples are shown. Like numbers refer to like elements throughout.
As will be appreciated, exemplary embodiments may be implemented as a method, a data processing system, or a computer program product. Accordingly, exemplary embodiments may take the form of an entirely hardware embodiment, an entirely software embodiment, or an embodiment combining software and hardware aspects. Furthermore, exemplary embodiments may take the form of a computer program product on a computer-readable storage medium having computer-readable program instructions (e.g., computer software) embodied in the storage medium. More particularly, exemplary embodiments may take the form of web-implemented computer software. Any suitable computer-readable storage medium may be utilized including hard disks, CD-ROMs, optical storage devices, or magnetic storage devices.
Exemplary embodiments are described below with reference to block diagrams and flowchart illustrations of methods, apparatuses (i.e., systems) and computer program products according to an embodiment of the invention. It will be understood that each block of the block diagrams and flowchart illustrations, and combinations of blocks in the block diagrams and flowchart illustrations, respectively, can be implemented by computer program instructions. These computer program instructions may be loaded onto a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions which execute on the computer or other programmable data processing apparatus create a means for implementing the functions specified in the flowchart block or blocks.
These computer program instructions may also be stored in a computer-readable memory that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including computer-readable instructions for implementing the function specified in the flowchart block or blocks. The computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer-implemented process such that the instructions that execute on the computer or other programmable apparatus provide steps for implementing the functions specified in the flowchart block or blocks.
Accordingly, blocks of the block diagrams and flowchart illustrations support combinations of means for performing the specified functions, combinations of steps for performing the specified functions and program instruction means for performing the specified functions. It will also be understood that each block of the block diagrams and flowchart illustrations, and combinations of blocks in the block diagrams and flowchart illustrations, can be implemented by special purpose hardware-based computer systems that perform the specified functions or steps, or combinations of special purpose hardware and computer instructions.
In the exemplary embodiments referenced herein, a “computer” or “computing device” may be referenced. Such computer may be, for example, a mainframe, desktop, notebook or laptop, a hand held device such as a data acquisition and storage device, or it may be a processing device embodied within another apparatus such as, for example, a set top box for a television system or a wireless telephone. In some instances the computer may be a terminal used to access data or processors over a network. Turning to
The processor 100 also communicates with various peripherals or external devices using an I/O bus 122. A peripheral I/O controller 130 is used to provide standard interfaces, such as RS-232, RS-422, DIN, USB, or other interfaces as appropriate to interface various input/output devices. Typical input/output devices include local printers 132, a monitor 134, a keyboard 136, and a mouse 138 or other typical pointing devices (e.g., rollerball, trackpad, joystick, etc.).
The processor 100 typically, but not necessarily, also communicates using a communications I/O controller 140 with external communication networks, and may use a variety of interfaces such as data communication oriented protocols 146 such as X.25, ISDN, DSL, cable modems, etc. The communications controller 140 may also incorporate a modem (not shown) for interfacing and communicating with a standard telephone line 144. The communications I/O controller may incorporate an Ethernet interface 142 for communicating over a LAN. Any of these interfaces may be used to access a wide area network such as the Internet, intranets, LANs, or other data communication facilities.
The processor 100 may communicate with a wireless interface 150 that is operatively connected to an antenna 152 for communicating wirelessly with another device, using for example, one of the IEEE 802.11 protocols, 802.15.4 protocol, or standard 3G wireless telecommunications protocols, such as CDMA2000 1x EV-DO, GPRS, W-CDMA, or other protocol.
An alternative embodiment of a processing system that may be used is shown in
Those skilled in the art of data networking will realize that many other alternatives and architectures are possible and can be used to practice the preferred embodiments. The embodiments illustrated in
According to exemplary embodiments, a system, method and computer program product are provided for assigning prioritized jobs at multiple locations to workers with the objectives of maximizing the number of higher priority jobs assigned, minimizing worker travel time between locations and balancing the workload across the workers, at least for workers of the same or comparable skill level. Jobs or tasks are assigned such that assigning one job of a given priority is more important than assigning any number of lower priority jobs. According to various exemplary embodiments, the method is specifically designed for cases in which there are a large number of priority classes, though it is equally operable with only a few priority classes. The jobs that are to be performed have specific locations at which the work is to be done and generally require certain skills to perform the jobs. Likewise, the workers available to perform these jobs have certain skill sets and may have constraints on the locations at which they are able to work. In optimizing work assignments, exemplary embodiments utilize this job and worker information by comparing the skills required of the job with the skill sets of workers, and comparing the job location with the location constraints of the workers. The jobs are generally assigned to workers during their available work hours, but overtime work may be accommodated. Exemplary embodiments allow for additional constraints such as limitations on the minimum or maximum number of workers that can be at a particular location at any time, and “time window” constraints that restrict the time of day a particular job can be performed. The system may serve as a dispatch module and can accept input from and supply work assignments to existing work management systems and other legacy systems and may replace dispatching modules in such systems.
According to exemplary embodiments, the method, system and computer program product use a sequence of mathematical optimizations to implicitly consider all possible combinations of assignments to find a best fit, such as in accordance with a lexicographic optimization or lexicographic maximization process. Moreover, one embodiment distributes the workload between workers as evenly as possible given their skills and the skill sets required by the jobs and also minimizes total travel time. For example, starting with jobs that are of the highest priority, a first optimization determines the maximum number of jobs of that priority level that can be assigned, based on job constraints and worker constraints. A second optimization determines the maximum number of jobs of a second highest priority that can be assigned, given that the maximum number of highest priority jobs determined in the first optimization must be maintained. It is to be appreciated that these optimizations do not determine which jobs or which workers will be assigned; rather, these optimizations only determine the number of jobs at each priority level that can be assigned to workers. In other words, the set of highest priority jobs found in a second optimization may be a different set than that found in the first optimization, but the overall number of highest priority jobs remains the same. Ensuing optimizations may be performed for each additional priority level that can be assigned given the number of available workers. For instance, a third optimization can be performed to maximize the number of third highest priority jobs, given that the maximum number of second highest and first highest priority jobs must be maintained (although again the actual jobs having the first and second priorities that are assigned may differ following the third optimization as compared to those assigned by the first and second optimizations). After these initial optimizations are performed, potential job assignments are considered but no specific job assignments have been fixed; only the number of jobs that can be assigned at each priority level has been determined. Thus, each ensuing optimization may change the potential job assignments in a way to maintain the objectives of previous optimizations and to find the best solution to the current optimization. In this manner, the results of a first optimization provide a suitable initial solution for the next optimization and so on, the result being that overall computation time is minimized. This optimization process typically continues until all priority classes have been considered or until there are no more jobs to be assigned.
After the maximum number of assignable jobs for each priority class has been determined, a final mathematical optimization is performed to assign jobs to available workers. This final optimization considers all jobs and all workers, with the constraint that the previously determined maximum number of jobs for each priority class must be assigned. According to various exemplary embodiments, one objective of this optimization is to minimize travel time. Another objective of this optimization is to balance workload across a group of workers of the same or comparable skill level. The final optimization may also take into account the relative priority or importance of the additional objectives. For example, if the minimization of travel time is designated to be of more importance than the balancing of the workload across a group of workers, the final optimization can initially optimize the assignment of jobs of each priority class so as to minimize travel time without consideration for balancing the workload across a group of workers. The final optimization of this exemplary embodiment can thereafter maximize the balance of the workload across the group of workers while maintaining the minimization of the travel time that has been determined in the prior step. While many benefits flow from such an optimization process, one indirect benefit is the reduction or minimization of overtime since travel time is minimized and workload is balanced across a group of workers.
As described in further detail below, an exemplary embodiment of the system is configured to receive data on the available jobs including location, time required, skills required and priority class; data on available workers including the workers' available hours, skills, and the locations at which the workers are available to work; data regarding the travel time between each pair of locations (e.g., worker locations and job locations) as well as the travel time between various job locations; and any additional job, worker or travel time constraints, such as the maximum number of locations that a worker can visit in one day or within some other predefined period of time.
Exemplary methods include a multi-variate optimization routine that is executed for one or more job sets that have been assigned a priority class. While considering a number of constraints, the multi-variate optimization routine determines x jobs having n priority to be scheduled for that day, y jobs having n+1 priority to be scheduled for that day, z jobs of n+2 priority to be scheduled for that day, etc., where x, y, z, and n are integer numerals and jobs having n priority are at a higher priority level than jobs having n+1, n+2, etc. priority. Constraints may include, for example, the number of available workers, the location of workers, travel time between locations, skill sets of workers, the need to distribute work equitably among workers, the amount of work (i.e., number of jobs of any priority), the job type priority, the types of jobs and skill sets needed, the average time required to complete jobs of various types, worker absences, the maximum number of locations that a worker can visit in one day and available productive hours by day.
By way of example, but not of limitation, an optimization model that may be employed to maximize the number of jobs of priority k that that can be assigned will be described. If priority k does not represent the highest priority class, this optimization model for maximizing the number of jobs of priority k that can be assigned would be solved after the number of jobs that can be assigned to each priority class higher than k has been maximized. In this regard, the exemplary optimization model may be expressed as:
in which techs is the set of available technicians t, jobs[k] is the set of jobs j of priority k, and xtj is a decision variable that takes the value of 1 if the job j is assigned to technician t, but is 0 otherwise. This exemplary optimization model is subject to the following constraints:
Although not depicted in conjunction with the above described exemplary optimization model, the model may also include decision variable(s) that keeps track of when a job is completed. As such, the model may also be subject to constraints that ensure that one or more predefined jobs are completed within a predefined period or window of time.
The network 210 may be for instance the Internet, or it may be any other form of private or public networks that provides for the transfer of data between the dispatch server 202 and the user stations 208. It may be comprised of one or more of wired, optical and wireless components. The user stations 208 are generally computing devices, such as described in relation to
The resources database 206 is comprised of information about available workers. According to exemplary embodiments, this information includes a worker identification (worker ID) 314, which may be, for example, a worker's name, employee number, etc.; the start time 316 and ending time 318 of a worker's normal work shift, which may include information about the worker's normal work schedule (e.g., night shift, Monday-Friday, Monday-Thursday, etc.); skill sets 320 possessed by a respective worker; the worker's normal work location 322; and any constraints 324 on the worker. Worker constraints 324 may include, for example, a worker's ability to travel or to work overtime, schedule limitations, etc.
Information from both the jobs database 204 and the resource database 206 is accessed by the optimization engine 212. The optimization engine 212 is configured to create a work schedule with as many jobs assigned as possible, with higher priority jobs more heavily weighted than those of lower priority jobs. According to various exemplary embodiments, the optimization engine 212 is further configured to create this work schedule while minimizing total travel time of workers to their assigned job locations, and to balance the workload equitably across a group of workers. According to various exemplary embodiments, the optimization engine 212 is comprised of one or more modules executing on the processor of one or more computing devices (e.g., the dispatch server 202 of
According to various exemplary embodiments, the optimization engine 212 is configured to simultaneously or sequentially minimize travel time and balance workload across workers, when optimizing work assignments. In various other embodiments, the optimization engine 212 can optimize work assignments while only minimizing travel time or only balancing the workload.
This process is iteratively repeated by the optimization engine 212 for each level of priority class 310 of jobs until a workplan is developed for the resources available for the time period under consideration (e.g., day, week, month, etc.). The work schedule is then distributed to the user stations 208 or otherwise assigned to the workers as job assignments 326.
In the preceding specification, various embodiments have been described. It will, however, be evident that various modifications and changes may be made thereunto 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.
Number | Name | Date | Kind |
---|---|---|---|
5111391 | Fields et al. | May 1992 | A |
5467268 | Sisley et al. | Nov 1995 | A |
5615121 | Babayev et al. | Mar 1997 | A |
5737728 | Sisley et al. | Apr 1998 | A |
5913199 | Dueck et al. | Jun 1999 | A |
5913201 | Kocur | Jun 1999 | A |
5920846 | Storch et al. | Jul 1999 | A |
5943652 | Sisley et al. | Aug 1999 | A |
5953389 | Pruett et al. | Sep 1999 | A |
5963911 | Walker et al. | Oct 1999 | A |
6078912 | Buerger et al. | Jun 2000 | A |
6578005 | Lesaint et al. | Jun 2003 | B1 |
6633900 | Khalessi et al. | Oct 2003 | B1 |
6941514 | Bradford | Sep 2005 | B2 |
6983188 | Loughran et al. | Jan 2006 | B2 |
6990458 | Harrison et al. | Jan 2006 | B2 |
7003475 | Friedland et al. | Feb 2006 | B1 |
7092894 | Crone | Aug 2006 | B1 |
7127412 | Powell et al. | Oct 2006 | B2 |
7222082 | Adhikari et al. | May 2007 | B1 |
7228207 | Clarke et al. | Jun 2007 | B2 |
7251612 | Parker et al. | Jul 2007 | B1 |
7283971 | Levine et al. | Oct 2007 | B1 |
7313530 | Smith et al. | Dec 2007 | B2 |
7337191 | Haeberle et al. | Feb 2008 | B2 |
7346531 | Jacobs | Mar 2008 | B2 |
7433830 | Ingman et al. | Oct 2008 | B2 |
7440906 | Wetzer et al. | Oct 2008 | B1 |
7451449 | Thompson et al. | Nov 2008 | B2 |
7457762 | Wetzer et al. | Nov 2008 | B2 |
7467161 | Frisina | Dec 2008 | B2 |
7487106 | Levine et al. | Feb 2009 | B2 |
7555440 | Ingman | Jun 2009 | B2 |
7561985 | Kanai | Jul 2009 | B2 |
7603285 | Jacobs et al. | Oct 2009 | B2 |
8365173 | Lin et al. | Jan 2013 | B2 |
8428990 | Moll et al. | Apr 2013 | B2 |
8433598 | Ingman et al. | Apr 2013 | B2 |
20010037229 | Jacobs et al. | Nov 2001 | A1 |
20010049619 | Powell et al. | Dec 2001 | A1 |
20020010615 | Jacobs | Jan 2002 | A1 |
20020065700 | Powell et al. | May 2002 | A1 |
20040102983 | Carlson et al. | May 2004 | A1 |
20040111311 | Ingman et al. | Jun 2004 | A1 |
20040111312 | Ingman et al. | Jun 2004 | A1 |
20040162811 | Wetzer et al. | Aug 2004 | A1 |
20040210621 | Antonellis | Oct 2004 | A1 |
20050119930 | Simon | Jun 2005 | A1 |
20050216182 | Hussain et al. | Sep 2005 | A1 |
20060111089 | Winter et al. | May 2006 | A1 |
20060111955 | Winter et al. | May 2006 | A1 |
20060265294 | de Sylva | Nov 2006 | A1 |
20070005522 | Wren | Jan 2007 | A1 |
20070015518 | Winter et al. | Jan 2007 | A1 |
20070038498 | Powell et al. | Feb 2007 | A1 |
20070039001 | Briccarello et al. | Feb 2007 | A1 |
20070167168 | Fukamachi et al. | Jul 2007 | A1 |
20070208604 | Purohit et al. | Sep 2007 | A1 |
20070282618 | Barahona et al. | Dec 2007 | A1 |
Number | Date | Country | |
---|---|---|---|
20080162242 A1 | Jul 2008 | US |