Scheduling system
A scheduler combines characteristics of a forward and backward schedulers to determine a schedule for activities that require the use of resources. The system handles conflicting requirements for resources by considering target dates and the relative priority of the activities. As a result, higher priority activities are more likely to be scheduled to complete on or before their target date than are lower priority activities.
Latest Kinaxis Inc. Patents:
This application claims priority to provisional application Ser. No. 60/580581, filed Jun. 17, 2004, which is incorporated herein by reference.
FIELD OF INVENTIONThis invention relates to a scheduling system, e.g., for scheduling business operations and processes, supply chain planning and management, or manufacturing planning and management.
BACKGROUNDOne approach for scheduling activities and resources with a scheduling system has been to use an optimization to determine a schedule. In this approach, an expression, generally called a cost function, is defined. The cost function processor computes a single quantity as a weighted sum of characteristics of the quality of the schedule. An optimization program is then run to find the schedule that results in the minimum or maximum value of the cost function. Such optimizers typically require many evaluations of potential solutions to find the optimal schedule, although some are designed to limit their number of iterations and find a good solution in less time. In any case, optimizers tend to require a considerable amount of time to run.
Another approach is generally known as heuristic scheduling. A heuristic scheduler employs a set of rules or a strategy to find a solution. Two known heuristic scheduling approaches are known as forward scheduling and a backward scheduling. In a forward scheduler, resources are allocated forward in time from some starting point. In a backward scheduler, resources are allocated first from a target date needed to complete on time, and if there are not enough resources available at that date, then resources are allocated at progressively earlier dates either until sufficient resources have been allocated or a starting limit is reached.
SUMMARYEmbodiments are disclosed for a scheduling system that combines characteristics of a forward and backward scheduler to determine a schedule for activities that require the use of resources. The processes and systems handle conflicting requirements for resources by considering target dates and the relative priority of the activities. The result is that higher priority activities are more likely to be scheduled to complete on or before their target date than are lower priority activities. Higher priority activities should be scheduled to be generally on time at the expense of lower priority activities.
A processor makes a number of passes through the set of activities as defined in storage. This number can be a predetermined number of passes, or can be determined based on a rule or criteria. The system can produce its schedule more quickly than in some prior systems. Other features and advantages will become apparent from the following detailed description, drawings, and claims.
BRIEF DESCRIPTION OF DRAWINGS
Referring to
Activities and resources can vary significantly in kind and character, depending on the type of problem that is being addressed. A resource could be a vehicle or vessel in a shipping context, or a factory, production line, individual machine, or an individual in a manufacturing environment. Activities can include shipping, manufacturing, processing, testing, assembling, or any of a number activities, such as those in a manufacturing, shipping, or other business environment.
The scheduler can be implemented with a processor for processing data related to the activities and resources. The data, including data relating to activities and resources, is preferably kept in RAM memory, but could also be kept in any other suitable memory or storage for holding data such as magnetic or optical disks. The memory can be onsite or offsite and remote. The processing can be performed by any appropriate combination of processing hardware and software, including a suitably programmed general purpose computer, a special purpose computer, such as an application specific integrated circuit, or any other processor, controller, or logical array, whether implemented in a stand-alone computer, a network, a cluster of computers, or other configuration. Aspects of the scheduler that are implemented in software can be stored in any suitable computer-readable memory, including on a magnetic or optical disk. The resulting schedule can indicate the activities and resources, along with times the resources are used, and can be printed out, displayed on an interface, and/or provided to various locations with instructions as a result of the schedule. The effect of the scheduling system and process is an improved schedule that helps ensure that higher priority activities are performed on time.
The scheduling system here can be used to make products that are substantially unique, such as custom buses or large computer systems, or it can be used for making larger quantities of systems, such as personal computers or cellular telephones. These can be made in one way, a few defined ways, or can have many options. In the case of personal computers, for example, a company may offer many different options for a user, such as different sizes of hard drives, CD or DVD options, different preloaded software, different microprocessors and memory, and different types of housings. Scheduling can be used to coordinate when components arrive and how they are assembled and tested to meet desired due dates. The system can be used to schedule items made from individual components, and also for intermediate processing of subassemblies and combinations of components and subassemblies. A diagram of a configuration of components and sub-assemblies is shown, for example, in FIG. 2 of U.S. application Ser. No. 10/438,932, filed May 16, 2003, and published Nov. 20, 2003, the entirety of which application is hereby incorporated by reference.
The following information would typically be known in advance: the resources required by each alternative resource set, the date by which it is desired for the activity to be completed, and the availability of prerequisites and limitations to the activities. The system and process determine a schedule in an efficient manner. The schedule can further be re-calculated when an aspect of an activity or resource availability changes.
As shown in
As shown in
As shown in
When looking for more than one resource, control settings (rules) can determine how to handle requirements for more than one resource. Possible rules include (1) a minimum amount of every resource is required before any resource can be used in a period, (2) resources can be allocated whenever any resource is available, (3) resources are allocated in a particular sequence, (4) resources may be allocated simultaneously across each resource only in the same amount for each resource, and/or (5) combinations of the above choices.
In performing the scheduling function, it may be the case that not every activity can be completed by the desired due date. In such a case, however, it is desirable to try to insure that relatively higher priority items are completed on time by the desired due date, and that relatively lower priority items are the ones that are allowed to be late. For example, some items may have a firm and necessary due date, while others may have a desirable date that is not necessarily required.
Backward Schedule
Referring to
As shown in
-
- Priority. One or more characteristics of the activity that determine a relative priority for an activity. More than one activity can have the same priority. Priorities should be sortable so that higher priority activities are seen before lower priority activities.
- Target Period. The latest period in which resources could be allocated to the activity and still have the activity complete on time. A period can be any defined time, such as a day, hour, or minute.
- Other data. Use additional keys for sorting to ensure that the activities will be processed in the same order if the scheduler is re-run. The additional sort keys can be used to ensure that there is a unique sort order for the activities or that duplicates are truly indistinguishable from each other.
As an example, several activities could have a priority defined as 1s, while others can have priority defined as 2s or 3s. The list is arranged so that the 1s are listed first, and within each of the 1s, the activities are arranged by Target Period, starting with the earliest target. Other data can be provided as desired as a further sort following the Target Period.
Referring also to
-
- Earliest Resource Period: the earliest period that backward scheduling tried to find resources for this activity. This period is initialized to be the Target Period (the latest period to start and be on time).
- Latest Resource Period: the later of the Target Period and the last period from which resources were allocated to this activity. Because the Target Period is the latest period in which resources could be allocated to the activity and still have the activity complete on time, if the Latest Resource Period is after the Target Period, it indicates that the activity will not be performed on time.
- Ready Period: the earliest period in which resources can be allocated to the activity. For example, this includes the period in which prerequisite activities are completed, components are available, any limiting periods are passed, etc.
- Adjusted Ready Period: the earliest that this activity could have resources allocated to it in backward scheduling. This period is initialized to be the Ready Period. The Adjusted Ready Period is tracked as the activity is processed to search for resources to perform the activity. If the activity is processed to look to certain resources and finds insufficient resources available, but there is an earlier Earliest Ready Period (see below) for another activity, then the other activity that used that resource could be scheduled earlier, allowing the current activity to be scheduled in the desired period. In the backward schedule, the system will try to allocate a resource to the current activity in an earlier period, expecting that the forward scheduler will actually schedule the other activity there instead.
- Balance: the quantity represents the amount of resources that are still needed by the activity. If resources are allowed to be allocated other than simultaneously, then the balance can be an array of balances, one for each of the resources required. The Balance quantity is initialized with the quantity associated with the activity, and is reduced as resources are allocated to the activity.
Referring to
-
- Period: a time-stamp indicating the beginning of a period for which the resource can be allocated.
- Remaining Resource: the amount of the resource that remains to be allocated in this period. If the resource can process 1,000 units per period and it has been scheduled for one activity to process 400 units for some period, the remaining resource to be allocated in the period would be 600 units. This amount is initialized with the sum of the rates applicable to the period.
- Earliest Ready Period: used to track the earliest that resource could have been allocated to an activity that tried to obtain resource in this period. This period is initialized as any period on or after Period. In one implementation, it can be initialized with a special value indicating “Future”.
The calculated elements are first initialized for the activities and resources, using the initial values identified above.
Assuming there is exactly one Alternative Resource Set for an activity, the backward scheduling starts with the first activity in Priority List 40 (
When looking for a resource in a desired period, the Adjusted Ready Period for the activity and the Earliest Ready Period (the earliest a resource could have been allocated) for the resource are tracked. That is, when trying to find a resource to allocate, if the resource's Earliest Ready Period is before the activity's Adjusted Ready Period, then the system replaces the activity's Adjusted Ready Period with the resource's Earliest Ready Period. Similarly, if the activity's Adjusted Ready Period is before the resource's Earliest Ready Period, the Earliest Ready Period is updated. In effect, this tracking pushes back the date to the earliest date that the resource is ready for the activity and the activity is ready for the resource.
For a given activity, when a period is found that has Remaining Resource that can be allocated to the activity, the Remaining Resource for use by other activities is reduced by the amount allocated and the activity Balance (array entry if resource is not allocated simultaneously) for the activity is reduced by the quantity allocated. If the current period in which resource is allocated to the activity is before Earliest Resource Period, the Earliest Resource Period is set to the current period. As noted above, this Earliest Resource Period is initialized to the Target Period and moved back as allowed. If the current period in which the resource is allocated to the activity is after the Latest Resource Period, the Latest Resource Period is set to the current period.
If a Balance of resources needed by an activity remains and if the Adjusted Ready Period is before both the current period and the Earliest Resource Period, the system continues trying to allocate resources in the previous period. If a Balance remains and the Earliest Resource Period is on or before the Adjusted Ready Period, then the system looks for a resource in the period after the Latest Resource Period.
This process continues until either the activity has been fully satisfied (i.e., the Balance=0) or there is at least one resource with no Remaining Resource that can be used by this activity. In the latter case, the Latest Resource Period is set to indicate that the activity was not satisfied. In the preferred implementation, the period is set to a value that indicates “Future”.
The next activity in the Priority List 40 is selected, and the backward scheduling process is repeated. This process is repeated until all the activities have been processed. The system then proceeds to the forward scheduling process once all the activities using the current set of resources have been processed by backward scheduling.
When more than one Alternative Resource Set is available to satisfy an activity, there are a few desired changes in the backward scheduling process so the system can determine which set(s) to use and the quantity of the activity to allocate to each.
In the case with more than one Alternative Resource Set, backward scheduling starts with the first activity in Priority List 40 (
As long as an unsatisfied balance exists for an activity, the process is repeated by testing the ability of each of the Alternative Resource Sets to satisfy some portion of the activity. The amount of the activity satisfied by each Alternative Resource Set is maintained. Forward scheduling treats each portion of the activity allocated to the same Alternative Resource as the same activity and each portion allocated to a different Alternative Resource Set as a distinct activity.
The process continues selecting among the Alternative Resource Sets and allocating resource for the next activity until all the activities are done.
Forward Schedule
The emphasis of the backward scheduling is on making sure that activities can be completed on time if possible. The forward scheduling process determines which activity should be scheduled first, using the results of backward scheduling to determine when any activity should be scheduled and then to determine which activity to schedule next in order to prevent lateness if possible.
The activity Balances and Remaining Resource data are re-initialized. As shown in
Using the Latest List, the Earliest Resource Period is manipulated to identify scheduling zones. The activity at the end of the list (that is, the activity with the last Latest Resource Period) is selected. If the Latest Resource Period is after its Target Period, it was scheduled late. A Current Zone is set to be equal to that activity's Earliest Resource Period. The forward scheduler works through the list, once for each resource used by activities in the list.
For each activity that uses the selected resource, if its Earliest Resource Period is later than the Current Zone, the Earliest Resource Period is reset to the Current Zone to allocate the resource earlier. If the Earliest Resource Period is before Current Zone, then the Current Zone is reset to Earliest Resource Period.
The Zone process is repeated until either no changes are required or no activities are skipped (for example, if all the activities use all the resources). This process groups activities into scheduling zones, where the activities may be consecutive or overlapping. Once the Zones have been defined, the main portion of forward scheduling is performed. Forward scheduling starts with the first activity in the Latest List (that is, the activity with the earliest Latest Resource Period). Because the backward scheduling process started with the earliest highest priority activities, the forward scheduling process starts with a bias toward earlier completion of higher priority activities. Resources are allocated to that activity, starting at the later of the activity's Ready Period and its Earliest Resource Period (Zone). When allocating a resource during the forward scheduling process, the activity Balance and the Remaining Resource are reduced by the amount of the resource that is allocated. If there is not enough resource in a given period, continue to a next period until the activity is satisfied (or an end-limit is reached for the activity or no more Remaining Resource exists for a resource).
Each activity is processed until all the activities have been scheduled. It is possible that a resource in a period may be partially or fully allocated to previously scheduled activities before an activity is scheduled that looks for resource in that period. In that case, there could be a gap between allocations to that later activity.
While allocating resources, it is possible that an allocation is made later than the Latest Resource Period for that activity. When this happens, this activity and its resource allocation are a candidate for the repair process identified below. The process continues to allocate resources to that activity, but it tests for lower priority activities with the same Earliest Resource Period (Zone), as described below.
Repair
The repair step is designed to try to correct any scheduling deemed to be “poor” that may have been made in the forward schedule process. Particularly in situations where multiple resources are required, it is possible that the forward schedule can result in high priority activities being scheduled unnecessarily late.
The forward schedule step identified cases where an activity was scheduled later than its Latest Resource Period (this is the Late Activity). If any activity, with lower Priority and Target Date, has been scheduled before the Late Activity with the same Latest Resource Period as the late Activity (in the same Zone), then every such activity is moved to immediately follow the Late Activity in the Repair list, retaining the relative sequence if more than one activity is moved.
A final forward schedule is then performed using a Repaired Forward Schedule list 44 (
The First Resource and Last Resource used for each activity and each allocation of resource to an activity are tracked. These define the actual schedule.
The scheduling systems and variations described above and below can be used to perform scheduling for all activities and resources at one time for a given item. Alternatively, the scheduling can be performed for different phases separately. For example, an item made of sub-assemblies and sub-sub-assemblies can be scheduled by grouping different stages of the overall process together and performing the scheduling of each group separately. By performing the schedule in different groups, a number of schedules can be created and combined for a single item. In addition to a grouping by earlier and later stages of an item, schedules can be provided for separate tracks that lead to a final item. For example, if an item is made up of 5 sub-assemblies, scheduling can be performed for the stage from the 5 sub-assemblies to the final product. Then, a schedule can be created for each of the sub-assemblies with backward and forward scheduling for each of the sub-assemblies to make sure that they are completed on time for the final assembly.
While the amount of resource required by an activity has been described as the same as the quantity associated with the activity, a factor can be added to the Resource definition for each activity so that different quantities are required for each resource.
In backward scheduling, the activity quantity can be split at the time when backward searching fails to find enough resource (as shown, for example, in
The process described above uses an approach to schedule activities as late as possible to meet their target period. However, an optional approach is to schedule as early as possible. In this case, at the end of backward scheduling set Earliest Resource Period to a period equal to today or some period in the past. Then, all the activities will be in the same Zone and will be scheduled as early as possible.
While there can be some benefit to providing just a backward scheduling process as described above and a forwarding process as needed, the system preferably works by always proceeding directly from the backward scheduling process to the forwarding process without any intermediate assessment step to confirm the results of the backward schedule process first; i.e., in one embodiment, the backward scheduling process is not considered to be a stand-alone process, but is one step in an integrated process. The repair processing step could be performed on an as-needed basis based on some rule or criteria.
The systems and methods described here can be used in any situation in which activities are to be scheduled subject to the availability of materials and resources, where the time to respond is more important than the absolute quality of the schedule, and where the availability of resource can be described as a time-varying rate. Examples of such situations include project management, supply chain, and factory production scheduling. The systems and methods can be extended to handle a maximum capacity of resource in isolation or in addition to the time-varying rate.
Having described embodiments, it should be apparent that modifications can be made without departing from the scope of the invention as defined by the appended claims.
Claims
1. A method for scheduling comprising:
- receiving information relating to activities to be performed and information relating to the availability of resources needed to perform the activities; and
- processing the information with a processor to create a schedule with a sequence of activities and a selection of resources for each activity, including: performing a backward scheduling process to schedule activities based on a desired completion time for each activity, a time to complete each activity, and a last time that each activity can be started to meet the desired completion time for each activity (target period), the backward scheduling process further determining the availability of resources to perform the activities for each of a number of time periods, the backward scheduling process producing a list of activities arranged at least in part based on the latest period that the activity is to be started, and automatically proceeding from the backward scheduling process to a forward scheduling process including defining a set of scheduling zones with activities to be performed during each zone and determining an order in which the activities should be scheduled using the results of the backward scheduling process starting with activities with earlier target periods and allocating resources forward in time.
2. The method of claim 1, wherein the backward scheduling process further includes sorting the activities by relative priority level and starting the backward scheduling process with the highest priority activities.
3. The method of claim 1, wherein each resource takes as inputs start, end, and rate of availability, wherein the rate can vary over time.
4. The method of claim 1, wherein there is a single alternative resource set for each activity.
5. The method of claim 1, wherein there are multiple alternative resource sets to satisfy an activity.
6. The method of claim 5, wherein, as long as there is an unsatisfied balance of resources required for an activity, the process is repeated by testing the ability of each of the alternative resource sets to satisfy some portion of the activity.
7. The method of claim 1, wherein, for each zone, the forward scheduling process allocates resources to an activity starting at the later of the earliest period in which the resource can be allocated (ready period) and the earliest period the backward scheduling process tried to allocate the resource to an activity within the zone (earliest resource period).
8. The method of claim 1, further comprising determining whether an activity with a higher priority was scheduled later than the target period and thus is a late activity, and if one or more activities with lower priority have been scheduled before the late activity within the same zone as the late activity, then repeating forward scheduling having first moved such one or more lower priority activities to follow the late activity in the list of activities to forward schedule.
9. The method of claim 1, wherein activities can use resources at different rates.
10. The method of claim 1, further comprising, in response to a determination that an activity will be completed late, splitting the times during which resources are allocated to the activity such that a portion of the activity is completed on time.
11. A method for scheduling comprising:
- receiving information relating to activities to be performed and information relating to the availability of resources needed to perform the activities; and
- processing the information with a processor in an automated manner to create a schedule with a sequence of activities and a selection of resources for each activity, including: performing a backward scheduling process to schedule activities based on a last time that each activity can be started to meet the desired completion time (target time), automatically proceeding from the backward scheduling process to a forward scheduling process including defining a set of scheduling zones with activities to be performed during each zone and determining an order in which the activities should be scheduled using the results of the backward scheduling process and starting with the activities with earlier target dates, and after the forward scheduling process, determining whether an activity with a higher priority was scheduled later than the latest period to complete the activity within the desired completion time and thus is a late activity, and if an activity with a lower priority and target date has been scheduled before the late activity within the same zone as the late activity, then repeating forward scheduling having moved every such lower priority activity to follow the late activity in the list of activities to schedule.
12. The method of claim 11, wherein the backward scheduling process further includes sorting the activities by relative priority level and starting the backward scheduling process with the highest priority activities.
13. The method of claim 11, wherein there is a single alternative resource set for each activity.
14. The method of claim 11, wherein there are multiple alternative resource sets to satisfy an activity.
15. The method of claim 14, wherein, as long as there is an unsatisfied balance of resources required for an activity, the process is repeated by testing the ability of each of the alternative resource sets to satisfy some portion of the activity.
16. The method of claim 11, wherein, for each zone, the forward scheduling process allocates resources to an activity starting at the later of the earliest period in which the resource can be allocated (ready period) and the earliest period the backward scheduling process tried to allocate the resource to an activity within the zone (earliest resource period).
17. The method of claim 11, wherein activities can use resources at different rates.
18. The method of claim 11, further comprising, in response to a determination that an activity will be completed late, splitting the times during which resources are allocated to the activity such that a portion of the activity is completed on time.
19. A scheduling system comprising:
- storage for storing information relating to activities to be performed and to the availability of resources needed to perform the activities; and
- a processor for processing the information to create a schedule with a sequence of activities and a selection of resources for each activity, including: performing a backward scheduling process to schedule activities based on a desired completion time for each activity for producing a list of activities arranged at least in part based on a target period indicating when that the activity are to be started to be completed on time, and automatically proceeding from the backward scheduling process to a forward scheduling process including defining a set of scheduling zones with activities to be performed during each zone and determining an order in which the activities should be scheduled using the results of the backward scheduling process starting with activities with earlier target periods and allocating resources forward in time.
20. The system of claim 19, wherein during the backward scheduling process the processor sorts the activities by relative priority level and starting the backward scheduling process with the highest priority activities.
21. The system of claim 19, wherein the processor schedules for a single alternative resource set for each activity.
22. The system of claim 19, wherein the processor schedules for multiple alternative resource sets to satisfy an activity.
23. The system of claim 19, wherein the processor further determines whether an activity with a higher priority was scheduled later than the target period and thus is a late activity, and if one or more activities with lower priority have been scheduled before the late activity within the same zone as the late activity, then moving such one or more lower priority activities to follow the late activity.
24. The system of claim 19, wherein the processor, in response to a determination that an activity will be completed late, splits the times during which resources are allocated to the activity such that a portion of the activity is completed on time.
25. A computer readable medium having software for performing the process of claim 1.
26. A computer readable medium having software for performing the process of claim 11.
Type: Application
Filed: Jun 17, 2005
Publication Date: Feb 2, 2006
Applicant: Kinaxis Inc. (Ottawa)
Inventors: Robert Klett (Ottawa), James Crozman (Ottawa), Ingrid Bongartz (Ottawa), Gelu Ticala (Stittsville)
Application Number: 11/155,297
International Classification: G06Q 10/00 (20060101);