US20060190943A1 - System and a method for scheduling tasks - Google Patents
System and a method for scheduling tasks Download PDFInfo
- Publication number
- US20060190943A1 US20060190943A1 US11/062,726 US6272605A US2006190943A1 US 20060190943 A1 US20060190943 A1 US 20060190943A1 US 6272605 A US6272605 A US 6272605A US 2006190943 A1 US2006190943 A1 US 2006190943A1
- Authority
- US
- United States
- Prior art keywords
- task
- tasks
- priority
- priority group
- unscheduled
- Prior art date
- Legal status (The legal status 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 status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 38
- 230000003287 optical effect Effects 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000013468 resource allocation Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4887—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
Definitions
- the present invention relates generally to scheduling, and more particularly to a system and a method for scheduling tasks.
- Computer implemented planning and scheduling systems are widely used for transportation, manufacturing, resource allocation, and supply planning functions.
- such systems can schedule resources for implementing tasks based on a set of constraints associated with each task, and an available schedule time period that the resources will be available.
- each task may need a set of specific resources that its needs to use within a specific task time range.
- a scheduling system will determine which tasks are scheduled, and the scheduling time interval within the scheduled time period for the scheduled tasks. Since there are limited resources available for a limited time period, many tasks remain unscheduled. However, time intervals that are less than the time duration of unscheduled tasks remain available. Therefore, full utilization of the available resources for the available schedule time period is not achieved.
- each task is assigned value points.
- a user associated with the task can bid on resources and/or time intervals associated with an available schedule time period.
- the user that bids the most value points on a given resource and/or time interval is assigned the given resource and/or time interval.
- the users that are outbid will have to bid on other resources and/or time intervals for the associated tasks. However, if the remaining resources and/or time intervals are outside the set of constraints associated with a given task, the task will remain unscheduled, while time intervals within the available schedule time period still remain.
- the present invention relates to a system and method for scheduling tasks.
- One embodiment comprises a system that includes an initial scheduler that schedules a plurality of tasks of an associated priority group within an available schedule time period based on an earliest possible end time of a task duration of a respective task, such that tasks that have a task duration that overlap task durations of scheduled tasks are unscheduled tasks.
- the system further includes a reintroduction scheduler that moves scheduled tasks within respective task time ranges to create time interval gaps for the unscheduled tasks, wherein an unscheduled task is scheduled by the reintroduction scheduler if an unscheduled task has a task duration that falls within an available time interval gap and a task time range that overlaps the available time interval gap.
- the computer executable components comprise a priority group selector algorithm that sequentially provides task priority groups based on higher priority to lower priority task priority groups.
- the computer executable components further comprise a greedy algorithm that schedules a plurality of tasks of an associated priority group within an available schedule time period based on an earliest possible end time of a task duration of a respective task.
- the computer executable components further comprise a reintroduction scheduler algorithm that receives schedule tasks and unscheduled tasks from the greedy algorithm.
- the reintroduction scheduler algorithm determines if scheduled tasks can be shifted within associated task time ranges to create time interval gaps for the unscheduled tasks, wherein an unscheduled task is scheduled by the reintroduction scheduler if an unscheduled task has a task duration that falls within an available time interval gap and a task time range that overlaps the available time interval gap.
- Another embodiment of the invention relates to a method for scheduling tasks.
- the method comprises assigning priorities to tasks defining a plurality of task priority groups, selecting a task priority group from the plurality of task priority groups, and scheduling tasks within an available schedule time period from the selected task priority group based on an earliest possible end time of a task duration of each associated task.
- the method further comprises reintroducing unscheduled tasks of the selected task priority group by moving scheduled tasks within respective task time ranges to create time interval gaps to create a revised schedule, wherein an unscheduled task is scheduled if an unscheduled task has a task duration that falls within an available time interval gap and a task time range that overlaps the available time interval gap.
- FIG. 1 illustrates a block diagram of a system for scheduling tasks in accordance with an aspect of the present invention.
- FIGS. 2-7 illustrate scheduling of tasks of different priorities within an available schedule time period employing the system of FIG. 1 .
- FIG. 8 illustrates a graph of execution units of time for scheduling tasks versus the number of tasks to be scheduled.
- FIG. 9 illustrates a methodology for scheduling tasks in accordance with an aspect of the present invention.
- FIG. 10 illustrates an embodiment of a computer system.
- the present invention relates to a system and method for scheduling tasks.
- the tasks can be tasks associated with manufacturing, shipping, transportation, resource allocation, bandwidth allocation, sensors or a variety of other task types.
- the system and method schedule tasks based on priority constraints.
- Each task is assigned a predetermined priority (e.g., highest priority, middle priority, lowest priority) defining a plurality of task priority groups.
- each task has a task duration constraint and a task time range constraint.
- the task duration constraint is the amount of time that it will take for the task to be completed based on possible start times and possible end times
- the task time range constraint is the allowable window or range of time for performing the task.
- the task time range is greater than or equal to the task duration.
- a group of tasks having a predetermined first priority are assigned time intervals within an available schedule time period by an initial scheduler based on an earliest possible end time associated with its respective task duration.
- the initial scheduler can schedule tasks based on the earliest possible end times, until all tasks with task durations that do not overlap are scheduled.
- the scheduled tasks and the unscheduled tasks are provided to a reintroduction scheduler.
- the reintroduction scheduler determines if the scheduled tasks can be moved within a task window or time range to provide time interval gaps, so that unscheduled tasks of a given priority can be scheduled within the time interval gaps.
- the initial scheduling and reintroduction scheduling is repeated for task groups of a next priority, until an attempt has been made to schedule tasks of each task priority group.
- FIG. 1 illustrates a scheduling system 10 for scheduling a plurality of tasks in accordance with an aspect of the present invention.
- the scheduling system 10 can be implemented in software, hardware or a combination thereof.
- the scheduling system 10 can be, for example, a computer system or software algorithms that execute on a computer readable medium.
- the scheduling system 10 includes a plurality of task priority groups 12 labeled task priority group #1 through task priority group #N, where N is an integer greater than or equal to one.
- the scheduling system includes a priority group selector 14 that selects tasks of a given priority to provide to an initial scheduler 16 .
- the priority group selector 14 selects tasks from a first priority group (e.g., task priority group #1), which may be tasks that have been defined as tasks of a highest priority.
- a first priority group e.g., task priority group #1
- the initial scheduler 16 schedules tasks of the first priority group based on the earliest possible end times of a task duration associated with a given task, until all tasks that have task durations that do not overlap based on earliest possible end times are scheduled.
- the initial scheduler 16 can employ a best-first technique, such as a greedy algorithm, where the best task is the task that has the earliest possible end time. The remaining tasks that have task durations that overlap scheduled tasks are unscheduled tasks.
- the scheduled tasks and the unscheduled tasks are provided to a reintroduction scheduler 18 .
- the reintroduction scheduler 18 determines if the scheduled tasks can be moved within a task window or time range to provide time interval gaps, so that unscheduled tasks of the first priority group having task durations less than the time interval gaps with task time ranges that overlap the time interval gaps can be scheduled within the time interval gaps.
- a revised schedule of tasks is provided to the initial scheduler 16 that includes any reintroduced previous unscheduled tasks that have now been scheduled associated with the first priority group. Any remaining unscheduled tasks of the first priority group are then removed.
- the reintroduction scheduler 18 provides a next priority group indication to the priority group selector 14 .
- the priority group selector 14 then provides tasks associated with a second task priority group (e.g., task priority group #2), such as tasks of a next lower priority than the first task priority group to the initial scheduler 16 .
- a second task priority group e.g.,
- the initial scheduler 16 attempts to schedule tasks associated with the second task priority group into the revised schedule of tasks that includes tasks scheduled from the first priority group.
- the initial scheduler 16 schedules tasks of the second priority group based on the earliest possible end times and the task duration into appropriate available time intervals in the revised schedule of tasks, until all tasks from the second task priority group that have task durations that do not overlap scheduled tasks of the first task priority group and the second task priority group are scheduled.
- the remaining tasks of the second priority group that have task durations that overlap scheduled tasks of the first task priority group and the second task priority group are unscheduled tasks.
- the scheduled tasks of the first priority group and the second priority group and the unscheduled tasks of the second priority group are provided to the reintroduction scheduler 18 .
- the reintroduction scheduler 18 determines if the scheduled tasks of the first priority group and the second priority group can be moved within a task window or time range associated with a given task to provide time interval gaps, so that unscheduled tasks of the second priority can be scheduled within the time interval gaps.
- a revised schedule of tasks is provided to the initial scheduler 16 that includes any reintroduced unscheduled tasks that have now been scheduled associated with the second task priority group. Any remaining unscheduled tasks of the second priority group are then removed.
- the reintroduction scheduler 18 provides a next priority group indication to the priority group selector 14 .
- the priority group selector 14 can then provide tasks associated with a next task priority group (e.g., tasks of a next lower priority) to the initial scheduler 16 .
- the process of selecting tasks of a priority group, initial scheduling of the tasks of the selected priority group in time intervals of the available schedule time period, and reintroducing tasks of the selected priority group is repeated for each of the N task priority groups.
- the scheduling system 10 can generate a final schedule that includes each task and its associated start time and end time within the available schedule time period.
- FIGS. 2-7 illustrate scheduling of tasks of different priorities within an available schedule time period 40 employing the system 10 illustrated in FIG. 1 .
- the available schedule time period 40 begins at time T 0 and ends at time TF.
- the priority group selector 14 provides a task priority group (P 1 ) to the initial scheduler 16 .
- the task priority group P 1 includes a task A of a task duration 50 with a task time range 52 , a task B of a task duration 60 with a task time range 62 , and a task C of a task duration 70 with a task time range 72 .
- the initial scheduler 16 schedules task A and task B based on the earliest possible end times of the respective task duration.
- task C remains unscheduled since the beginning of its task duration 70 overlaps with the task duration 50 of task A based on its earliest possible end time.
- the scheduled tasks and the unscheduled tasks of the first priority group P 1 are then provided to the reintroduction scheduler 18 .
- the reintroduction scheduler 18 moves the task duration 70 of unscheduled task C within its task time range 72 , so that the task duration 70 of task C has a start time that begins after an end time of the task duration 50 of scheduled task A.
- the revised schedule is then provided to the initial scheduler 16 .
- the priority group selector 14 provides a task priority group (P 2 ) to the initial scheduler 16 .
- the task priority group P 2 includes a task D having a task duration 80 with a task time range 82 .
- the initial scheduler 16 cannot schedule task D since the earliest possible end time of its task duration 80 overlaps with the task duration 60 of task B of the first priority group P 1 .
- the scheduled tasks of the first priority group P 1 and the unscheduled task of the second priority P 2 are then provided to the reintroduction scheduler 18 .
- the reintroduction scheduler 18 moves the task duration 60 of scheduled task B within its task time range 62 , so that the task D has an end time of its task duration 80 that ends before a start time of the task duration 60 of scheduled task B.
- the reintroduction scheduler 18 could move the task duration 80 of unscheduled task D within its task time range 82 , so that the task D has a start time of its task duration 80 that begins after an end time of the task duration 60 of scheduled task B.
- the revised schedule is then provided to the initial scheduler 16 .
- the priority group selector 14 provides a task priority group (P 3 ) to the initial scheduler 16 .
- the task priority group P 3 includes a task E having a task duration 90 with a task time range 92 . As illustrated in FIG. 6 , the initial scheduler 16 cannot schedule task E since the end time of its task duration 90 overlaps with the task duration 80 of scheduled task D of the second priority group P 2 . The scheduled tasks of the first priority group P 1 and second priority group P 2 and the unscheduled task of the third priority P 3 are then provided to the reintroduction scheduler 18 .
- the reintroduction scheduler 18 moves the task duration 60 of scheduled task B within its task time range 62 , and moves the task duration 80 of scheduled task D within its task range 82 , so that the task E has a task duration 90 with an end time that ends before a start time of a task duration 80 of scheduled task D. Additionally, this removes any overlap between task D and task B, since task D has a task duration 80 with an end time that ends before a start time of the task duration 60 of task B. Assuming that there is not any additional priority task groups to schedule, the scheduling system 10 will output the final schedule with tasks A-E scheduled within the available schedule time period 40 . It is to be appreciated that the tasks A-E of FIGS. 2-7 are provided for illustrative purposes, and that the scheduling system 10 can be employed to schedule hundreds or thousands of tasks.
- FIG. 8 illustrates a graph 100 of execution units of time for scheduling tasks versus the number of tasks to be scheduled.
- the execution units of time for example, can be based on a clock cycle time period associated with a processor executing instruction on a computer system, and can be in microseconds, nanoseconds or picoseconds.
- the graph 100 illustrates a first line or curve 102 associated with scheduling of tasks employing the scheduling system of the present invention versus a second line 104 associated with scheduling tasks employing a conventional scheduler system.
- the execution units of time associated with scheduling tasks employing a conventional scheduler system has a N 2 relationship, where N is the number of tasks, such that the number of execution units of time required to schedule tasks is substantially equal to the number of tasks squared.
- the execution units of time associated with scheduling tasks employing the scheduler system of the present invention has a linear relationship, such that the number of execution units of time required to schedule tasks is substantially equal to the number of tasks to be scheduled. For example, employing the scheduler system of the present invention for scheduling 1,000 tasks will take approximately 1,000 units of execution time, while employing a conventional scheduler to schedule 1,000 tasks will take approximately 1,000,000 units of execution time. Therefore, as the number of tasks to be scheduled increases, the execution time savings associated with employing the scheduler system of the present invention substantially increases.
- FIG. 9 illustrates a methodology for scheduling tasks in accordance with an aspect of the present invention.
- the methodology begins at 120 where a plurality of tasks are assigned priorities defining a plurality of task priority groups of varying priority (e.g., high priority, medium priority, low priority). Each task includes a task duration constraint and a task time range constraint.
- the methodology selects tasks from a selected task priority group. For example, task priority groups can be selected based on highest priority to lowest priority in sequential order, such that higher priority tasks are scheduled before lower priority tasks employing a priority group selector algorithm.
- the methodology then proceeds to 140 .
- tasks associated with the selected task priority group are scheduled based on tasks that have task durations with the earliest possible end time, such that tasks with the earliest possible end time are scheduled first.
- a best-first scheduler can be employed, such as a greedy algorithm that schedules tasks based on the earliest possible end times.
- Tasks that have a task duration e.g., based on its earliest possible end time and corresponding start time
- an attempt is made to reintroduce the unscheduled tasks into the schedule by moving scheduled tasks within respective task time ranges.
- a reintroduction algorithm can be employed that determines which tasks can be shifted based on the task duration and task time range to create time interval gaps within the scheduled tasks that allow for the scheduling of the unscheduled tasks based on the task duration and task time range of the unscheduled tasks.
- the unscheduled tasks that can be scheduled are then scheduled into available time interval gaps.
- the remaining unscheduled tasks are removed.
- a revised schedule is generated. The methodology then proceeds to 170 .
- the methodology determines if there are any additional priority groups to be scheduled or if an attempt has been made to schedule the last priority group. If an attempt has been made to schedule the last priority group (YES), the methodology proceeds to 180 to output a final schedule. If an attempt has not been made to schedule the last priority group (NO), the methodology returns to 130 to select another task priority group for scheduling.
- the methodology schedules tasks associated with the subsequently selected task priority group in the revised schedule that includes schedule tasks of one or more other priority groups based on earliest possible end times of the associated task duration of the tasks at 140 .
- the methodology then reintroduces the unscheduled tasks of the subsequently selected priority groups by moving schedule tasks within respective task time ranges. A new revised schedule is generated in 160 .
- the methodology repeats the steps of 130 - 170 until an attempt has been made to initially schedule and reintroduce task from each task priority group.
- FIG. 10 illustrates a computer system 200 that can be employed to implement systems and methods described herein, such as based on computer executable instructions running on the computer system.
- the computer system 200 can be implemented on one or more general purpose networked computer systems, embedded computer systems, routers, switches, server devices, client devices, various intermediate devices/nodes and/or stand alone computer systems. Additionally, the computer system 200 can be implemented as part of the computer-aided engineering (CAE) tool running computer executable instructions to perform a method as described herein.
- CAE computer-aided engineering
- the computer system 200 includes a processor 202 and a system memory 204 .
- a system bus 206 couples various system components, including the system memory 204 to the processor 202 . Dual microprocessors and other multi-processor architectures can also be utilized as the processor 202 .
- the system bus 206 can be implemented as any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures.
- the system memory 204 includes read only memory (ROM) 208 and random access memory (RAM) 210 .
- a basic input/output system (BIOS) 212 can reside in the ROM 208 , generally containing the basic routines that help to transfer information between elements within the computer system 200 , such as a reset or power-up.
- the computer system 200 can include a hard disk drive 214 , a magnetic disk drive 216 , e.g., to read from or write to a removable disk 218 , and an optical disk drive 220 , e.g., for reading a CD-ROM or DVD disk 222 or to read from or write to other optical media.
- the hard disk drive 214 , magnetic disk drive 216 , and optical disk drive 220 are connected to the system bus 206 by a hard disk drive interface 224 , a magnetic disk drive interface 226 , and an optical drive interface 228 , respectively.
- the drives and their associated computer-readable media provide nonvolatile storage of data, data structures, and computer-executable instructions for the computer system 200 .
- computer-readable media refers to a hard disk, a removable magnetic disk and a CD
- other types of media which are readable by a computer may also be used.
- computer executable instructions for implementing systems and methods described herein may also be stored in magnetic cassettes, flash memory cards, digital video disks and the like.
- a number of program modules may also be stored in one or more of the drives as well as in the RAM 210 , including an operating system 230 , one or more application programs 232 , other program modules 234 , and program data 236 .
- a user may enter commands and information into the computer system 200 through user input device 240 , such as a keyboard, a pointing device (e.g., a mouse).
- Other input devices may include a microphone, a joystick, a game pad, a scanner, a touch screen, or the like.
- These and other input devices are often connected to the processor 202 through a corresponding interface or bus 242 that is coupled to the system bus 206 .
- Such input devices can alternatively be connected to the system bus 206 by other interfaces, such as a parallel port, a serial port or a universal serial bus (USB).
- One or more output device(s) 244 such as a visual display device or printer, can also be connected to the system bus 206 via an interface or adapter 246 .
- the computer system 200 may operate in a networked environment using logical connections 248 to one or more remote computers 250 .
- the remote computer 250 may be a workstation, a computer system, a router, a peer device or other common network node, and typically includes many or all of the elements described relative to the computer system 200 .
- the logical connections 248 can include a local area network (LAN) and a wide area network (WAN).
- the computer system 200 can be connected to a local network through a network interface 252 .
- the computer system 200 can include a modem (not shown), or can be connected to a communications server via a LAN.
- application programs 232 and program data 236 depicted relative to the computer system 200 may be stored in memory 254 of the remote computer 250 .
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
Description
- The present invention relates generally to scheduling, and more particularly to a system and a method for scheduling tasks.
- Computer implemented planning and scheduling systems are widely used for transportation, manufacturing, resource allocation, and supply planning functions. In general, such systems can schedule resources for implementing tasks based on a set of constraints associated with each task, and an available schedule time period that the resources will be available. For example, each task may need a set of specific resources that its needs to use within a specific task time range. A scheduling system will determine which tasks are scheduled, and the scheduling time interval within the scheduled time period for the scheduled tasks. Since there are limited resources available for a limited time period, many tasks remain unscheduled. However, time intervals that are less than the time duration of unscheduled tasks remain available. Therefore, full utilization of the available resources for the available schedule time period is not achieved.
- In an auction based scheduling algorithm, each task is assigned value points. A user associated with the task can bid on resources and/or time intervals associated with an available schedule time period. The user that bids the most value points on a given resource and/or time interval is assigned the given resource and/or time interval. The users that are outbid will have to bid on other resources and/or time intervals for the associated tasks. However, if the remaining resources and/or time intervals are outside the set of constraints associated with a given task, the task will remain unscheduled, while time intervals within the available schedule time period still remain.
- The present invention relates to a system and method for scheduling tasks. One embodiment comprises a system that includes an initial scheduler that schedules a plurality of tasks of an associated priority group within an available schedule time period based on an earliest possible end time of a task duration of a respective task, such that tasks that have a task duration that overlap task durations of scheduled tasks are unscheduled tasks. The system further includes a reintroduction scheduler that moves scheduled tasks within respective task time ranges to create time interval gaps for the unscheduled tasks, wherein an unscheduled task is scheduled by the reintroduction scheduler if an unscheduled task has a task duration that falls within an available time interval gap and a task time range that overlaps the available time interval gap.
- Another embodiment of the present invention relates to a computer readable medium having computer executable components. The computer executable components comprise a priority group selector algorithm that sequentially provides task priority groups based on higher priority to lower priority task priority groups. The computer executable components further comprise a greedy algorithm that schedules a plurality of tasks of an associated priority group within an available schedule time period based on an earliest possible end time of a task duration of a respective task. The computer executable components further comprise a reintroduction scheduler algorithm that receives schedule tasks and unscheduled tasks from the greedy algorithm. The reintroduction scheduler algorithm determines if scheduled tasks can be shifted within associated task time ranges to create time interval gaps for the unscheduled tasks, wherein an unscheduled task is scheduled by the reintroduction scheduler if an unscheduled task has a task duration that falls within an available time interval gap and a task time range that overlaps the available time interval gap.
- Another embodiment of the invention relates to a method for scheduling tasks. The method comprises assigning priorities to tasks defining a plurality of task priority groups, selecting a task priority group from the plurality of task priority groups, and scheduling tasks within an available schedule time period from the selected task priority group based on an earliest possible end time of a task duration of each associated task. The method further comprises reintroducing unscheduled tasks of the selected task priority group by moving scheduled tasks within respective task time ranges to create time interval gaps to create a revised schedule, wherein an unscheduled task is scheduled if an unscheduled task has a task duration that falls within an available time interval gap and a task time range that overlaps the available time interval gap.
-
FIG. 1 illustrates a block diagram of a system for scheduling tasks in accordance with an aspect of the present invention. -
FIGS. 2-7 illustrate scheduling of tasks of different priorities within an available schedule time period employing the system ofFIG. 1 . -
FIG. 8 illustrates a graph of execution units of time for scheduling tasks versus the number of tasks to be scheduled. -
FIG. 9 illustrates a methodology for scheduling tasks in accordance with an aspect of the present invention. -
FIG. 10 illustrates an embodiment of a computer system. - The present invention relates to a system and method for scheduling tasks. The tasks can be tasks associated with manufacturing, shipping, transportation, resource allocation, bandwidth allocation, sensors or a variety of other task types. The system and method schedule tasks based on priority constraints. Each task is assigned a predetermined priority (e.g., highest priority, middle priority, lowest priority) defining a plurality of task priority groups. Additionally, each task has a task duration constraint and a task time range constraint. The task duration constraint is the amount of time that it will take for the task to be completed based on possible start times and possible end times, and the task time range constraint is the allowable window or range of time for performing the task. The task time range is greater than or equal to the task duration.
- In one aspect of the invention, a group of tasks having a predetermined first priority (e.g., a highest priority task) are assigned time intervals within an available schedule time period by an initial scheduler based on an earliest possible end time associated with its respective task duration. For example, the initial scheduler can schedule tasks based on the earliest possible end times, until all tasks with task durations that do not overlap are scheduled. The scheduled tasks and the unscheduled tasks are provided to a reintroduction scheduler. The reintroduction scheduler determines if the scheduled tasks can be moved within a task window or time range to provide time interval gaps, so that unscheduled tasks of a given priority can be scheduled within the time interval gaps. The initial scheduling and reintroduction scheduling is repeated for task groups of a next priority, until an attempt has been made to schedule tasks of each task priority group.
-
FIG. 1 illustrates ascheduling system 10 for scheduling a plurality of tasks in accordance with an aspect of the present invention. Thescheduling system 10 can be implemented in software, hardware or a combination thereof. Thescheduling system 10 can be, for example, a computer system or software algorithms that execute on a computer readable medium. Thescheduling system 10 includes a plurality oftask priority groups 12 labeled taskpriority group # 1 through task priority group #N, where N is an integer greater than or equal to one. The scheduling system includes apriority group selector 14 that selects tasks of a given priority to provide to aninitial scheduler 16. For example, thepriority group selector 14 selects tasks from a first priority group (e.g., task priority group #1), which may be tasks that have been defined as tasks of a highest priority. - The
initial scheduler 16 schedules tasks of the first priority group based on the earliest possible end times of a task duration associated with a given task, until all tasks that have task durations that do not overlap based on earliest possible end times are scheduled. Theinitial scheduler 16 can employ a best-first technique, such as a greedy algorithm, where the best task is the task that has the earliest possible end time. The remaining tasks that have task durations that overlap scheduled tasks are unscheduled tasks. - The scheduled tasks and the unscheduled tasks are provided to a
reintroduction scheduler 18. Thereintroduction scheduler 18 determines if the scheduled tasks can be moved within a task window or time range to provide time interval gaps, so that unscheduled tasks of the first priority group having task durations less than the time interval gaps with task time ranges that overlap the time interval gaps can be scheduled within the time interval gaps. A revised schedule of tasks is provided to theinitial scheduler 16 that includes any reintroduced previous unscheduled tasks that have now been scheduled associated with the first priority group. Any remaining unscheduled tasks of the first priority group are then removed. Thereintroduction scheduler 18 provides a next priority group indication to thepriority group selector 14. Thepriority group selector 14 then provides tasks associated with a second task priority group (e.g., task priority group #2), such as tasks of a next lower priority than the first task priority group to theinitial scheduler 16. - The
initial scheduler 16 attempts to schedule tasks associated with the second task priority group into the revised schedule of tasks that includes tasks scheduled from the first priority group. Theinitial scheduler 16 schedules tasks of the second priority group based on the earliest possible end times and the task duration into appropriate available time intervals in the revised schedule of tasks, until all tasks from the second task priority group that have task durations that do not overlap scheduled tasks of the first task priority group and the second task priority group are scheduled. The remaining tasks of the second priority group that have task durations that overlap scheduled tasks of the first task priority group and the second task priority group are unscheduled tasks. - The scheduled tasks of the first priority group and the second priority group and the unscheduled tasks of the second priority group are provided to the
reintroduction scheduler 18. Thereintroduction scheduler 18 determines if the scheduled tasks of the first priority group and the second priority group can be moved within a task window or time range associated with a given task to provide time interval gaps, so that unscheduled tasks of the second priority can be scheduled within the time interval gaps. A revised schedule of tasks is provided to theinitial scheduler 16 that includes any reintroduced unscheduled tasks that have now been scheduled associated with the second task priority group. Any remaining unscheduled tasks of the second priority group are then removed. Thereintroduction scheduler 18 provides a next priority group indication to thepriority group selector 14. Thepriority group selector 14 can then provide tasks associated with a next task priority group (e.g., tasks of a next lower priority) to theinitial scheduler 16. - The process of selecting tasks of a priority group, initial scheduling of the tasks of the selected priority group in time intervals of the available schedule time period, and reintroducing tasks of the selected priority group is repeated for each of the N task priority groups. Once the process is completed on each task priority group, the
scheduling system 10 can generate a final schedule that includes each task and its associated start time and end time within the available schedule time period. -
FIGS. 2-7 illustrate scheduling of tasks of different priorities within an availableschedule time period 40 employing thesystem 10 illustrated inFIG. 1 . The availableschedule time period 40 begins at time T0 and ends at time TF. Thepriority group selector 14 provides a task priority group (P1) to theinitial scheduler 16. The task priority group P1 includes a task A of atask duration 50 with atask time range 52, a task B of atask duration 60 with atask time range 62, and a task C of atask duration 70 with atask time range 72. As illustrated inFIG. 2 , theinitial scheduler 16 schedules task A and task B based on the earliest possible end times of the respective task duration. However, task C remains unscheduled since the beginning of itstask duration 70 overlaps with thetask duration 50 of task A based on its earliest possible end time. The scheduled tasks and the unscheduled tasks of the first priority group P1 are then provided to thereintroduction scheduler 18. - As illustrated in
FIG. 3 , thereintroduction scheduler 18 moves thetask duration 70 of unscheduled task C within itstask time range 72, so that thetask duration 70 of task C has a start time that begins after an end time of thetask duration 50 of scheduled task A. The revised schedule is then provided to theinitial scheduler 16. Thepriority group selector 14 provides a task priority group (P2) to theinitial scheduler 16. The task priority group P2 includes a task D having atask duration 80 with atask time range 82. As illustrated inFIG. 4 , theinitial scheduler 16 cannot schedule task D since the earliest possible end time of itstask duration 80 overlaps with thetask duration 60 of task B of the first priority group P1. The scheduled tasks of the first priority group P1 and the unscheduled task of the second priority P2 are then provided to thereintroduction scheduler 18. - As illustrated in
FIG. 5 , thereintroduction scheduler 18 moves thetask duration 60 of scheduled task B within itstask time range 62, so that the task D has an end time of itstask duration 80 that ends before a start time of thetask duration 60 of scheduled task B. Alternatively, thereintroduction scheduler 18 could move thetask duration 80 of unscheduled task D within itstask time range 82, so that the task D has a start time of itstask duration 80 that begins after an end time of thetask duration 60 of scheduled task B. The revised schedule is then provided to theinitial scheduler 16. Thepriority group selector 14 provides a task priority group (P3) to theinitial scheduler 16. The task priority group P3 includes a task E having atask duration 90 with atask time range 92. As illustrated inFIG. 6 , theinitial scheduler 16 cannot schedule task E since the end time of itstask duration 90 overlaps with thetask duration 80 of scheduled task D of the second priority group P2. The scheduled tasks of the first priority group P1 and second priority group P2 and the unscheduled task of the third priority P3 are then provided to thereintroduction scheduler 18. - As illustrated in
FIG. 7 , thereintroduction scheduler 18 moves thetask duration 60 of scheduled task B within itstask time range 62, and moves thetask duration 80 of scheduled task D within itstask range 82, so that the task E has atask duration 90 with an end time that ends before a start time of atask duration 80 of scheduled task D. Additionally, this removes any overlap between task D and task B, since task D has atask duration 80 with an end time that ends before a start time of thetask duration 60 of task B. Assuming that there is not any additional priority task groups to schedule, thescheduling system 10 will output the final schedule with tasks A-E scheduled within the availableschedule time period 40. It is to be appreciated that the tasks A-E ofFIGS. 2-7 are provided for illustrative purposes, and that thescheduling system 10 can be employed to schedule hundreds or thousands of tasks. -
FIG. 8 illustrates agraph 100 of execution units of time for scheduling tasks versus the number of tasks to be scheduled. The execution units of time, for example, can be based on a clock cycle time period associated with a processor executing instruction on a computer system, and can be in microseconds, nanoseconds or picoseconds. Thegraph 100 illustrates a first line orcurve 102 associated with scheduling of tasks employing the scheduling system of the present invention versus asecond line 104 associated with scheduling tasks employing a conventional scheduler system. As illustrated in thesecond line 104 of the graph, the execution units of time associated with scheduling tasks employing a conventional scheduler system has a N2 relationship, where N is the number of tasks, such that the number of execution units of time required to schedule tasks is substantially equal to the number of tasks squared. - As illustrated in the
first line 102 of the graph, the execution units of time associated with scheduling tasks employing the scheduler system of the present invention has a linear relationship, such that the number of execution units of time required to schedule tasks is substantially equal to the number of tasks to be scheduled. For example, employing the scheduler system of the present invention for scheduling 1,000 tasks will take approximately 1,000 units of execution time, while employing a conventional scheduler to schedule 1,000 tasks will take approximately 1,000,000 units of execution time. Therefore, as the number of tasks to be scheduled increases, the execution time savings associated with employing the scheduler system of the present invention substantially increases. - In view of the foregoing structural and functional features described above, a method will be better appreciated with reference to
FIG. 9 . It is to be understood and appreciated that the illustrated actions, in other embodiments, may occur in different orders and/or concurrently with other actions. Moreover, not all illustrated features may be required to implement a method. It is to be further understood that the following methodologies can be implemented in hardware (e.g., a computer or a computer network as one or more integrated circuits or circuit boards containing one or more microprocessors), software (e.g., as executable instructions running on one or more processors of a computer system), or any combination thereof. -
FIG. 9 illustrates a methodology for scheduling tasks in accordance with an aspect of the present invention. The methodology begins at 120 where a plurality of tasks are assigned priorities defining a plurality of task priority groups of varying priority (e.g., high priority, medium priority, low priority). Each task includes a task duration constraint and a task time range constraint. At 130, the methodology selects tasks from a selected task priority group. For example, task priority groups can be selected based on highest priority to lowest priority in sequential order, such that higher priority tasks are scheduled before lower priority tasks employing a priority group selector algorithm. The methodology then proceeds to 140. - At 140, tasks associated with the selected task priority group are scheduled based on tasks that have task durations with the earliest possible end time, such that tasks with the earliest possible end time are scheduled first. For example, a best-first scheduler can be employed, such as a greedy algorithm that schedules tasks based on the earliest possible end times. Tasks that have a task duration (e.g., based on its earliest possible end time and corresponding start time) that overlap tasks that have been scheduled remain unscheduled. At 150, an attempt is made to reintroduce the unscheduled tasks into the schedule by moving scheduled tasks within respective task time ranges. For example, a reintroduction algorithm can be employed that determines which tasks can be shifted based on the task duration and task time range to create time interval gaps within the scheduled tasks that allow for the scheduling of the unscheduled tasks based on the task duration and task time range of the unscheduled tasks. The unscheduled tasks that can be scheduled are then scheduled into available time interval gaps. The remaining unscheduled tasks are removed. At 160, a revised schedule is generated. The methodology then proceeds to 170.
- At 170, the methodology determines if there are any additional priority groups to be scheduled or if an attempt has been made to schedule the last priority group. If an attempt has been made to schedule the last priority group (YES), the methodology proceeds to 180 to output a final schedule. If an attempt has not been made to schedule the last priority group (NO), the methodology returns to 130 to select another task priority group for scheduling. The methodology schedules tasks associated with the subsequently selected task priority group in the revised schedule that includes schedule tasks of one or more other priority groups based on earliest possible end times of the associated task duration of the tasks at 140. The methodology then reintroduces the unscheduled tasks of the subsequently selected priority groups by moving schedule tasks within respective task time ranges. A new revised schedule is generated in 160. The methodology repeats the steps of 130-170 until an attempt has been made to initially schedule and reintroduce task from each task priority group.
-
FIG. 10 illustrates acomputer system 200 that can be employed to implement systems and methods described herein, such as based on computer executable instructions running on the computer system. Thecomputer system 200 can be implemented on one or more general purpose networked computer systems, embedded computer systems, routers, switches, server devices, client devices, various intermediate devices/nodes and/or stand alone computer systems. Additionally, thecomputer system 200 can be implemented as part of the computer-aided engineering (CAE) tool running computer executable instructions to perform a method as described herein. - The
computer system 200 includes aprocessor 202 and asystem memory 204. Asystem bus 206 couples various system components, including thesystem memory 204 to theprocessor 202. Dual microprocessors and other multi-processor architectures can also be utilized as theprocessor 202. Thesystem bus 206 can be implemented as any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. Thesystem memory 204 includes read only memory (ROM) 208 and random access memory (RAM) 210. A basic input/output system (BIOS) 212 can reside in theROM 208, generally containing the basic routines that help to transfer information between elements within thecomputer system 200, such as a reset or power-up. - The
computer system 200 can include ahard disk drive 214, amagnetic disk drive 216, e.g., to read from or write to aremovable disk 218, and anoptical disk drive 220, e.g., for reading a CD-ROM orDVD disk 222 or to read from or write to other optical media. Thehard disk drive 214,magnetic disk drive 216, andoptical disk drive 220 are connected to thesystem bus 206 by a harddisk drive interface 224, a magneticdisk drive interface 226, and anoptical drive interface 228, respectively. The drives and their associated computer-readable media provide nonvolatile storage of data, data structures, and computer-executable instructions for thecomputer system 200. Although the description of computer-readable media above refers to a hard disk, a removable magnetic disk and a CD, other types of media which are readable by a computer, may also be used. For example, computer executable instructions for implementing systems and methods described herein may also be stored in magnetic cassettes, flash memory cards, digital video disks and the like. - A number of program modules may also be stored in one or more of the drives as well as in the
RAM 210, including anoperating system 230, one ormore application programs 232,other program modules 234, andprogram data 236. - A user may enter commands and information into the
computer system 200 throughuser input device 240, such as a keyboard, a pointing device (e.g., a mouse). Other input devices may include a microphone, a joystick, a game pad, a scanner, a touch screen, or the like. These and other input devices are often connected to theprocessor 202 through a corresponding interface orbus 242 that is coupled to thesystem bus 206. Such input devices can alternatively be connected to thesystem bus 206 by other interfaces, such as a parallel port, a serial port or a universal serial bus (USB). One or more output device(s) 244, such as a visual display device or printer, can also be connected to thesystem bus 206 via an interface oradapter 246. - The
computer system 200 may operate in a networked environment usinglogical connections 248 to one or moreremote computers 250. Theremote computer 250 may be a workstation, a computer system, a router, a peer device or other common network node, and typically includes many or all of the elements described relative to thecomputer system 200. Thelogical connections 248 can include a local area network (LAN) and a wide area network (WAN). - When used in a LAN networking environment, the
computer system 200 can be connected to a local network through anetwork interface 252. When used in a WAN networking environment, thecomputer system 200 can include a modem (not shown), or can be connected to a communications server via a LAN. In a networked environment,application programs 232 andprogram data 236 depicted relative to thecomputer system 200, or portions thereof, may be stored inmemory 254 of theremote computer 250. - What have been described above are examples of the present invention. It is, of course, not possible to describe every conceivable combination of components or methodologies for purposes of describing the present invention, but one of ordinary skill in the art will recognize that many further combinations and permutations of the present invention are possible. Accordingly, the present invention is intended to embrace all such alterations, modifications and variations that fall within the spirit and scope of the appended claims.
Claims (20)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/062,726 US7793294B2 (en) | 2005-02-22 | 2005-02-22 | System for scheduling tasks within an available schedule time period based on an earliest possible end time of the task |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/062,726 US7793294B2 (en) | 2005-02-22 | 2005-02-22 | System for scheduling tasks within an available schedule time period based on an earliest possible end time of the task |
Publications (2)
Publication Number | Publication Date |
---|---|
US20060190943A1 true US20060190943A1 (en) | 2006-08-24 |
US7793294B2 US7793294B2 (en) | 2010-09-07 |
Family
ID=36914364
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/062,726 Expired - Fee Related US7793294B2 (en) | 2005-02-22 | 2005-02-22 | System for scheduling tasks within an available schedule time period based on an earliest possible end time of the task |
Country Status (1)
Country | Link |
---|---|
US (1) | US7793294B2 (en) |
Cited By (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060059491A1 (en) * | 2001-08-30 | 2006-03-16 | Hitachi, Ltd. | Controller and operating system |
US20070072629A1 (en) * | 2005-09-29 | 2007-03-29 | Lg Electronics Inc. | Mobile terminal for managing schedule and method therefor |
US20070150815A1 (en) * | 2005-12-22 | 2007-06-28 | Microsoft Corporation | Program execution service windows |
US20080098395A1 (en) * | 2006-10-23 | 2008-04-24 | Backer Bryan L | System and method of expediting certain jobs in a computer processing system |
US20080114638A1 (en) * | 2006-11-10 | 2008-05-15 | Inspection Management Systems, Inc. | Parameter-based appointment scheduling system and method |
US20080141267A1 (en) * | 2006-12-07 | 2008-06-12 | Sundaram Anand N | Cooperative scheduling of multiple partitions in a single time window |
US20080235697A1 (en) * | 2007-03-20 | 2008-09-25 | Akihiro Kobayashi | Job scheduler, job scheduling method, and job control program storage medium |
US20090025004A1 (en) * | 2007-07-16 | 2009-01-22 | Microsoft Corporation | Scheduling by Growing and Shrinking Resource Allocation |
US20090089786A1 (en) * | 2005-10-12 | 2009-04-02 | Makoto Saen | Semiconductor integrated circuit device for real-time processing |
US20090100433A1 (en) * | 2007-10-12 | 2009-04-16 | Electronics And Telecommunications Research Institute | Disk scheduling method and apparatus |
US20090164288A1 (en) * | 2005-08-25 | 2009-06-25 | Hiroshi Kojima | Scheduling Apparatus, Scheduling Method and Recording Medium |
US20090177671A1 (en) * | 2008-01-03 | 2009-07-09 | Accenture Global Services Gmbh | System and method for automating etl application |
US20090183162A1 (en) * | 2008-01-15 | 2009-07-16 | Microsoft Corporation | Priority Based Scheduling System for Server |
US20090245519A1 (en) * | 2008-03-28 | 2009-10-01 | Christian Cachin | Renewal management for data items |
US20100077400A1 (en) * | 2008-09-19 | 2010-03-25 | Oracle International Corporation | Task-optimizing calendar system |
US20110088037A1 (en) * | 2009-10-13 | 2011-04-14 | Roman Glistvain | Single-stack real-time operating system for embedded systems |
US8149698B1 (en) * | 2006-01-09 | 2012-04-03 | Genband Us Llc | Providing a schedule for active events to be processed by a processor |
US20120089730A1 (en) * | 2009-06-26 | 2012-04-12 | Nokia Siemens Networks Oy | Modifying command sequences |
US20120283863A1 (en) * | 2011-05-02 | 2012-11-08 | Interface Technologies | Resource scheduling and adaptive control software for cutting room operations |
US20130018953A1 (en) * | 2011-07-12 | 2013-01-17 | Salesforce.Com, Inc. | Method and system for presenting a meeting in a cloud computing environment |
US20130198429A1 (en) * | 2012-02-01 | 2013-08-01 | Sundeep Chandhoke | Bus Arbitration for a Real-Time Computer System |
US20130283284A1 (en) * | 2012-03-22 | 2013-10-24 | Nec Corporation | Operation management apparatus, operation management method and operation management program |
WO2015013760A1 (en) * | 2013-07-29 | 2015-02-05 | Skedgo Pty Ltd | Free time activity scheduler |
US9069610B2 (en) | 2010-10-13 | 2015-06-30 | Microsoft Technology Licensing, Llc | Compute cluster with balanced resources |
US20160103677A1 (en) * | 2014-10-14 | 2016-04-14 | John Eric Melski | System and method for optimizing job scheduling within program builds |
US20160299786A1 (en) * | 2015-04-10 | 2016-10-13 | Microsoft Technology Licensing, Llc | Code examination by scheduler timeline manipulation |
EP3104274A1 (en) * | 2015-06-11 | 2016-12-14 | Honeywell International Inc. | Systems and methods for scheduling tasks using sliding time windows |
US20170178048A1 (en) * | 2015-12-22 | 2017-06-22 | Microsoft Technology Licensing, Llc | Identification and presentation of tasks based on predicted periods of user availability |
US20170228254A1 (en) * | 2016-02-08 | 2017-08-10 | Microsoft Technology Licensing, Llc | Thread diversion awaiting log call return |
WO2017167105A1 (en) * | 2016-03-31 | 2017-10-05 | 阿里巴巴集团控股有限公司 | Task-resource scheduling method and device |
CN107885589A (en) * | 2017-11-22 | 2018-04-06 | 链家网(北京)科技有限公司 | A kind of job scheduling method and device |
US10108690B1 (en) * | 2013-06-06 | 2018-10-23 | Amazon Technologies, Inc. | Rolling subpartition management |
CN110727509A (en) * | 2019-09-24 | 2020-01-24 | 浙江大搜车软件技术有限公司 | Task scheduling method and device, computer equipment and storage medium |
KR20210013212A (en) * | 2018-05-30 | 2021-02-03 | 어드밴스드 마이크로 디바이시즈, 인코포레이티드 | Multi-kernel wavefront scheduler |
CN112817721A (en) * | 2021-01-29 | 2021-05-18 | 中国平安财产保险股份有限公司 | Task scheduling method and device based on artificial intelligence, computer equipment and medium |
JP2021077180A (en) * | 2019-11-12 | 2021-05-20 | 富士通株式会社 | Job scheduling program, information processing apparatus, and job scheduling method |
US20220045915A1 (en) * | 2016-04-22 | 2022-02-10 | Aveva Software, Llc | Consolidating manufacturing intelligence event queue items |
WO2022095358A1 (en) * | 2020-11-06 | 2022-05-12 | 平安科技(深圳)有限公司 | Task scheduling method and apparatus, electronic device, and readable storage medium |
US11544106B2 (en) | 2017-05-30 | 2023-01-03 | Advanced Micro Devices, Inc. | Continuation analysis tasks for GPU task scheduling |
US12062126B2 (en) | 2021-09-29 | 2024-08-13 | Advanced Micro Devices, Inc. | Load multiple primitives per thread in a graphics pipeline |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090007132A1 (en) * | 2003-10-03 | 2009-01-01 | International Business Machines Corporation | Managing processing resources in a distributed computing environment |
JP5157355B2 (en) * | 2007-10-05 | 2013-03-06 | 富士ゼロックス株式会社 | Processing request control apparatus and program |
US8560371B2 (en) * | 2008-09-26 | 2013-10-15 | Microsoft Corporation | Suggesting things to do during time slots in a schedule |
US8245234B2 (en) | 2009-08-10 | 2012-08-14 | Avaya Inc. | Credit scheduler for ordering the execution of tasks |
US8392926B2 (en) * | 2010-04-06 | 2013-03-05 | International Business Machines Corporation | Scheduling heterogeneous partitioned resources with sharing constraints |
US20120005682A1 (en) * | 2010-06-30 | 2012-01-05 | International Business Machines Corporation | Holistic task scheduling for distributed computing |
US9003414B2 (en) * | 2010-10-08 | 2015-04-07 | Hitachi, Ltd. | Storage management computer and method for avoiding conflict by adjusting the task starting time and switching the order of task execution |
CN103870327A (en) * | 2012-12-18 | 2014-06-18 | 华为技术有限公司 | Real-time multitask scheduling method and device |
US20160140473A1 (en) * | 2013-06-14 | 2016-05-19 | Ensemble Partners Pty Limited | Creating and displaying a work sequence |
US9911087B1 (en) | 2014-09-18 | 2018-03-06 | Servicenow, Inc. | System and method for efficient travel time and route computation |
US10726366B2 (en) * | 2015-04-14 | 2020-07-28 | International Business Machines Corporation | Scheduling and simulation system |
TWI584667B (en) | 2015-11-27 | 2017-05-21 | 財團法人工業技術研究院 | Method for request scheduling and scheduling device |
US20200394572A1 (en) * | 2019-06-12 | 2020-12-17 | Toshiba Tec Kabushiki Kaisha | Reservation order processing system and reservation order processing method |
Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4896269A (en) * | 1988-02-29 | 1990-01-23 | General Electric Company | Job shop scheduling and production method and apparatus |
US5848403A (en) * | 1996-10-04 | 1998-12-08 | Bbn Corporation | System and method for genetic algorithm scheduling systems |
US5943652A (en) * | 1994-02-25 | 1999-08-24 | 3M Innovative Properties Company | Resource assignment and scheduling system |
US6233493B1 (en) * | 1998-09-16 | 2001-05-15 | I2 Technologies, Inc. | Computer-implemented product development planning method |
US6456996B1 (en) * | 1998-06-05 | 2002-09-24 | I2 Technologies Us, Inc. | Computer implemented scheduling system and process using abstract local search technique |
US20030018762A1 (en) * | 2001-06-01 | 2003-01-23 | Mullen David C. | Arrangement for forecasting timely completion of a task by a resource |
US20030037091A1 (en) * | 2001-08-09 | 2003-02-20 | Kozo Nishimura | Task scheduling device |
US20030041087A1 (en) * | 2000-03-31 | 2003-02-27 | Dionisios Pothos | Handling unscheduled tasks in a scheduling process |
US6578005B1 (en) * | 1996-11-22 | 2003-06-10 | British Telecommunications Public Limited Company | Method and apparatus for resource allocation when schedule changes are incorporated in real time |
US6606529B1 (en) * | 2000-06-09 | 2003-08-12 | Frontier Technologies, Inc. | Complex scheduling method and device |
US20040059451A1 (en) * | 2002-09-19 | 2004-03-25 | John Holtan | Demand-driven scheduling system and method |
US20040199415A1 (en) * | 1998-04-01 | 2004-10-07 | Ho William P.C. | Method for scheduling transportation resources |
US20040236503A1 (en) * | 2003-05-23 | 2004-11-25 | Lyakir Vitaliy L. | Algorithmic functions for scheduling systems and methods to move transportation objects through a single route in skip-stop fashion |
US20060165029A1 (en) * | 2002-12-19 | 2006-07-27 | Koninklijke Philips Electronics N.V. | Protecting real-time data in wireless networks |
US7451447B1 (en) * | 1998-08-07 | 2008-11-11 | Arc International Ip, Inc. | Method, computer program and apparatus for operating system dynamic event management and task scheduling using function calls |
US7487105B2 (en) * | 2000-03-31 | 2009-02-03 | Mdsi Software Srl | Assigning customer orders to schedule openings utilizing overlapping time windows |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001069488A1 (en) | 2000-03-10 | 2001-09-20 | Jones Charles P | Vehicle scheduling system |
-
2005
- 2005-02-22 US US11/062,726 patent/US7793294B2/en not_active Expired - Fee Related
Patent Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4896269A (en) * | 1988-02-29 | 1990-01-23 | General Electric Company | Job shop scheduling and production method and apparatus |
US5943652A (en) * | 1994-02-25 | 1999-08-24 | 3M Innovative Properties Company | Resource assignment and scheduling system |
US5848403A (en) * | 1996-10-04 | 1998-12-08 | Bbn Corporation | System and method for genetic algorithm scheduling systems |
US6578005B1 (en) * | 1996-11-22 | 2003-06-10 | British Telecommunications Public Limited Company | Method and apparatus for resource allocation when schedule changes are incorporated in real time |
US20040199415A1 (en) * | 1998-04-01 | 2004-10-07 | Ho William P.C. | Method for scheduling transportation resources |
US6456996B1 (en) * | 1998-06-05 | 2002-09-24 | I2 Technologies Us, Inc. | Computer implemented scheduling system and process using abstract local search technique |
US7451447B1 (en) * | 1998-08-07 | 2008-11-11 | Arc International Ip, Inc. | Method, computer program and apparatus for operating system dynamic event management and task scheduling using function calls |
US6233493B1 (en) * | 1998-09-16 | 2001-05-15 | I2 Technologies, Inc. | Computer-implemented product development planning method |
US20030041087A1 (en) * | 2000-03-31 | 2003-02-27 | Dionisios Pothos | Handling unscheduled tasks in a scheduling process |
US7487105B2 (en) * | 2000-03-31 | 2009-02-03 | Mdsi Software Srl | Assigning customer orders to schedule openings utilizing overlapping time windows |
US6606529B1 (en) * | 2000-06-09 | 2003-08-12 | Frontier Technologies, Inc. | Complex scheduling method and device |
US20030018762A1 (en) * | 2001-06-01 | 2003-01-23 | Mullen David C. | Arrangement for forecasting timely completion of a task by a resource |
US20030037091A1 (en) * | 2001-08-09 | 2003-02-20 | Kozo Nishimura | Task scheduling device |
US20040059451A1 (en) * | 2002-09-19 | 2004-03-25 | John Holtan | Demand-driven scheduling system and method |
US20060165029A1 (en) * | 2002-12-19 | 2006-07-27 | Koninklijke Philips Electronics N.V. | Protecting real-time data in wireless networks |
US20040236503A1 (en) * | 2003-05-23 | 2004-11-25 | Lyakir Vitaliy L. | Algorithmic functions for scheduling systems and methods to move transportation objects through a single route in skip-stop fashion |
Cited By (67)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060059491A1 (en) * | 2001-08-30 | 2006-03-16 | Hitachi, Ltd. | Controller and operating system |
US20090164288A1 (en) * | 2005-08-25 | 2009-06-25 | Hiroshi Kojima | Scheduling Apparatus, Scheduling Method and Recording Medium |
US20070072629A1 (en) * | 2005-09-29 | 2007-03-29 | Lg Electronics Inc. | Mobile terminal for managing schedule and method therefor |
US7596382B2 (en) * | 2005-09-29 | 2009-09-29 | Lg Electronics Inc. | Mobile terminal for managing schedule and method therefor |
US7529874B2 (en) * | 2005-10-12 | 2009-05-05 | Renesas Technology Corp. | Semiconductor integrated circuit device for real-time processing |
US20090089786A1 (en) * | 2005-10-12 | 2009-04-02 | Makoto Saen | Semiconductor integrated circuit device for real-time processing |
US20070150815A1 (en) * | 2005-12-22 | 2007-06-28 | Microsoft Corporation | Program execution service windows |
US9195450B2 (en) * | 2005-12-22 | 2015-11-24 | Microsoft Technology Licensing, Llc | Program execution service windows |
US8495613B2 (en) * | 2005-12-22 | 2013-07-23 | Microsoft Corporation | Program execution service windows |
US20140165051A1 (en) * | 2005-12-22 | 2014-06-12 | Microsoft Corporation | Program execution service windows |
US8149698B1 (en) * | 2006-01-09 | 2012-04-03 | Genband Us Llc | Providing a schedule for active events to be processed by a processor |
US20080098395A1 (en) * | 2006-10-23 | 2008-04-24 | Backer Bryan L | System and method of expediting certain jobs in a computer processing system |
US7673305B2 (en) * | 2006-10-23 | 2010-03-02 | Hewlett-Packard Development Company, L.P. | System and method of expediting certain jobs in a computer processing system |
US20080114638A1 (en) * | 2006-11-10 | 2008-05-15 | Inspection Management Systems, Inc. | Parameter-based appointment scheduling system and method |
US8694999B2 (en) * | 2006-12-07 | 2014-04-08 | Wind River Systems, Inc. | Cooperative scheduling of multiple partitions in a single time window |
US20080141267A1 (en) * | 2006-12-07 | 2008-06-12 | Sundaram Anand N | Cooperative scheduling of multiple partitions in a single time window |
US20080235697A1 (en) * | 2007-03-20 | 2008-09-25 | Akihiro Kobayashi | Job scheduler, job scheduling method, and job control program storage medium |
US8413152B2 (en) * | 2007-03-20 | 2013-04-02 | Kyocera Mita Corporation | Job scheduler, job scheduling method, and job control program storage medium |
US20090025004A1 (en) * | 2007-07-16 | 2009-01-22 | Microsoft Corporation | Scheduling by Growing and Shrinking Resource Allocation |
US20090100433A1 (en) * | 2007-10-12 | 2009-04-16 | Electronics And Telecommunications Research Institute | Disk scheduling method and apparatus |
EP2079020A1 (en) * | 2008-01-03 | 2009-07-15 | Accenture Global Services GmbH | System amd method for automating ETL applications |
US20090177671A1 (en) * | 2008-01-03 | 2009-07-09 | Accenture Global Services Gmbh | System and method for automating etl application |
US8024369B2 (en) | 2008-01-03 | 2011-09-20 | Accenture Global Services Limited | System and method for automating ETL application |
US20090183162A1 (en) * | 2008-01-15 | 2009-07-16 | Microsoft Corporation | Priority Based Scheduling System for Server |
US8473956B2 (en) | 2008-01-15 | 2013-06-25 | Microsoft Corporation | Priority based scheduling system for server |
US8681990B2 (en) * | 2008-03-28 | 2014-03-25 | International Business Machines Corporation | Renewal management for data items |
US20090245519A1 (en) * | 2008-03-28 | 2009-10-01 | Christian Cachin | Renewal management for data items |
US8181181B2 (en) * | 2008-09-19 | 2012-05-15 | Oracle International Corporation | Task-optimizing calendar system |
US20100077400A1 (en) * | 2008-09-19 | 2010-03-25 | Oracle International Corporation | Task-optimizing calendar system |
US20120089730A1 (en) * | 2009-06-26 | 2012-04-12 | Nokia Siemens Networks Oy | Modifying command sequences |
US8209694B2 (en) * | 2009-10-13 | 2012-06-26 | Turck Holding Gmbh | Single-stack real-time operating system for embedded systems |
US20110088037A1 (en) * | 2009-10-13 | 2011-04-14 | Roman Glistvain | Single-stack real-time operating system for embedded systems |
US9069610B2 (en) | 2010-10-13 | 2015-06-30 | Microsoft Technology Licensing, Llc | Compute cluster with balanced resources |
US20120283863A1 (en) * | 2011-05-02 | 2012-11-08 | Interface Technologies | Resource scheduling and adaptive control software for cutting room operations |
US20130018953A1 (en) * | 2011-07-12 | 2013-01-17 | Salesforce.Com, Inc. | Method and system for presenting a meeting in a cloud computing environment |
US9071658B2 (en) * | 2011-07-12 | 2015-06-30 | Salesforce.Com, Inc. | Method and system for presenting a meeting in a cloud computing environment |
US20130198429A1 (en) * | 2012-02-01 | 2013-08-01 | Sundeep Chandhoke | Bus Arbitration for a Real-Time Computer System |
US8856415B2 (en) * | 2012-02-01 | 2014-10-07 | National Instruments Corporation | Bus arbitration for a real-time computer system |
US20130283284A1 (en) * | 2012-03-22 | 2013-10-24 | Nec Corporation | Operation management apparatus, operation management method and operation management program |
US10108690B1 (en) * | 2013-06-06 | 2018-10-23 | Amazon Technologies, Inc. | Rolling subpartition management |
US20160189111A1 (en) * | 2013-07-29 | 2016-06-30 | Skedgo Pty Ltd | Free time activity scheduler |
WO2015013760A1 (en) * | 2013-07-29 | 2015-02-05 | Skedgo Pty Ltd | Free time activity scheduler |
US20160103677A1 (en) * | 2014-10-14 | 2016-04-14 | John Eric Melski | System and method for optimizing job scheduling within program builds |
US10061577B2 (en) * | 2014-10-14 | 2018-08-28 | Electric Cloud, Inc. | System and method for optimizing job scheduling within program builds |
US20160299786A1 (en) * | 2015-04-10 | 2016-10-13 | Microsoft Technology Licensing, Llc | Code examination by scheduler timeline manipulation |
EP3104274A1 (en) * | 2015-06-11 | 2016-12-14 | Honeywell International Inc. | Systems and methods for scheduling tasks using sliding time windows |
CN106250218A (en) * | 2015-06-11 | 2016-12-21 | 霍尼韦尔国际公司 | For using the system and method for sliding time window scheduler task |
US11507420B2 (en) | 2015-06-11 | 2022-11-22 | Honeywell International Inc. | Systems and methods for scheduling tasks using sliding time windows |
US10768984B2 (en) | 2015-06-11 | 2020-09-08 | Honeywell International Inc. | Systems and methods for scheduling tasks using sliding time windows |
US20170178048A1 (en) * | 2015-12-22 | 2017-06-22 | Microsoft Technology Licensing, Llc | Identification and presentation of tasks based on predicted periods of user availability |
US20170228254A1 (en) * | 2016-02-08 | 2017-08-10 | Microsoft Technology Licensing, Llc | Thread diversion awaiting log call return |
US10140150B2 (en) * | 2016-02-08 | 2018-11-27 | Microsoft Technology Licensing, Llc | Thread diversion awaiting log call return |
US10936359B2 (en) | 2016-03-31 | 2021-03-02 | Alibaba Group Holding Limited | Task resource scheduling method and apparatus |
WO2017167105A1 (en) * | 2016-03-31 | 2017-10-05 | 阿里巴巴集团控股有限公司 | Task-resource scheduling method and device |
US20220045915A1 (en) * | 2016-04-22 | 2022-02-10 | Aveva Software, Llc | Consolidating manufacturing intelligence event queue items |
US11641312B2 (en) * | 2016-04-22 | 2023-05-02 | Aveva Software, Llc | Consolidating manufacturing intelligence event queue items |
US11544106B2 (en) | 2017-05-30 | 2023-01-03 | Advanced Micro Devices, Inc. | Continuation analysis tasks for GPU task scheduling |
CN107885589A (en) * | 2017-11-22 | 2018-04-06 | 链家网(北京)科技有限公司 | A kind of job scheduling method and device |
KR20210013212A (en) * | 2018-05-30 | 2021-02-03 | 어드밴스드 마이크로 디바이시즈, 인코포레이티드 | Multi-kernel wavefront scheduler |
KR102586988B1 (en) | 2018-05-30 | 2023-10-10 | 어드밴스드 마이크로 디바이시즈, 인코포레이티드 | Multi-kernel wavefront scheduler |
US12099867B2 (en) * | 2018-05-30 | 2024-09-24 | Advanced Micro Devices, Inc. | Multi-kernel wavefront scheduler |
CN110727509A (en) * | 2019-09-24 | 2020-01-24 | 浙江大搜车软件技术有限公司 | Task scheduling method and device, computer equipment and storage medium |
JP2021077180A (en) * | 2019-11-12 | 2021-05-20 | 富士通株式会社 | Job scheduling program, information processing apparatus, and job scheduling method |
CN112860390A (en) * | 2019-11-12 | 2021-05-28 | 富士通株式会社 | Job scheduling program, information processing apparatus, and job scheduling method |
WO2022095358A1 (en) * | 2020-11-06 | 2022-05-12 | 平安科技(深圳)有限公司 | Task scheduling method and apparatus, electronic device, and readable storage medium |
CN112817721A (en) * | 2021-01-29 | 2021-05-18 | 中国平安财产保险股份有限公司 | Task scheduling method and device based on artificial intelligence, computer equipment and medium |
US12062126B2 (en) | 2021-09-29 | 2024-08-13 | Advanced Micro Devices, Inc. | Load multiple primitives per thread in a graphics pipeline |
Also Published As
Publication number | Publication date |
---|---|
US7793294B2 (en) | 2010-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7793294B2 (en) | System for scheduling tasks within an available schedule time period based on an earliest possible end time of the task | |
US11106495B2 (en) | Techniques to dynamically partition tasks | |
US10223166B2 (en) | Scheduling homogeneous and heterogeneous workloads with runtime elasticity in a parallel processing environment | |
US8839260B2 (en) | Automated cloud workload management in a map-reduce environment | |
JP6553203B2 (en) | Idle time software garbage collection | |
Tumanov et al. | alsched: Algebraic scheduling of mixed workloads in heterogeneous clouds | |
US8869159B2 (en) | Scheduling MapReduce jobs in the presence of priority classes | |
US20070294197A1 (en) | System for Method for Providing Intelligent Pre-Staging of Data in a Compute Environment | |
Yao et al. | LsPS: A job size-based scheduler for efficient task assignments in Hadoop | |
US8484649B2 (en) | Amortizing costs of shared scans | |
US10031781B2 (en) | Estimating job start times on workload management systems | |
US20140137122A1 (en) | Modified backfill scheduler and a method employing frequency control to reduce peak cluster power requirements | |
US9104496B2 (en) | Submitting operations to a shared resource based on busy-to-success ratios | |
Gainaru et al. | Speculative scheduling for stochastic HPC applications | |
Liu et al. | High-responsive scheduling with MapReduce performance prediction on hadoop YARN | |
Bril et al. | Best-case response times and jitter analysis of real-time tasks with arbitrary deadlines | |
Castro et al. | Greedy algorithm for scheduling batch plants with sequence‐dependent changeovers | |
US20160299787A1 (en) | System, method and managing device | |
US11372649B2 (en) | Flow control for multi-threaded access to contentious resource(s) | |
Chin et al. | Adaptive service scheduling for workflow applications in service-oriented grid | |
England et al. | A stochastic control model for deployment of dynamic grid services | |
Wang et al. | Millipedes: Distributed and set-based sub-task scheduler of computing engines running on yarn cluster | |
Qiao et al. | An online workflow scheduling algorithm considering license limitation in heterogeneous environment | |
Spear et al. | A queue simulation tool for a high performance scientific computing center | |
Wu | A Step Toward Supporting Long-Running Applications with Real-Time Constraints on Hybrid Clouds |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: NORTHROP GRUMMAN CORPORATION, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:HAERI, BIJAN;REEL/FRAME:016316/0881 Effective date: 20050216 |
|
AS | Assignment |
Owner name: NORTHROP GRUMMAN SPACE & MISSION SYSTEMS CORP.,CAL Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:NORTHROP GRUMMAN CORPORTION;REEL/FRAME:023699/0551 Effective date: 20091125 Owner name: NORTHROP GRUMMAN SPACE & MISSION SYSTEMS CORP., CA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:NORTHROP GRUMMAN CORPORTION;REEL/FRAME:023699/0551 Effective date: 20091125 |
|
FEPP | Fee payment procedure |
Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
AS | Assignment |
Owner name: NORTHROP GRUMMAN SYSTEMS CORPORATION,CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:NORTHROP GRUMMAN SPACE & MISSION SYSTEMS CORP.;REEL/FRAME:023915/0446 Effective date: 20091210 Owner name: NORTHROP GRUMMAN SYSTEMS CORPORATION, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:NORTHROP GRUMMAN SPACE & MISSION SYSTEMS CORP.;REEL/FRAME:023915/0446 Effective date: 20091210 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552) Year of fee payment: 8 |
|
FEPP | Fee payment procedure |
Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
LAPS | Lapse for failure to pay maintenance fees |
Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STCH | Information on status: patent discontinuation |
Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362 |
|
FP | Lapsed due to failure to pay maintenance fee |
Effective date: 20220907 |