I have the great honour to have a long-standing affiliation with the Agents and Intelligent Systems Group within the Department of Informatics at King’s College London. From 2010-2014, I studied towards a PhD there under the supervision of Dr Simon Miles, Professor Peter McBurney and Professor Michael Luck, followed by an appointment as a postdoctoral Research Associate from 2014 – 2015. Since September 2015, I am a Visiting Research Fellow in the same group.
My research interest is in the simulation, analysis, and verification of large-scale complex systems, i.e. distributed systems of autonomous, often heterogeneous, and possibly adaptive individual agents that act and interact in complex ways. My current research is particularly focussed on how (agent-based) simulation can be used to answer complex questions, e.g. about counterfactual and causal relationships. I’m generally interested in the application of (semi-)formal methods for the specification and verification of simulation models, as well as in software engineering methods that help to improve the scalability and performance of simulations.
As opposed to conventional mathematical and statistical modelling techniques that put a strong emphasis on prediction, agent-based modelling and simulation is particularly useful for the explanation of complex phenomena. Explanation is strongly linked with the detection of causal mechanisms, i.e. with the ‘cogs and wheels’ operating to produce the observed behaviour. Causality is a fascinating topic that has been debated extensively throughout the centuries and a wide range of theories has been developed. I am interested in the operationalisation of those theories. In particular, I aim to answer the following questions:
- How can causal questions be formulated in an elegant and declarative way?
- Which causal theories are particularly useful in the context of complex systems simulations?
- How can appropriate causal theories be turned into efficient algorithms that a modeller can use to explain observed behaviours by uncovering the causal chain of events that led to their occurrence?
- How can complex causal relationships be visualised?
Verification of agent-based simulations
One stream of my work focusses on the applicability of (semi-)formal verification methods — particularly statistical testing and analysis, model checking, and runtime verification — to large scale agent-based simulations. Due to their inherent complexity, agent-based simulations are generally extremely hard to control. In order to use them as scientific tools for proof, prediction and discovery, however, it is essential that their dynamics are well understood. Against this background, the main questions that motivate my research are:
- How can we make agent-based simulations more transparent?
- How can we better understand their temporal dynamics?
- How can we prove that the simulation behaves as intended?
My work resulted in the development of MC2MABS, a Monte Carlo Model Checker for MultiAgent-Based Simulations which incorporates the idea of statistical runtime verification, a combination of runtime verification and statistical model checking. For further information, please visit this page.
A challenging problem in the context of agent-based modelling — especially in the social sciences — is the replication of realistic human behaviour. As opposed to general strong AI which is concerned with the reconstruction of human intelligence, agent-based modelling aims to merely imitate human behaviour, yet without replicating all the internal mechanisms that lead to its emergence. For example, in the more general area of multiagent systems, cognitive architectures such as BDI, SOAR, or ACT-R play a central role and have been used successfully to construct intelligent, problem-solving agents. In the agent-based modelling area, however, agents are typically rather simple and ‘myopic’ software objects that don’t exhibit any affective, emotional, cognitive, or deliberative behaviour. This is fine for simple models, yet it critically limits the level of sophistication that can be achieved in a simulation model. I am interested in the question how agents can be given more behavioural complexity whilst still retaining a high level of computational efficiency and usability for the modeller.
One step into that direction is my work on an agent-oriented programming approach for high-performance simulations in the form of a C++-based BDI framework (see here). In order to achieve good runtime efficiency, I am focussing on static polymorphism by making use of C++ template metaprogramming (TMP). C++ TMP programs are notoriously difficult to develop and maintain, I am therefore also looking to extend the framework with a domain-specific language (DSL) which also allows non-technical modellers to construct high-performance simulations.