The Local Planning Layer

2.3 The Local Planning Layer

Planning is an essential task which is highly domain specific. So it is difficult to get an useful organisation of the abstraction layers. Therefore, it is important to make clear detachments between the abstraction levels. There are four levels of abstraction we distinguished within the local planning layer in our transportation domain. On the top of the abstraction hierarchy is a generic planning layer which contains only basic structures and the interfaces to the other layers. It is able to include some kind of more domain specific

planning modules and it should coordinate the planning tasks between the inserted modules. The next level in the hierarchy includes a more domain specific planning layer. In our transportation domain it is a level which does not contain any planning algorithms. It includes all significant operations to deal with plans – regardless of the structure of the plansteps. There are methods for deleting, inserting and searching of certain plansteps. Furthermore, it is able to perform some easy computation over the plan, e.g. counting the plansteps. The following level in the abstraction hierarchy is the domain specific planning layer. It contains information about the object the agent represents in the real world. The planning layer of a shipping company agent has to be able to divide an order into several suborders, if it is necessary to get a solution of the problem of allocating the orders to the road trains of a shipping company. The most important function of this level is to do all computations which need some extra information about the real world, e.g. the resources of represented objects. Therefore it could be necessary to build different planning components which consider the functionality of the real world objects like the driving time component of a driver. A container of a road train does not have to represent the used driving time in the way it is necessary for the driver-agent. It does not make sense to take care about the weight and capacity of the loaded units by the driver-agent. This is the job of the container- or road train agent. At last there is one additional level which contains only modules for some difficult computations which need specific algorithms to get quick solutions for a given problem. These modules contain efficient algorithms for solving particular problems. It is desirable to change these modules easily without reimplementing the whole level for that special kind of agent which need these changes. The jobs of the planning layer are divided into a hierarchy of domain independent to domain specific levels. This technique of structuring the planning layer into different levels is close to the technique of transferring the ability of objects to other objects like it is done in object oriented programming. In our domain there are only three to four levels useful. In domains with a lot of different types and groups of agents which share different partitions of functionalities it might be necessary to build more levels.