WO2001025991A9 - Method and system for assignment of tasks to resources using displacement trees - Google Patents

Method and system for assignment of tasks to resources using displacement trees

Info

Publication number
WO2001025991A9
WO2001025991A9 PCT/US2000/026301 US0026301W WO0125991A9 WO 2001025991 A9 WO2001025991 A9 WO 2001025991A9 US 0026301 W US0026301 W US 0026301W WO 0125991 A9 WO0125991 A9 WO 0125991A9
Authority
WO
WIPO (PCT)
Prior art keywords
tasks
assignments
resources
task
assigned
Prior art date
Application number
PCT/US2000/026301
Other languages
French (fr)
Other versions
WO2001025991A1 (en
Inventor
Yves Caseau
Peter Koppstein
David Shallcross
Original Assignee
Telcordia Tech Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Telcordia Tech Inc filed Critical Telcordia Tech Inc
Publication of WO2001025991A1 publication Critical patent/WO2001025991A1/en
Publication of WO2001025991A9 publication Critical patent/WO2001025991A9/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management

Definitions

  • the present invention relates generally to vehicle routing and scheduling problems, and more particularly, to a method and system for assigning tasks to resources using displacement trees.
  • a fundamental problem in any vehicle routing and scheduling problem is to assign a set of tasks to a set of resources so as to optimize an objective function value associated with the assignments.
  • An objective function may be determined based on, for example, the number of tasks assigned to the set of resources, the total weight of the assigned tasks as determined by, for example, the priorities of the assigned tasks, the total duration of the assigned tasks, the number of assigned tasks that are assigned to preferred resources as determined by, for example, the qualifications of the resources, the number of deadlines missed because of unassigned tasks, and or the total travel time for dispatching a resource to perform an assigned task.
  • each resource has an assignment list (or a schedule), which identifies the tasks assigned to the resource and the scheduled start times and completion times for the assigned tasks.
  • assignment list or a schedule
  • the new tasks are assigned to resources whose schedules have sufficient idle time between assigned tasks.
  • a simple method would be to insert the new tasks into schedules that have idle times between completion time of an assigned task and the start time of the next assigned task.
  • the problem with this method is that the duration of a new task may not allow the new task to be assigned to a resource, even though the resources collectively have sufficient idle time in their schedules. For example, consider two resources A and B each having a schedule that includes a one hour task and an hour of idle time. Using this method, a new task that has a duration of two hours cannot be assigned to either resources A or B, even though resources A and B collectively have two hours of idle time.
  • More sophisticated methods displace a single task from each resource's schedule in a sequential fashion until the new task can be assigned to a resource.
  • a new task that has a duration of two hours can be assigned to either resource A or B by displacing one of the one hour tasks from one resource to another.
  • the one hour task from resource A may be displaced to resource B 's schedule, allowing the new task to be assigned to resource A.
  • the problem with these methods is that the objective function value associated with the new assignments may sometimes be less than the objective function value associated with the prior assignments.
  • Methods and systems consistent with the present invention assign a new task to a set of resources that have a first plurality of assignments by determining, subject to one or more predetermined thresholds, a displacement tree.
  • a new task may be, for example, any task that is not assigned to any of the set of resources.
  • a displacement tree may include zero or any number of assigned tasks that must be displaced from the first plurality of assignments to assign the new task to a resource in the set of resources.
  • Such methods and systems then displace from the first plurality of assignments one or more assigned tasks according to the displacement tree, and assign the new task to a resource, such that an objective function value associated with a second plurality of assignments that include the assigned new task is greater than or equal to an objective function value associated with the first plurality of assignments.
  • An objective function may be determined based on, for example, the number of tasks assigned to the set of resources, the total weight of the assigned tasks as determined by, for example, the priorities of the assigned tasks, the total duration of the assigned tasks, the number of assigned tasks that are assigned to preferred resources as determined by, for example, the qualifications of the resources, the number of deadlines missed because of unassigned tasks, and/or the total travel time for dispatching a resource to perform an assigned task.
  • Figure 1 is an external block diagram of a scheduling system for assigning M tasks to N resources, in accordance with an embodiment of the present invention
  • Figure 2 is an internal block diagram of a scheduling system for assigning M tasks to N resources, in accordance with an embodiment of the present invention
  • Figure 3 is a block diagram of a scheduling module in a scheduling system, in accordance with an embodiment of the present invention
  • Figure 4 illustrates a resources table in a scheduling module, in accordance with an embodiment of the present invention
  • Figure 5 illustrates assignments lists associated with resources, in accordance with an embodiment of the present invention
  • Figure 6 is a flow chart of the steps performed by a scheduling program for assigning an unassigned task to a set of resources, in accordance with an embodiment of the present invention
  • Figures 7a, 7b, 7c, and 7d illustrate a set of resources and associated assignments before and after assignment of a new task to the set of resources based on a displacement tree, in accordance with an embodiment of the present invention
  • Figure 8 is a flow chart of the steps performed by a scheduling program for determining a displacement tree, in accordance with an embodiment of the present invention.
  • a scheduling system assigns new tasks to a set of resources that have a first plurality of assignments by determining one or more displacement trees.
  • a resource may be, for example, a technician, an equipment, and/or any entity that can perform a task.
  • Each assignment includes a set of assigned tasks, which are defined by, for example, a task identifier, a start time, a completion time, and a description of what has to be performed.
  • the scheduling system determines, subject to one or more predetermined thresholds, a displacement tree and displaces from the first plurality of assignments one or more of the set of assigned tasks according to the displacement tree.
  • a displacement tree may include zero or any number of assigned tasks that the scheduling system must displace from the first plurality of assignments, for example unassign and/or reassign, to assign the new task to the set of resources.
  • the scheduling system then assigns the new tasks to the set of resources, such that an objective function value associated with a second plurality of assignments that include the assigned new tasks is greater than or equal to an objective function value associated with the first plurality of assignments.
  • An objective function may be determined based on, for example, the number of tasks assigned to the set of resources, the total weight of the assigned tasks as determined by, for example, the priorities of the assigned tasks, the total duration of the assigned tasks, the number of assigned tasks that are assigned to preferred resources as determined by, for example, the qualifications of the resources, the number of deadlines missed because of unassigned tasks, and/or the total travel time for dispatching a resource to perform an assigned task.
  • FIG. 1 is an external block diagram of a scheduling system 100 for assigning M tasks to N resources, where M and N are integers greater than zero, in accordance with an embodiment of the present invention.
  • scheduling system 100 interfaces with desktop computers 101 and 102, monitors 110 and 111, and printer 112 via connections 103, 104, 113, 114, and 115, respectively.
  • desktop computers 101 and 102 Via desktop computers 101 and 102, a user may enter and modify in scheduling system 100 tasks, resources, and assignments associated with the tasks and the resources.
  • scheduling system 100 dynamically assigns tasks to resources and vice versa, and, if necessary, modifies the assignments that are entered by users.
  • scheduling system 100 includes N resources,
  • Scheduling system 100 may assign a task to zero or one resource.
  • a task that is not assigned to any resource is referred to as an "unassigned" or "pending" task.
  • Figure 2 is an internal block diagram of scheduling system 100, in accordance with an embodiment of the present invention. As shown, scheduling system 100 comprises a processor 200, which connects via a high speed bus 250 to a memory 210, an input device 220, an output device 230, and a secondary storage 240.
  • Memory 210 includes scheduling module 212 and operating system 214, both of which may include data and a set of instructions in the form of software that processor 200 executes.
  • Input device 220 may include, for example, a standard terminal or a desktop computer, from which users may input information associated with resources, tasks, and/or assignments.
  • Output device 230 may include, for example, a terminal and a printer for displaying task, resource, and/or assignment information.
  • Secondary storage 240 comprises a disk drive and a tape drive or CD Read Only Memory (ROM). From the tape drive or CD ROM, software and data may be loaded onto the disk drive, which can then be copied into memory 210. Similarly, software and data in memory 210 may be copied onto the disk drive, which can then be loaded onto the tape drive or CD ROM.
  • ROM Read Only Memory
  • FIG. 3 is a block diagram of scheduling module 212 in memory 210, in accordance with an embodiment of the present invention.
  • scheduling module 212 includes a scheduling program 300, a Resources Table 310, an Assignments Lists 320, a New Tasks List 330, a Displaced Tasks List 340, and a Discarded Tasks List 350.
  • FIG. 4 illustrates Resources Table 310, in accordance with an embodiment of the present invention.
  • Resources Table 310 includes N entries 400 1 -400 N , where each entry is associated with a resource.
  • Each entry 400 J. -400 N includes a resource identifier and resource attributes.
  • a resource identifier uniquely identifies a resource, and may include, for example, an alphanumeric string.
  • a resource attribute may include, for example, a list of attributes that are associated with the resource.
  • the attributes may include, for example, the availability and qualifications of the resource.
  • Figure 5 is a block diagram of Assignments Lists 320, in accordance with an embodiment of the present invention. Assignments Lists 320 includes an array of N lists 500 ! -500 N , which are associated with N resources, respectively.
  • a list SOO SOO N may include, for example, a plurality of nodes, each of which includes information about a task that is assigned to a resource.
  • a node may include, for example, a task identifier, which uniquely identifies a task, a priority, a scheduled start time, and a scheduled end time.
  • New Tasks List 330 may include, for example, a list of tasks that are not assigned to any resources. Scheduling program 300 adds to New Tasks List 330 new unassigned tasks, which are, for example, entered by users via input device 220. New Tasks List 330 may, for example, be organized according to the priorities of the new tasks.
  • Displaced Tasks List 340 may include, for example, a list of tasks that scheduling program 300 displaces, for example removes, from Assignments Lists 320.
  • scheduling program 300 displaces a task from a list in Assignments Lists 320, the task is referred to as an "unassigned" task.
  • Discarded Tasks List 350 may include, for example, a list of tasks that scheduling program 300 displaces from a list in Assignments Lists 320, but cannot subsequently reassign to any of the N resources.
  • scheduling program 300 inserts a task into Discarded Tasks List 350, the task is referred to as a "discarded" task.
  • Figure 6 is a flow chart of the steps performed by scheduling program 300 for assigning a new unassigned task to a set of resources, in accordance with an embodiment of the present invention. Scheduling program 300 determines whether there are any tasks in New Tasks List 330 (step 600).
  • scheduling program 300 determines that there is at least one task in New Tasks List 330, scheduling program 300 initializes Displaced Tasks List 340 and Discarded Tasks List 350 by, for example, setting each list to a null pointer (step 610).
  • scheduling program 300 determines a displacement tree for assigning a new task in New Tasks List 330 to a resource (step 620).
  • a displacement tree identifies zero or more assigned tasks that scheduling program 300 must, for example, unassign and/or reassign in order to assign the selected new task to a resource.
  • Figures 7a-d illustrate the assignment of a new task E to a set of resources A, B, C, and D based on a displacement tree.
  • Figure 7a shows resources A, B, C, and D and their respective assigned tasks before scheduling program 300 assigns task E, which resides in New Tasks List 330, to one of the resources A-D.
  • tasks K, F, and G are assigned to resource A; tasks H and I are assigned to resource B; task J is assigned to resource C, and task L is assigned to resource D.
  • scheduling program 300 displaces tasks F and G from resource A's assignments.
  • scheduling program 300 To reassign the displaced task F to resource B, scheduling program 300 then displaces tasks H and I from resource B's assignments. To reassign the displaced task G to resource C, scheduling program 300 displaces task J from resource C's assignments. Finally, to reassign the displaced tasks H and I to resources D and A, respectively, scheduling program 300 displaces tasks L and K from resource D's and A's assignments, respectively.
  • the above steps of displacing the assigned tasks F, G, H, I, J, L, and K may be represented as a displacement tree, which is shown in Figure 7b.
  • scheduling program 300 reassigns tasks F, G, H, and I to resources B, C, D, and A, respectively.
  • scheduling program 300 adds the displaced tasks J, K, and L to Displaced Tasks List 340, as these tasks are not reassigned.
  • Figure 7d shows the new assignments resulting from displacements of tasks F, G, H, I, J, L, and K.
  • scheduling program 300 determines an objective function value associated with the new assignments resulting from the determined displacement tree. Scheduling program 300 then determines whether the determined objective function value associated with the new assignments is greater than or equal to the objective function value associated with the current assignments (step 620).
  • the objective function value may be determined based on, for example, the number of tasks assigned to the set of resources, the total weight of the assigned tasks as determined by, for example, the priorities of the assigned tasks, the total duration of the assigned tasks, the number of assigned tasks that are assigned to preferred resources as determined by, for example, the qualifications of the resources, the number of deadlines missed because of unassigned tasks, and/or the total travel time for dispatching a resource to perform an assigned task.
  • scheduling program 300 determines that the determined objective function value associated with the new assignments is not greater than or equal to the objective function value associated with the current assignments, scheduling program 300 removes the selected new task from New Tasks List 330 (step 640).
  • scheduling program 300 determines that the determined objective function value associated with the new assignments is greater than or equal to the objective function value associated with the current assignments, scheduling program 300 sets the current assignments to the new assignments by modifying Assignments Lists 320 according to the new assignments (step 650).
  • Scheduling program 300 determines the number of tasks in New Tasks List 330 that are assigned to resources based on the determined displacement tree (step 660). Finally, scheduling program 300 transfers one or more tasks from Displaced Tasks List 340 and/or Discarded Tasks List 350 to New Tasks List 330, where the number of transferred tasks equals, for example, one less than the determined number of tasks assigned in step 660 (step 670). Finally, scheduling program 300 repeats steps 600-670 for the next task in New Tasks Lists 330 until there are no more tasks in New Tasks Lists (step 605).
  • FIG 8 is a flow chart of the steps performed by scheduling program 300 for determining a displacement tree (shown as step 610 in Figure 6), in accordance with an embodiment of the present invention.
  • Scheduling program 300 selects a task from New Tasks List 330 or Displaced Tasks List 800 (step 800).
  • Scheduling program 300 then identifies a list of candidate resources that can perform the selected task (step 805).
  • the candidate resources may be identified based on, for example, the qualifications of the resources and/or some function of the relation of the selected task, for example geographical proximity, to other tasks assigned to the candidate resources.
  • scheduling program 300 For each identified candidate resource (step 810), scheduling program 300 performs steps 815-850 as described below. Scheduling program 300 selects a candidate resource from the candidate resource list (step 815). Scheduling program 300 then determines whether the selected task can be assigned to the selected candidate resource by possibly displacing one or more assigned tasks from the selected candidate resource's assignments (step 820).
  • scheduling program 300 determines that the selected task can be assigned to the selected candidate resource, scheduling program 300 adds any resulting displaced tasks from the candidate resource's assignments to Displaced Tasks Lists 340 (step 825). Otherwise, if scheduling program 300 determines that the selected task cannot be assigned to the selected candidate resource, scheduling program 300 determines whether one or more predetermined search thresholds are exceeded (step 850).
  • the search thresholds may include, for example, a limit on the number of candidate resources scheduling program 300 considers before assigning to a resource a selected task from New Tasks List 330, a limit on the number of tasks in Displaced Tasks List 340, a limit on the depth of each displacement tree, a limit on the number of tasks displaced from Assignments Lists 320 by a selected task, and/or a limit on the total duration of assigned tasks displaced from Assignments Lists 320 by a selected task.
  • scheduling program 300 After adding any resulting displaced tasks from the candidate resource's assignments to Displaced Tasks Lists 340 (step 825), scheduling program 300 determines an objective function value associated with the new assignments resulting from assigning the selected task to the selected candidate resource (step 830). If the determined objective function value is greater than or equal to the objective function value associated with the best displacement tree determined up to this step, scheduling program 300 saves the current displacement tree, which includes one or more assigned tasks that are to be displaced from the selected candidate resources 's assignments to Displaced Tasks List 340 (step 835).
  • Scheduling program 300 determines a displacement tree for the next task in New Tasks List 330 and/or continues to build the current displacement tree for the next task in Displaced Tasks List 340, subject to the above-mentioned predetermined search thresholds (step 840). Scheduling program 300 may determine the displacement tree and continue building the current displacement tree by, for example, recursively performing the steps 800-875. After performing one or more recursions, scheduling program 300 has determined a displacement tree for assigning the selected task to the selected candidate resource and for displacing zero or more assigned tasks from Assignment Lists 320.
  • scheduling program 300 After recursively performing the steps 800-875, scheduling program 300 backtracks any new assignments made up to this step based on the current displacement tree (step 845). For example, scheduling program 300 unassigns any new assignments made based on the current displacement tree, and restores Displaced Tasks List 340 and Discarded Tasks List 350 to their respective state prior to recursively performing the steps 800-875.
  • Scheduling program 300 determines whether it has exceeded one or more of the predetermined search thresholds (step 850). For example, if scheduling program 300 determines the number of candidate resources that are considered for the selected task does not exceed a predetermined threshold, scheduling program 300 considers the next candidate resource for assigning the selected task, and performs the steps 815-850 as described above.
  • scheduling program 300 determines whether the selected task is in Displaced Tasks List 350 (step 855). If scheduling program 300 determines that the selected task is not in Displaced Tasks List 350, scheduling program 300 returns the selected task to the list from which it was selected (step 875).
  • scheduling program 300 determines that the selected task is in Displaced Tasks List 350, scheduling program 300 adds the selected task to Discarded Tasks List 350 (step 860). Scheduling program 300 then determines a displacement tree for the next task in New Tasks List 330 and/or continues to build the current displacement tree for the next task in Displaced Tasks List 340 by, for example recursively performing the steps 800-875, subject to the predetermined search thresholds (step 865).
  • scheduling program 300 After recursively performing the steps 800-875, scheduling program 300 removes the selected task from Discarded Tasks List 350 (step 870). Finally, scheduling program 300 returns the selected task to the list from which it was selected at step 800. While it has been illustrated and described what are at present considered to be preferred embodiments and methods of the present invention, it will be understood by those skilled in the art that various changes and modifications may be made, and equivalents may be substituted for elements thereof without departing from the true scope of the invention. In addition, many modifications may be made to adapt a particular element, technique or implementation to the teachings of the present invention without departing from the central scope of the invention. Therefore, it is intended that this invention not be limited to the particular embodiments and methods disclosed herein, but that the invention include all embodiments falling within the scope of the appended claims.

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Human Resources & Organizations (AREA)
  • Operations Research (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Data Mining & Analysis (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

A method and system assign new tasks to a set of resources that have a first plurality of assignments by determining one or more displacement trees. A scheduling system determines, subject to one or more predetermined thresholds (850), a displacement tree (800) and displaces from the first plurality of assignments one or more of the set of assigned tasks according to the displacement tree. A displacement tree (800) may include zero or any number of assigned tasks that the sheduling system must displace from the first plurality of assignments, for example unassign and/or reassign, to assign the new tasks to the set of resources. The scheduling system then assigns the new tasks to the set of resources (805, 815), such that an objective function value (830) of second plurality of assignments that include the assigned new tasks is greater than or equal to an objective function value of the first plurality of assignments.

Description

METHOD AND SYSTEM FOR ASSIGNMENT OF TASKS TO RESOURCES USING DISPLACEMENT TREES
CROSS-REFERENCE TO RELATED APPLICATIONS
This application is related to U.S. Application No. 09/126168, filed July 30, 1998, the contents of which are hereby incorporated by reference.
BACKGROUND OF THE INVENTION The present invention relates generally to vehicle routing and scheduling problems, and more particularly, to a method and system for assigning tasks to resources using displacement trees.
A fundamental problem in any vehicle routing and scheduling problem is to assign a set of tasks to a set of resources so as to optimize an objective function value associated with the assignments. An objective function may be determined based on, for example, the number of tasks assigned to the set of resources, the total weight of the assigned tasks as determined by, for example, the priorities of the assigned tasks, the total duration of the assigned tasks, the number of assigned tasks that are assigned to preferred resources as determined by, for example, the qualifications of the resources, the number of deadlines missed because of unassigned tasks, and or the total travel time for dispatching a resource to perform an assigned task.
Generally, in any vehicle routing and scheduling problem, each resource has an assignment list (or a schedule), which identifies the tasks assigned to the resource and the scheduled start times and completion times for the assigned tasks. When new tasks must be performed, the new tasks are assigned to resources whose schedules have sufficient idle time between assigned tasks.
A simple method would be to insert the new tasks into schedules that have idle times between completion time of an assigned task and the start time of the next assigned task. The problem with this method, however, is that the duration of a new task may not allow the new task to be assigned to a resource, even though the resources collectively have sufficient idle time in their schedules. For example, consider two resources A and B each having a schedule that includes a one hour task and an hour of idle time. Using this method, a new task that has a duration of two hours cannot be assigned to either resources A or B, even though resources A and B collectively have two hours of idle time.
More sophisticated methods, however, displace a single task from each resource's schedule in a sequential fashion until the new task can be assigned to a resource. Applying such methods to the above example, a new task that has a duration of two hours can be assigned to either resource A or B by displacing one of the one hour tasks from one resource to another. For example, the one hour task from resource A may be displaced to resource B 's schedule, allowing the new task to be assigned to resource A. The problem with these methods, however, is that the objective function value associated with the new assignments may sometimes be less than the objective function value associated with the prior assignments.
Therefore, it is desirable to have a method and system for assigning tasks to resources using displacements that address the above and other disadvantages of the prior art.
DESCRIPTION OF THE INVENTION
Methods and systems consistent with the present invention assign a new task to a set of resources that have a first plurality of assignments by determining, subject to one or more predetermined thresholds, a displacement tree. A new task may be, for example, any task that is not assigned to any of the set of resources. A displacement tree may include zero or any number of assigned tasks that must be displaced from the first plurality of assignments to assign the new task to a resource in the set of resources. Such methods and systems then displace from the first plurality of assignments one or more assigned tasks according to the displacement tree, and assign the new task to a resource, such that an objective function value associated with a second plurality of assignments that include the assigned new task is greater than or equal to an objective function value associated with the first plurality of assignments. An objective function may be determined based on, for example, the number of tasks assigned to the set of resources, the total weight of the assigned tasks as determined by, for example, the priorities of the assigned tasks, the total duration of the assigned tasks, the number of assigned tasks that are assigned to preferred resources as determined by, for example, the qualifications of the resources, the number of deadlines missed because of unassigned tasks, and/or the total travel time for dispatching a resource to perform an assigned task. The description of the invention and the following description for carrying out the best mode of the invention should not restrict the scope of the claimed invention. Both provide examples and explanations to enable others to practice the invention. The accompanying drawings, which form part of the description for carrying out the best mode of the invention, show several embodiments of the invention, and together with the description, explain the principles of the invention.
BRIEF DESCRIPTION OF THE DRAWINGS
In the Figures:
Figure 1 is an external block diagram of a scheduling system for assigning M tasks to N resources, in accordance with an embodiment of the present invention;
Figure 2 is an internal block diagram of a scheduling system for assigning M tasks to N resources, in accordance with an embodiment of the present invention; Figure 3 is a block diagram of a scheduling module in a scheduling system, in accordance with an embodiment of the present invention;
Figure 4 illustrates a resources table in a scheduling module, in accordance with an embodiment of the present invention;
Figure 5 illustrates assignments lists associated with resources, in accordance with an embodiment of the present invention;
Figure 6 is a flow chart of the steps performed by a scheduling program for assigning an unassigned task to a set of resources, in accordance with an embodiment of the present invention;
Figures 7a, 7b, 7c, and 7d illustrate a set of resources and associated assignments before and after assignment of a new task to the set of resources based on a displacement tree, in accordance with an embodiment of the present invention; and Figure 8 is a flow chart of the steps performed by a scheduling program for determining a displacement tree, in accordance with an embodiment of the present invention.
BEST MODE FOR CARRYING OUT THE INVENTION Reference will now be made in detail to the preferred embodiments of the invention, examples of which are illustrated in the accompanying drawings. Wherever possible, the same reference numbers will be used throughout the drawings to refer to the same or like parts.
In accordance with an embodiment of the present invention, a scheduling system assigns new tasks to a set of resources that have a first plurality of assignments by determining one or more displacement trees. A resource may be, for example, a technician, an equipment, and/or any entity that can perform a task. Each assignment includes a set of assigned tasks, which are defined by, for example, a task identifier, a start time, a completion time, and a description of what has to be performed. When a new task must be performed, the scheduling system determines, subject to one or more predetermined thresholds, a displacement tree and displaces from the first plurality of assignments one or more of the set of assigned tasks according to the displacement tree. A displacement tree may include zero or any number of assigned tasks that the scheduling system must displace from the first plurality of assignments, for example unassign and/or reassign, to assign the new task to the set of resources.
The scheduling system then assigns the new tasks to the set of resources, such that an objective function value associated with a second plurality of assignments that include the assigned new tasks is greater than or equal to an objective function value associated with the first plurality of assignments. An objective function may be determined based on, for example, the number of tasks assigned to the set of resources, the total weight of the assigned tasks as determined by, for example, the priorities of the assigned tasks, the total duration of the assigned tasks, the number of assigned tasks that are assigned to preferred resources as determined by, for example, the qualifications of the resources, the number of deadlines missed because of unassigned tasks, and/or the total travel time for dispatching a resource to perform an assigned task. Figure 1 is an external block diagram of a scheduling system 100 for assigning M tasks to N resources, where M and N are integers greater than zero, in accordance with an embodiment of the present invention. As shown, scheduling system 100 interfaces with desktop computers 101 and 102, monitors 110 and 111, and printer 112 via connections 103, 104, 113, 114, and 115, respectively. Via desktop computers 101 and 102, a user may enter and modify in scheduling system 100 tasks, resources, and assignments associated with the tasks and the resources. Furthermore, scheduling system 100 dynamically assigns tasks to resources and vice versa, and, if necessary, modifies the assignments that are entered by users. In the embodiment of Figure 1, scheduling system 100 includes N resources,
M tasks, and associated assignments, all of which are governed by various timing rules, for example, specific time windows for completing a task. Scheduling system 100 may assign a task to zero or one resource. A task that is not assigned to any resource is referred to as an "unassigned" or "pending" task. Figure 2 is an internal block diagram of scheduling system 100, in accordance with an embodiment of the present invention. As shown, scheduling system 100 comprises a processor 200, which connects via a high speed bus 250 to a memory 210, an input device 220, an output device 230, and a secondary storage 240.
Memory 210 includes scheduling module 212 and operating system 214, both of which may include data and a set of instructions in the form of software that processor 200 executes.
Input device 220 may include, for example, a standard terminal or a desktop computer, from which users may input information associated with resources, tasks, and/or assignments. Output device 230 may include, for example, a terminal and a printer for displaying task, resource, and/or assignment information.
Secondary storage 240 comprises a disk drive and a tape drive or CD Read Only Memory (ROM). From the tape drive or CD ROM, software and data may be loaded onto the disk drive, which can then be copied into memory 210. Similarly, software and data in memory 210 may be copied onto the disk drive, which can then be loaded onto the tape drive or CD ROM.
Figure 3 is a block diagram of scheduling module 212 in memory 210, in accordance with an embodiment of the present invention. As shown, scheduling module 212 includes a scheduling program 300, a Resources Table 310, an Assignments Lists 320, a New Tasks List 330, a Displaced Tasks List 340, and a Discarded Tasks List 350.
Figure 4 illustrates Resources Table 310, in accordance with an embodiment of the present invention. Resources Table 310 includes N entries 4001-400N, where each entry is associated with a resource. Each entry 400J.-400N includes a resource identifier and resource attributes. A resource identifier uniquely identifies a resource, and may include, for example, an alphanumeric string. A resource attribute may include, for example, a list of attributes that are associated with the resource. The attributes may include, for example, the availability and qualifications of the resource. Figure 5 is a block diagram of Assignments Lists 320, in accordance with an embodiment of the present invention. Assignments Lists 320 includes an array of N lists 500!-500N, which are associated with N resources, respectively. As shown, a list SOO SOON may include, for example, a plurality of nodes, each of which includes information about a task that is assigned to a resource. A node may include, for example, a task identifier, which uniquely identifies a task, a priority, a scheduled start time, and a scheduled end time. When scheduling program inserts a task into a list in Assignments Lists 320, the task is referred to as an "assigned" task.
New Tasks List 330 may include, for example, a list of tasks that are not assigned to any resources. Scheduling program 300 adds to New Tasks List 330 new unassigned tasks, which are, for example, entered by users via input device 220. New Tasks List 330 may, for example, be organized according to the priorities of the new tasks.
Displaced Tasks List 340 may include, for example, a list of tasks that scheduling program 300 displaces, for example removes, from Assignments Lists 320. When scheduling program 300 displaces a task from a list in Assignments Lists 320, the task is referred to as an "unassigned" task.
Discarded Tasks List 350 may include, for example, a list of tasks that scheduling program 300 displaces from a list in Assignments Lists 320, but cannot subsequently reassign to any of the N resources. When scheduling program 300 inserts a task into Discarded Tasks List 350, the task is referred to as a "discarded" task. Figure 6 is a flow chart of the steps performed by scheduling program 300 for assigning a new unassigned task to a set of resources, in accordance with an embodiment of the present invention. Scheduling program 300 determines whether there are any tasks in New Tasks List 330 (step 600). When scheduling program 300 determines that there is at least one task in New Tasks List 330, scheduling program 300 initializes Displaced Tasks List 340 and Discarded Tasks List 350 by, for example, setting each list to a null pointer (step 610).
As shown below in detail, scheduling program 300 then determines a displacement tree for assigning a new task in New Tasks List 330 to a resource (step 620). A displacement tree identifies zero or more assigned tasks that scheduling program 300 must, for example, unassign and/or reassign in order to assign the selected new task to a resource.
For example, Figures 7a-d illustrate the assignment of a new task E to a set of resources A, B, C, and D based on a displacement tree. Figure 7a shows resources A, B, C, and D and their respective assigned tasks before scheduling program 300 assigns task E, which resides in New Tasks List 330, to one of the resources A-D. As shown, tasks K, F, and G are assigned to resource A; tasks H and I are assigned to resource B; task J is assigned to resource C, and task L is assigned to resource D. As shown by dotted arrows, to assign task E to resource A, scheduling program 300 displaces tasks F and G from resource A's assignments. To reassign the displaced task F to resource B, scheduling program 300 then displaces tasks H and I from resource B's assignments. To reassign the displaced task G to resource C, scheduling program 300 displaces task J from resource C's assignments. Finally, to reassign the displaced tasks H and I to resources D and A, respectively, scheduling program 300 displaces tasks L and K from resource D's and A's assignments, respectively.
The above steps of displacing the assigned tasks F, G, H, I, J, L, and K may be represented as a displacement tree, which is shown in Figure 7b. From the set of displaced tasks F, G, H, I, J, L, and K, scheduling program 300 reassigns tasks F, G, H, and I to resources B, C, D, and A, respectively. As shown in Figure 7c, scheduling program 300, however, adds the displaced tasks J, K, and L to Displaced Tasks List 340, as these tasks are not reassigned. Figure 7d shows the new assignments resulting from displacements of tasks F, G, H, I, J, L, and K. As shown, tasks I and E are assigned to resource A; task F is assigned to resource B, task G is assigned to resource G; and task H is assigned to resource D. Referring back to Figure 6, after determining a displacement tree (step 610), scheduling program 300 determines an objective function value associated with the new assignments resulting from the determined displacement tree. Scheduling program 300 then determines whether the determined objective function value associated with the new assignments is greater than or equal to the objective function value associated with the current assignments (step 620).
The objective function value may be determined based on, for example, the number of tasks assigned to the set of resources, the total weight of the assigned tasks as determined by, for example, the priorities of the assigned tasks, the total duration of the assigned tasks, the number of assigned tasks that are assigned to preferred resources as determined by, for example, the qualifications of the resources, the number of deadlines missed because of unassigned tasks, and/or the total travel time for dispatching a resource to perform an assigned task.
If scheduling program 300 determines that the determined objective function value associated with the new assignments is not greater than or equal to the objective function value associated with the current assignments, scheduling program 300 removes the selected new task from New Tasks List 330 (step 640).
If scheduling program 300 determines that the determined objective function value associated with the new assignments is greater than or equal to the objective function value associated with the current assignments, scheduling program 300 sets the current assignments to the new assignments by modifying Assignments Lists 320 according to the new assignments (step 650).
Scheduling program 300 then determines the number of tasks in New Tasks List 330 that are assigned to resources based on the determined displacement tree (step 660). Finally, scheduling program 300 transfers one or more tasks from Displaced Tasks List 340 and/or Discarded Tasks List 350 to New Tasks List 330, where the number of transferred tasks equals, for example, one less than the determined number of tasks assigned in step 660 (step 670). Finally, scheduling program 300 repeats steps 600-670 for the next task in New Tasks Lists 330 until there are no more tasks in New Tasks Lists (step 605).
Figure 8 is a flow chart of the steps performed by scheduling program 300 for determining a displacement tree (shown as step 610 in Figure 6), in accordance with an embodiment of the present invention. Scheduling program 300 selects a task from New Tasks List 330 or Displaced Tasks List 800 (step 800). Scheduling program 300 then identifies a list of candidate resources that can perform the selected task (step 805). The candidate resources may be identified based on, for example, the qualifications of the resources and/or some function of the relation of the selected task, for example geographical proximity, to other tasks assigned to the candidate resources.
For each identified candidate resource (step 810), scheduling program 300 performs steps 815-850 as described below. Scheduling program 300 selects a candidate resource from the candidate resource list (step 815). Scheduling program 300 then determines whether the selected task can be assigned to the selected candidate resource by possibly displacing one or more assigned tasks from the selected candidate resource's assignments (step 820).
If scheduling program 300 determines that the selected task can be assigned to the selected candidate resource, scheduling program 300 adds any resulting displaced tasks from the candidate resource's assignments to Displaced Tasks Lists 340 (step 825). Otherwise, if scheduling program 300 determines that the selected task cannot be assigned to the selected candidate resource, scheduling program 300 determines whether one or more predetermined search thresholds are exceeded (step 850).
The search thresholds may include, for example, a limit on the number of candidate resources scheduling program 300 considers before assigning to a resource a selected task from New Tasks List 330, a limit on the number of tasks in Displaced Tasks List 340, a limit on the depth of each displacement tree, a limit on the number of tasks displaced from Assignments Lists 320 by a selected task, and/or a limit on the total duration of assigned tasks displaced from Assignments Lists 320 by a selected task.
After adding any resulting displaced tasks from the candidate resource's assignments to Displaced Tasks Lists 340 (step 825), scheduling program 300 determines an objective function value associated with the new assignments resulting from assigning the selected task to the selected candidate resource (step 830). If the determined objective function value is greater than or equal to the objective function value associated with the best displacement tree determined up to this step, scheduling program 300 saves the current displacement tree, which includes one or more assigned tasks that are to be displaced from the selected candidate resources 's assignments to Displaced Tasks List 340 (step 835).
Scheduling program 300 then determines a displacement tree for the next task in New Tasks List 330 and/or continues to build the current displacement tree for the next task in Displaced Tasks List 340, subject to the above-mentioned predetermined search thresholds (step 840). Scheduling program 300 may determine the displacement tree and continue building the current displacement tree by, for example, recursively performing the steps 800-875. After performing one or more recursions, scheduling program 300 has determined a displacement tree for assigning the selected task to the selected candidate resource and for displacing zero or more assigned tasks from Assignment Lists 320.
After recursively performing the steps 800-875, scheduling program 300 backtracks any new assignments made up to this step based on the current displacement tree (step 845). For example, scheduling program 300 unassigns any new assignments made based on the current displacement tree, and restores Displaced Tasks List 340 and Discarded Tasks List 350 to their respective state prior to recursively performing the steps 800-875.
Scheduling program 300 then determines whether it has exceeded one or more of the predetermined search thresholds (step 850). For example, if scheduling program 300 determines the number of candidate resources that are considered for the selected task does not exceed a predetermined threshold, scheduling program 300 considers the next candidate resource for assigning the selected task, and performs the steps 815-850 as described above.
If scheduling program 300 determines number of candidate resources that are selected for the selected task exceeds the predetermined threshold and the selected task has not been successfully assigned to a candidate resource, scheduling program 300 determines whether the selected task is in Displaced Tasks List 350 (step 855). If scheduling program 300 determines that the selected task is not in Displaced Tasks List 350, scheduling program 300 returns the selected task to the list from which it was selected (step 875).
If scheduling program 300 determines that the selected task is in Displaced Tasks List 350, scheduling program 300 adds the selected task to Discarded Tasks List 350 (step 860). Scheduling program 300 then determines a displacement tree for the next task in New Tasks List 330 and/or continues to build the current displacement tree for the next task in Displaced Tasks List 340 by, for example recursively performing the steps 800-875, subject to the predetermined search thresholds (step 865).
After recursively performing the steps 800-875, scheduling program 300 removes the selected task from Discarded Tasks List 350 (step 870). Finally, scheduling program 300 returns the selected task to the list from which it was selected at step 800. While it has been illustrated and described what are at present considered to be preferred embodiments and methods of the present invention, it will be understood by those skilled in the art that various changes and modifications may be made, and equivalents may be substituted for elements thereof without departing from the true scope of the invention. In addition, many modifications may be made to adapt a particular element, technique or implementation to the teachings of the present invention without departing from the central scope of the invention. Therefore, it is intended that this invention not be limited to the particular embodiments and methods disclosed herein, but that the invention include all embodiments falling within the scope of the appended claims.

Claims

1. A method for assigning a task to a set of resources having a first plurality of assignments that include a set of assigned tasks, said method comprising the steps of: determining, subject to one or more predetermined thresholds, a displacement tree; displacing from the first plurality of assignments one or more of the set of assigned tasks according to the displacement tree; and assigning the task to one of the set of resources, such that an objective function value associated with a second plurality of assignments that include the assigned task is greater than or equal to an objective function value associated with the first plurality of assignments.
2. The method of claim 1 , wherein the determining step comprises the steps of: selecting one or more of the set of resources; determining a set of displacement trees based on the selected resources, respectively; determining new sets of assignments based on the set of displacement trees, respectively; determining objective function values associated with the sets of new assignments, respectively; and selecting from the set of displacement trees a displacement tree with the highest objective function value.
3. The method of claim 1, wherein the determining step comprises the steps of: a) selecting a first one of the set of resources; b) assigning the task to the selected resource, such that one or more of the assigned tasks that are associated with the selected first resource are displaced; c) building a first displacement tree that includes the displaced tasks; d) determining an objective function value associated with the first displacement tree; e) storing the first displacement tree when the determined objective function value is greater than or equal to an objective function value associated with a second displacement tree; f) recursively assigning the displaced tasks to the set of resources and expanding the first displacement tree based on the assigning of the displaced tasks; and g) backtracking assignments that are associated with the recursively built first displacement tree.
4. The method of claim 1, wherein the displacing step comprises the steps of: unassigning one or more of the set of assigned tasks; and reassigning one or more of the unassigned tasks to the set of resources, such that the objective function value associated with the reassigned tasks and the assigned task is greater than or equal to the objective function value associated with the set of assigned tasks.
5. The method of claim 3 further comprising the steps of: after the backtracking step, selecting a second one of the set of resources; and performing the steps b, c, d, e, f, and g based on the selected second resource.
6. A system for assigning a task to a set of resources having a first plurality of assignments that include a set of assigned tasks, comprising: a scheduling program for determining, subject to one or more predetermined thresholds, a displacement tree, and for displacing from the first plurality of assignments one or more of the set of assigned tasks according to the displacement tree, and for assigning the task to one of the set of resources, such that an objective function value associated with a second plurality of assignments that include the assigned task is greater than or equal to an objective function value associated with the first plurality of assignments; and a processor for executing the scheduling program.
7. A computer-readable medium capable of configuring a computer to perform a method for assigning a task to a set of resources having a first plurality of assignments that include a set of assigned tasks, said method comprising the steps of: determining, subject to one or more predetermined thresholds, a displacement tree; displacing from the first plurality of assignments one or more of the set of assigned tasks according to the displacement tree; and assigning the task to one of the set of resources, such that an objective function value associated with a second plurality of assignments that include the assigned task is greater than or equal to an objective function value associated with the first plurality of assignments.
PCT/US2000/026301 1999-10-01 2000-09-25 Method and system for assignment of tasks to resources using displacement trees WO2001025991A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US41101499A 1999-10-01 1999-10-01
US09/411,014 1999-10-01

