JACOP: Programming BDI Agents with Pluggable Concurrency Model

   page       attach   

Nowadays, more and more disciplines adhere to Agent-Oriented Programming paradigm to break down complex problems. Various methodologies have been formalized over the years to model the behaviour of an agent, one of them is the well-known BDI (Beliefs, Desires, Intentions) model. This model, after receiving great interest from researchers, was formalized into an abstract language called AgentSpeak(L), and later implemented in Jason. Jason let users express multi-agent system (MAS) specification via an ad-hoc language and a clear concurrency model.
In this work we propose a novel interpreter for AgentSpeak(L) – namely, Jacop – supporting both concurrency model pluggability, and interoperability with mainstream programming languages – namely, the JVM-based ones –, via a Kotlin-based domain specific language (DSL).
On the one hand, concurrency model pluggability let users choose the best concurrency model for their applications. In this way, the same MAS specification can run on resource-constrained devices, as well as on parallel, distributed, and simulated architectures.
On the other hand, our DSL aims at specifying BDI agents directly in Kotlin.
In this way, users can easily develop MAS without having to learn a new syntax, and, therefore, smoothly blend BDI agents into other projects.
To demonstrate the functionality of our contribution we test Jacop over several MAS specifications, aimed at assessing if and to what extent: (i) the Jacop interpreter covers AgentSpeak(L) semantics, (ii) the Jacop DSL covers Jason syntax, (iii) the same MAS specification can run on different concurrency models. A qualitative analysis of the result code snippets and their execution shows that all such features are satisfied

keywordsMulti-Agent Systems, Jacop, BDI model, AgentSpeak(L), Jason, Concurrency, DSL