Defines the way that knowledge is represented in the world of the agents. Agents represent and communicate knowledge using SimulationVectors. All SimulationVectors look basically the same. The only differences between them is in what they are used for (i.e. some are used for asking a question, others are used to answer a question).

Even though all SimulationVector classes are almost identical in functionality, we found that it was very usefull to develop a separate subclasses for each possible use of a SimulationVector. Doing so made the code much easier to read, and greatly reduced the risk that a developer might accidentally mix up objects (e.g. by manipulating a query that he mistakenly believes is an answer).