Combining Constraint-Based and Imperative Programming in MABS for More Reliable Modelling
摘要
We argue for a combination of declarative/constraint and imperative programming approaches for MABS: a declarative layer that specified the ontology, assumptions, types, internal and checks for a simulation and the imperative code that satisfied the statements of the declarative layer – instantiating the behaviours. Such a system would be a generalisation of common elements of existing simulations. The two layers would be separately developed and communicated but work together. Using such a system one might: (a) start by importing an ontology of entities that have been previously agreed within a field, (b) work with domain experts to implement declarative statements that reflect what is known about the system, (c) develop the implementation starting with declarative internal checks and the outlines of the implementation, (d) slowly add imperative statements to fill in details, (e) finally when the simulation has been completely verified, the declarative layer could be switched off to allow faster exploration. This would ensure for a more reliable simulation and ensure its consistency with common ontologies etc. It would facilitate: joining models together with fewer mistakes, comparing models, provide enhanced and flexible error checking, make modules more reusable, allow for rapid prototyping, support the automation of modelling tools/add-ons, and allow the selective exploration of all possible behaviours of a sub-model using constraint programming techniques. Examples are given of previous work that moves in this direction.