Wednesday, March 4, 2009

Implementation Diary - March 5, 2009

I am still struggling with logistics domain. Need to finish it quickly and move on to more important work of performing parallelization experiments.

Distance between Object References

One of the questions we face in logistics domain is the distance between objects. Some attributes contain object references - for example, the location of a package is a subtype of "PackageLocationPlace". Truck, Airport, Depot, Airplane all are derived from PackageLocationPlace.

One question is how to compute the distance between two objects.
Example 10. the goal is to get package_1 to depot_1a, and currently it is at depot_2a. What is the distance between depot_1a and depot_2a?

Domain Independent Heuristics for Computing Distance Between Objects

To compute distance between two objects A and B, we compute the distance between each attribute a_i of A and B, and combine (for example, add) these distances.
1) if A and B are of same type t, compute distance for each attribute of type t.
2) if A is a subtype of B, compute distance for each attribute of type of B.
3) vice versa of 2)
4) compute distance between the type t1 of the needed type. For example, in Example 10, only attributes of packageLocationPlace objectType would be computed and combined.

Overall Picture

The above means that the distance between values of an attribute depends on the distance between objects. The distance between objects depends on the distance between attributes of the objects. This is a recursive relation.

Complex Interactions

Here is an example of the kind of interaction we have to deal with for computing distances: In logistics domain, we are interested in computing the difficulty of changing the attribute "package1.packageLocation" from "truck1" into "depot1". For this, we look for actions that change the value of package1.packageLocation from truck1 into depot1. We find one such action is "UnloadPackageFromTruck", which contains the contribution "package1.location <- truck1.truckInDepotType". Ok so now which actions transform the value of "truck1.truckInDepotType" from its current value to "depot1"? The difficulty of this action would also contribute to our answer.

More complex interactions will arise in other domains. We should develop a logic for making these computations. It would probably be based on description logic.

No comments:

Post a Comment