A system for generating a schedule by generating assignments for the tasks
of a project and sequentially scheduling the individual assignments to
available resources. First, input information is received which includes
a resource calendar and a task list. A resource calendar identifies the
resources available to work on a project and any constraints that are
associated with the resources. A task list identifies the tasks that must
be performed and any constraints that are associated with the tasks. At a
minimum, the constraints associated with the tasks must identify each of
the resources assigned to the task, and the work-amount that each
resource must perform. Next, assignments are generated for each of the
tasks. Each of the assignments identifies a specific resource and the
work-amount required by the specific resource. Finally, each of the
assignments are scheduled in accordance with the provided resource
constraints identified in the resource calendar. The resulting schedule
maximizes the utilization of the resources by scheduling on an assignment
basis. The assignments are individually scheduled into the next available
time-slot of the resources, thus, eliminating idle time where a resource
is under-utilized.