Publications (2)

Publication Number Publication Date
WO2001025991A1 WO2001025991A1 (en) 2001-04-12
WO2001025991A9 true WO2001025991A9 (en) 2002-10-03

Family

ID=23627202

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2000/026301 WO2001025991A1 (en) 1999-10-01 2000-09-25 Method and system for assignment of tasks to resources using displacement trees

Country Status (1)

Country Link
WO (1) WO2001025991A1 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1683082A1 (en) 2003-09-30 2006-07-26 Telecom Italia S.p.A. Method and system for tuning a task scheduling process.
GB2433675B (en) 2005-12-22 2008-05-07 Cramer Systems Ltd Communications circuit design

Also Published As

Publication number Publication date
WO2001025991A1 (en) 2001-04-12

Similar Documents

Publication Publication Date Title
US7203943B2 (en) Dynamic allocation of processing tasks using variable performance hardware platforms
Zhao et al. A window protocol for transmission of time-constrained messages
KR100509794B1 (en) Method of scheduling jobs using database management system for real-time processing
US7945466B2 (en) Scheduling system
US7339948B2 (en) Industrial controller providing deterministic communication on ethernet
EP0326671B1 (en) A computer system and a method of monitoring transient data structures of a computer system
US8386287B2 (en) Resource management using constraint programming with efficient ordering of variables
JPH06202882A (en) Method and system for trouble diagnaosis
WO2003025784A2 (en) Method of scheduling in a reconfigurable hardware architecture with multiple hardware configurations
US20090282413A1 (en) Scalable Scheduling of Tasks in Heterogeneous Systems
US7721289B2 (en) System and method for dynamic allocation of computers in response to requests
JP2005536791A (en) Dynamic multilevel task management method and apparatus
JPH01251258A (en) Shared area managing system in network system
JPH02247768A (en) Dispersed processing system
JP5628222B2 (en) Scheduler
CN107977275B (en) Task processing method based on message queue and related equipment
US6912712B1 (en) Real time control system for multitasking digital signal processor using ready queue
CN112650449B (en) Method and system for releasing cache space, electronic device and storage medium
CA2631255A1 (en) Scalable scheduling of tasks in heterogeneous systems
US11093291B2 (en) Resource assignment using CDA protocol in distributed processing environment based on task bid and resource cost
CN113268331A (en) Robot calling method, robot calling device, management system and storage medium
WO2001025991A9 (en) Method and system for assignment of tasks to resources using displacement trees
US6598105B1 (en) Interrupt arbiter for a computing system
CN113849295A (en) Model training method and device and computer readable storage medium
CN112363819A (en) Big data task dynamic scheduling method and device and computing equipment

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): CA JP

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
AK Designated states

Kind code of ref document: C2

Designated state(s): CA JP

AL Designated countries for regional patents

Kind code of ref document: C2

Designated state(s): AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE

COP Corrected version of pamphlet

Free format text: PAGES 1/8-8/8, DRAWINGS, REPLACED BY NEW PAGES 1/7-7/7; DUE TO LATE TRANSMITTAL BY THE RECEIVING OFFICE

122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase in:

Ref country code: JP