The.Algorithm.Design.Manual.Springer-Verlag.1998

The.Algorithm.Design.Manual.Springer-Verlag.1998 The.Algorithm.Design.Manual.Springer-Verlag.1998

18.04.2013 Views

Job Scheduling An even more general formulation seeks critical paths in networks where certain jobs are restricted to certain people. Such networks are known as disjunctive networks. Finding critical paths on such networks is more complicated than CPM/PERT, but implementations are described below. In any sufficiently large and sufficiently real scheduling application, there will be combinations of constraints that are difficult or impossible to model using these techniques. There are two reasonable ways to deal with such problems. First, we can ignore enough constraints that the problem reduces to one of the types that we have described here, solve it, and then see how bad it is using the other constraints. Perhaps the schedule can be easily modified by hand to satisfy constraints like keeping Joe and Bob apart so they can't kill each other. Another approach is to formulate your scheduling problem via linear-integer programming (see Section ) in all its complexity. This method can be better only if you really know enough about your desired schedule to formulate the right linear program, and if you have the time to wait for the program to give you the solution. I would start out with something simpler and see what happens first. Another fundamental scheduling problem takes a set of jobs without precedence constraints and assign them to identical machines so as to minimize the total elapsed time. Consider a copy shop with k Xerox machines and a stack of jobs to finish by the end of the day. Such tasks are called job-shop scheduling. They can be modeled as bin-packing problems (see Section ), where each job is assigned a number equal to the number of hours it will take and each machine is represented by a bin with space equal to the number of hours in a day. More sophisticated variations of job-shop scheduling provide each task with allowable start and required finishing times. Effective heuristics are known, based on sorting the tasks by size and finishing time. We refer the reader to the references for more information. Note that these scheduling problems become hard only when the tasks cannot be broken up onto multiple machines or interrupted (preempted) and then rescheduled. If your application has these degrees of freedom, you should exploit them. Implementations: Pascal implementations of Balas's algorithm for disjunctive network scheduling and Hu's algorithm for assigning jobs to processors with precedence constraints appear in [SDK83]. See Section . Algorithm 520 [WBCS77] of the Collected Algorithms of the ACM is a Fortran code for multiple- resource network scheduling. It is available from Netlib (see Section ). Notes: The literature on scheduling algorithms is a vast one. For a more detailed survey of the field, we refer the reader to [Cof76, LLK83]. Good expositions on CPM/PERT include [Eve79a, Law76, PGD82, SDK83]. Good expositions on job- file:///E|/BOOK/BOOK4/NODE156.HTM (3 of 4) [19/1/2003 1:30:50]

Job Scheduling shop scheduling include [AC91, SDK83]. Related Problems: Topological sorting (see page ), matching (see page ), vertex coloring (see page ), edge coloring (see page ), bin packing (see page ). Next: Satisfiability Up: Combinatorial Problems Previous: Calendrical Calculations Algorithms Mon Jun 2 23:33:50 EDT 1997 file:///E|/BOOK/BOOK4/NODE156.HTM (4 of 4) [19/1/2003 1:30:50]

Job Scheduling<br />

An even more general formulation seeks critical paths in networks where certain jobs are restricted to<br />

certain people. Such networks are known as disjunctive networks. Finding critical paths on such<br />

networks is more complicated than CPM/PERT, but implementations are described below.<br />

In any sufficiently large and sufficiently real scheduling application, there will be combinations of<br />

constraints that are difficult or impossible to model using these techniques. <strong>The</strong>re are two reasonable<br />

ways to deal with such problems. First, we can ignore enough constraints that the problem reduces to one<br />

of the types that we have described here, solve it, and then see how bad it is using the other constraints.<br />

Perhaps the schedule can be easily modified by hand to satisfy constraints like keeping Joe and Bob apart<br />

so they can't kill each other. Another approach is to formulate your scheduling problem via linear-integer<br />

programming (see Section ) in all its complexity. This method can be better only if you really know<br />

enough about your desired schedule to formulate the right linear program, and if you have the time to<br />

wait for the program to give you the solution. I would start out with something simpler and see what<br />

happens first.<br />

Another fundamental scheduling problem takes a set of jobs without precedence constraints and assign<br />

them to identical machines so as to minimize the total elapsed time. Consider a copy shop with k Xerox<br />

machines and a stack of jobs to finish by the end of the day. Such tasks are called job-shop scheduling.<br />

<strong>The</strong>y can be modeled as bin-packing problems (see Section ), where each job is assigned a number<br />

equal to the number of hours it will take and each machine is represented by a bin with space equal to the<br />

number of hours in a day.<br />

More sophisticated variations of job-shop scheduling provide each task with allowable start and required<br />

finishing times. Effective heuristics are known, based on sorting the tasks by size and finishing time. We<br />

refer the reader to the references for more information. Note that these scheduling problems become hard<br />

only when the tasks cannot be broken up onto multiple machines or interrupted (preempted) and then<br />

rescheduled. If your application has these degrees of freedom, you should exploit them.<br />

Implementations: Pascal implementations of Balas's algorithm for disjunctive network scheduling and<br />

Hu's algorithm for assigning jobs to processors with precedence constraints appear in [SDK83]. See<br />

Section .<br />

<strong>Algorithm</strong> 520 [WBCS77] of the Collected <strong>Algorithm</strong>s of the ACM is a Fortran code for multiple-<br />

resource network scheduling. It is available from Netlib (see Section ).<br />

Notes: <strong>The</strong> literature on scheduling algorithms is a vast one. For a more detailed survey of the field, we<br />

refer the reader to [Cof76, LLK83].<br />

Good expositions on CPM/PERT include [Eve79a, Law76, PGD82, SDK83]. Good expositions on job-<br />

file:///E|/BOOK/BOOK4/NODE156.HTM (3 of 4) [19/1/2003 1:30:50]

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!