The task structure defines the recursive decomposition of the major application task into subtasks. Note that this does not necessarily imply that these tasks will actually all be there for every new case. Which tasks need to be executed depends of course on the status of the case model at various points in time and on the problem solving methods that regulate the execution among tasks and subtasks.
In the model framework, tasks are activities that are imposed onto the model dependency diagrams. We can therefore derive the task structure from the analysis in section 3.1.
At the top level of the task structure, we find the task ``allocate equipment''. This task starts with the ``problem case model'' which describes the initial problem. The output of the task is a ``plan case model'' which describes the equipment allocation for that particular problem.
The task ``allocate equipment'' can be split up into three major subtasks. A first subtask (called ``decompose problem into subproblems'') decomposes the initial problem into a hierarchy of problems, subproblems and subsubproblems. A second subtask (called ``solve subproblems'') solves each subsubproblem and produces a ``partial plan case model'' for each of the subsubproblems that it solved. Finally, there is a third task (called ``recompose subsolutions'') which recombines the partial solutions into the final ``plan case model''. The latter model describes the solution of the equipment allocation task. The first level of this task structure is depicted in figure 19.
We now discuss each of these tasks in turn.
The first task (called ``decompose problem into subproblems'') starts with a description of a set of trains that needs to be scheduled. The output of the task is a hierarchy containing the decomposition of the problem into subproblems. In general, there will be two decomposition phases. This depends on the kind of problem that the expert has to solve. If the problem contains a set of trains that (i) all belong to the same passenger relation and (ii) have the same characteristic, then there is no need to do a decomposition. In this case, we can immediately move on to solve the problem. When more than one characteristic is present in the given set of trains, the expert has to group the trains according to these characteristics (e.g. N67 and R67 trains). Each grouping is a subproblem that needs to be solved separately. The most difficult case is the case where the trains belong to more than one passenger relation. In that case we will have two decompositions. A first decomposition partitions the initial set of trains into subsets of trains that belong to one passenger relation. For each of these subproblems, a second decomposition is required according to the different characteristics that are present in the trains that belong to one passenger relation.
Based on these insights, we can split up the task ``decompose problem into subproblems'' into two major subtasks. First, the expert needs to determine the kind of problem that he is dealing with (a subtask that we call ``determine problem type''). Once the kind of problem is known, it can be decomposed according to a fixed decomposition procedure. We introduce two subtasks that are responsible for performing the decomposition. A first subtask is called ``decompose 1'' and performs a decomposition from a general problem to a set of subproblems at level one of the decomposition hierarchy depicted in figure 6. A second subtask, which we call ``decompose 2'', performs the decomposition from level one of the decomposition hierarchy to level two.
The second important task in the top level task decomposition (figure 19) is the task which produces a solution for a problem which is at the leafs of the problem decomposition hierarchy (figure 6). This task has to be split up in several subtasks. These subtasks correspond to the model construction operators in figures 10, 11, 12 and 13.
First, we will need a subtask which corresponds to the model dependency diagram in figure 11. We call this task ``select engine''. Selecting an engine requires knowledge about the characteristics of the different types of equipment that are available. Not all types of engines can be used to drive the trains that belong to a certain relation. Executing this tasks requires that we exploit knowledge about the different types of engines (represented in the ``engine domain model'') and about the passenger relation to which the trains in current problem belong.
Secondly, the expert has to specify a sequence that will be driven by the engine that he just selected. Let us introduce a task ``specify sequence'' in the task structure. This gives the following decomposition uptil now 21.
The task ``specify sequence'' can again be split up in two subtask. A first subtask is introduced to select the first train in the sequence. This task will be called ``select first train''. Then we will need a task to (iteratively) select the next train of the sequence. Figure 22 illustrates the resulting task structure.
Finally, we come to the last main task in the top level task decomposition (figure 19): the re-composition task. As with the decomposition task, we introduce two subtasks: ``re-compose 1'' and ``re-compose 2'' (figure 23). The task ``re-compose 1'' combines the solutions from the second level of the decomposition hierarchy into solutions for the problems at the first level. The task ``re-compose 2'' combines the solutions from the first level of the decomposition hierarchy into a solution for the initial problem. Recall that the task ``re-compose 2'' is actually obvious. It consists of putting together the results from the ``plan case models'' at the first level of the decomposition hierarchy into a single ``plan case model''.
The task ``re-compose 1'' is not as simple as ``re-compose 2''. As was already discussed in section 3.1, the re-composition from the second level to the first level requires that we determine the empty trains that are needed in order to restore the balance across two subproblems. Only when this balance is known, the solutions of the subproblems can be combined. Therefore, we introduce two new subtasks for the task ``re-compose 1''. A first subtask is called ``determine empty trains'' and a second subtask is called ``combine solutions''. The final task structure is depicted in figure 24.
___________________________________________________