Scheduling is, basically, the act of creating a schedule--a timetable for planned occurrences. Generally, scheduling consists of allocating resources to activities over time. A scheduling problem can be viewed as a constraint satisfaction problem or as a constrained optimization problem, but regardless of how it is viewed, a scheduling problem is defined by:
-
a set of activities--tasks or work to be completed--to schedule;
-
a set of temporal constraints--definitions of possible relationships between the start and end times of the activities--to link the activities together;
-
a set of resources--objects such as workers, machines, vehicles, supplies, raw materials, etc., which add value to a product or service in its creation, production, or delivery--to allocate to the activities;
-
a set of resource constraints--definitions of demands of the activities upon the resources--to link the activities to the resources.
This chapter provides a theoretical overview of the concepts implemented in Scheduler to facilitate the representation of scheduling problems. After reading this chapter, you'll be prepared to understand technical terms encountered in the examples that occur in later chapters. If you prefer, you can start with the examples and return to this overview later when you have questions about the terminology or when you are ready to begin representation of your own scheduling or allocation problem.