The Port-Based Adaptable Agent Architecture is a Java-based programming framework that aims to facilitate the development and deployment of self-adaptive, distributed, multi-agent applications. Unlike sequential programming models that require an application to be a single stream of instructions, PB3A utilizes a threaded programming model allowing simultaneous streams of instructions. To exploit the power of PB3A, a solution to a problem must be decomposed into a hierarchy of interconnected tasks. We consider a task to be some flow of execution that takes zero or more inputs, produces zero or more outputs, and may modify some internal state. We call these input and output points " ports " , and refer to a fundamental unit of execution as a Port-Based Module (PBM).
In essence, a PBM clearly defines the boundaries, entry points, and exit points of the smallest unit of code in PB3A. The definition of tasks is recursive; a single task may be composed of multiple, possibly parallel, sub-tasks. To capture this notion, PB3A allows for the creation of Macros, a special type of PBM that is itself an interconnected collection of PBMs or other Macros. Also, the self-contained nature of the PBM, coupled with its completely specified port-mapping dependencies, allows not only for easy distribution and coordination of code modules onto a network of computers, but also for those modules to be mobile. More succinctly, PBMs can migrate from node to node during their execution. Where the PBM represents the most basic unit of execution, the Port-Based Agent (PBA) represents the most basic unit of self-adaptability. Thus, the self-adapting PBA is the cornerstone of our approach to managing software complexity.
The tutorials presented here are intended to quickly educate you on the basics of using the PB3A architecture. The tutorials are broken into three distinct components. We recommend that you proceed in order through the set of tutorials, as there are some information dependancies throughout.
Each tutorial offers detailed instructions for completing many basic PB3A proceedures. The first two give a very basic, bare-bones introduction to utilizing PB3A. The final tutorial discusses more advanced, but highly relevant features. This is where you'll find all the really cool stuff about PB3A!
This tutorial is meant to familiarize you with the PB3A working environment. You will learn how to use PB3A's Module Manager to create, modify and execute a simple system composed of Port-Based Agents. Step-by-step instructions are given with lots of pictures to help guide you through the process.
Here, you will be introduced to the necessary components of a Port-Based Agent. You will be taken step-by-step through the creation of a simple Port-Based Agent. Important programming considerations are also discussed.
The agent designed in the previous tutorial is modified to include more advanced features. Issues such as agent state, macros, event ports and Port-Based Drivers are discussed. Examples of everything are given. While the previous tutorial explains how to make a minimal PBAgent, this one explains how to make a PBAgent do interesting things!
This is a listing of known bugs and fixes. Feel free to contact us if you have found something that is not listed here.
Please direct any questions and/or feedback about the PB3A tutorials to
Rich Malak.
![]() |
![]() ![]() |