A scheduler for a finite capacity process provides a schedule based on an
integrated assessment of both discrete and continuous constraints. Given
a list of products to be provided, the scheduler generates a set of
activities required to produce the products and identifies resources
required and the discrete and continuous constraints related to such
resources. Activities are resized, and timelines are established for the
activities as a function of deadlines for the product delivery for which
the activities are related. Resource balancing heuristics are used to
redistribute resource utilization to prevent bottlenecks. Data structures
are used to keep track of constraints. Both discrete and continuous
constraints are defined. Separate solver engines for the discrete and
continuous constraint problems modify the constraints. The data
structures are used to share and propagate constraints between the two
engines. Infeasibilities of meeting product delivery times are detected
during the scheduling and backtracking and rescheduling of resources
based on under and over utilization and availability of equivalent
resources is performed.