Author Archives: admin

Capability Relationships – Revised and Extended

The paper published entitled “Capability Relationships in BDI Agents” was revised and extended in the EMAS post proceedings. The full reference to this new version of the paper can be seen below.

BDI4JADE 2.0 Beta Available: Many New Features!

A new version of BDI4JADE was released. This version of BDI4JADE provides many new features, and allows easier implementation of BDI agents. This is a beta version because few more tests should be run to consider the release stable.

Check out the new release notes:

  • A set of annotations added to:
    • Setup plan body parameters based on goal parameters
    • Setup plan body references to beliefs (whose name is a String)
    • Specify capability components (beliefs, plans and associated capabilities)
  • New belief types added
    • Predicate (and its implementation TransientPredicate): represents a belief whose name is a logic predicate and its value is a boolean that indicates whether the predicate is true or false
    • DerivedBelief and DerivedPredicate: represent beliefs whose values are derived from a belief base
  • Agents can now be one of two types: SingleCapabilityAgent and MultipleCapabilityAgent (the former has a single root capability, while the latter can have as many as desired)
  • Capability can now have different types of relationships (inheritance, association and composition) – check out the paper published in EMAS 2014, by Ingrid Nunes
  • BeliefGoal and its implementations added: belief goals are used to implement declarative goals. Goals are specified in terms of agent beliefs. Associated with belief goals, there is the BeliefGoalPlanBody, which is a plan to achieve belief goals.
  • The goals that a plan can achieve are specified in a set of goal templates (similar to what message templates are to messages). They can be constructed by implementing a goal template or using the GoalTemplateFactory.
  • Plan bodies can be implemented in a simpler way: now, they must only extend a single class (AbstractPlanBody). In previous versions, they had to extend a class (Behaviour from JADE) and implement an interface (PlanInstance)
  • The instantiation of plan bodies whose class is provided for DefaultPlan is now possible even if they are non-static inner classes of agents, capabilities and plans.
  • Reasoning strategies are now modularised at the capability level. Each capability can have their own reasoning strategy. However, there is still reasoning strategies at the agent level.
  • Examples can run all at once in a graphical interface.
  • Additional refactorings to the last version were performed.

Because of the addition of these new features, we made some changes in the BDI4JADE infrastructure and this version is incompatible with the previous versions. If you need assistance to adapt your code to use the new BDI4JADE version, please contact us.

We apologise for this inconvenience. BDI4JADE emerged from the need for a BDI platform implemented in pure Java, when we were working on dynamic adaptation of BDI agents in 2011. Since then, BDI4JADE was available but did not evolve. Now, the platform tends to stay stable. However, if you use previous versions of BDI4JADE and you find any bugs in the previous versions, please let us know that will fix them.

Capability Relationships

In object orientation, there are different relationships between classes: association, aggregation, composition, generalisation/specialisation and dependency. BDI agent platforms that adopt the concept of capabilities allow capabilities to include other capabilities, but this is the only way that capabilities can be related to implement functionality.

In a paper published at EMAS 2014 (International Workshop on Engineering Multi-Agent Systems), Ingrid Nunes explored different types of capability relationships and showed how they can be used. This provides a better modularisation of capabilities and a concise way to specify what is shared among them.

An extended and revised of the paper will be soon available in the EMAS post-proceedings, as well as the implementation of these different types of relationships in BDI4JADE.

Full reference of the published paper:

BDI4JADE Debugger (under construction)

The BDI4JADE team has now a new member: Matheus Dias.

Matheus Dias is responsible for producing a tutorial of BDI4JADE, which will describe the basic steps to implement agents with the platform.

He will also implement a debugger for the platform. Although BDI4JADE can be debugged with the Java debugger, it is useful to have an additional debugger that abstracts platform details.

Utility-based Plan Selection Strategy

Ingrid Nunes and Michael Luck proposed a new model-driven approach to BDI agent development, which consists of: (i) a meta-model to capture agent softgoals and plan contributions; (ii) a plan selection algorithm using information provided by an instance of the meta-model; and (iii) a model-to-text transformation that generates code based on an instance of the meta-model.

This approach was published at AAMAS 2014, and it is implemented in BDI4JADE (version 1.0 or later). Besides providing an implementation of the meta-model and algorithm, you can run an example of the use of the approach (bdi4jade.examples.planselection.ExperimentRunner) and see a template for using it in the package bdi4jade.examples.planselection.template. The model-to-text transformation is currently not available.

Full reference of the published paper:

Version 1.0

A new version of BDI4JADE was released.

Check out the new release notes:

  • Implementation of the UtilityBasedBDIAgent, which is an agent that uses the UtilityBasedPlanSelectionStrategy to select plans. It uses other concepts as soft goals and plan contributions. See the template for learning how to use it.
  • Implementation of the management of nested capabilities. Goals can be dispatched in plans within the scope of a capability, so that only the plans of that capability or its children will be considered to achieve the goal.
  • New examples provided
    • Hello World example
    • Nested capabilities example
    • Agent based on utility-based plan selection example/template
  • Refactoring of the BDI4JADE packages