The list scheduling goal can fail before finding a solution. This fail means that the search engine has detected that the initial constraints and the decisions taken to build the partial schedule are inconsistent. It is impossible to continue extending the partial schedule to a consistent global schedule of the original problem. It is very difficult to identify the reason for a failure. While a failure is triggered by one particular object, the underlying reason for the failure generally results from the interaction of several Scheduler objects.
Scheduler trace facilities provide accessors for information related to a failure. For example, a failure is triggered when the domain of the start variable of an activity act
becomes empty. In such a situation, the member function getCurrentActivity1
of the class IlcSchedulerTraceI
returns act
. We refer to act
as the guilty activity. This does not mean that relaxing the constraints on this activity will make the problem solvable, but identification of the guilty activity does help us make a heuristic decision.