Programming today is a race between software engineers striving to build
bigger and better idiot-proof programs, and the Universe trying to produce
bigger and better idiots. So far, the Universe is winning.
Rich Cook
Index
AgentSpeak(PL) - Peleus
Jason Scripted Environment
Normative AgentSpeak - Iovis
Distributed Planning - Kastor
AgentSpeak TAC Client - Orpheus
X2-BDI / AgentViewer
DocDB
Open iTerm Here
Java Games
AgentSpeak(PL) - Peleus
Overview
Peleus is an implementation of planning capabilities within the AgentSpeak architecture,
also known as AgentSpeak(PL)
as published in two DALT papers:
Composing high-level plans for
declarative agent programming, and
Leveraging new plans in AgentSpeak(PL).
AgentSpeak consists of an agent architecture following the tradition of PRS agents, which
define agents with procedural reasoning capabilities. Procedural reasoning is a mechanism
used by agents to improve their runtime efficiency by limiting the agent's choices to concrete
plans of actions that are adopted whenever a certain well-defined situation is detected by
the agent. This constrains the agent's flexibility at runtime, since a designer has to foresee
every possible relevant situation and define complete adequate plans for the agent to react
to them. Peleus allows an agent to reason over declarative goals (as well as procedural ones)
and generate plans to satisfy them by composing lower-level AgentSpeak plans. To compose these
plans, Peleus infers the preconditions and effects of AgentSpeak plans and convert them into
a STRIPS representation which is handed down to an external planning module. In this version
of Peleus, we allow a designer to choose between the same planning process used by X-BDI, or
an open-source Java implementation of Graphplan
available at SourceForge
(JPlan). Peleus was implemented as an
extension to Jason, which is a Java implementation
of AgentSpeak created by Rafael Bordini and
Jomi Hübner. The name of this implementation
is to conform with Bordini and Hübner's naming of their AgentSpeak implementation,
namely Jason from the Greek tale of the argonauts.
Downloads
The source code and binaries of Peleus are available for download below. The package includes
the binaries for Jason 0.9.3
as well as JPlan, and
EmPlan.
Peleus -
bin/src
Jason Scripted Environment
Overview
This is a utility package including an implementation of a Jason environment driven by a script
to generate new perception events at specific times during the execution of a Jason multiagent
system. Class ScriptedEnvironment takes as a parameter an XML file with nodes containing
a list of perceptual updates for all agents and the time at which these updates must be sent to
all agents in the environment. This script file follows the schema available at
www.meneguzzi.eu/schema/jason-script.xsd,
an example of usage of this script is available at
www.meneguzzi.eu/schema/script.xml.
Downloads
The source code and binaries are available for download below. The package includes
the binaries for
Jason 1.2
ScriptedEnvironment -
src bin
Example -
script.xml
Normative AgentSpeak - Iovis
Overview
Iovis is an implementation of an AgentSpeak interpreter that includes a meta-
level reasoning action library, and plans to process and comply to norms, following the
technique from the paper
Norm-based behaviour modification in BDI agents.
With Iovis, a developer can deploy agents that change their plan libraries
in reaction to norms from the environment, or from other agents (through
electronic contracts,
for example).
Downloads
The source code for Iovis is available for download below. The package includes
the binaries for Jason 1.2
as well as Jason Scripted Environment.
Iovis -
src
Distributed Planning - Kastor
Overview
Kastor is an implementation of an AgentSpeak interpreter extended with plan patterns for the creation of
distributed plans following the technique from the paper
Interaction among agents that
plan. In Kastor,
a developer can define external plans for each agent through the EP plan
pattern, which creates a communication endpoint in the sharing agent allowing other agents
in the society to request this plan to be executed on their behalf.
Downloads
The source code and binaries of Kastor are available for download below. The package includes
the binaries for Jason 1.2
as well as Peleus, and
Jason Scripted Environment.
Kastor -
src bin
Orpheus
Overview
Orpheus is an implementation of an AgentSpeak-based client for the classic version of the
Trading Agent Competition (TAC). At the
moment the implementation is a rather simple adapter pattern bridging a Jason agent to the
reference Java AgentWare library provided by SICS to do
the low-level communication with the TAC server.
This, as well as other technical limitations, should be addressed some time in the future.
As with Peleus, this software was named to conform with Jason's argonauts.
Downloads
The source code and binaries of the TAC agent are provided below, the package includes the
binary package of Jason,
as well as the binary package of AgentWare.
Orpheus (for
Jason 0.8) -
bin/src
Orpheus (for
Jason 0.9.4) -
bin/src
X2-BDI / AgentViewer
Overview
X2-BDI and Agent Viewer are two programs implemented as part of the
research conducted throughout my masters course in order to verify the
viability of the theories defended in my masters dissertation. X2-BDI is an
extension to the X-BDI agent model/interpreter created by Michael Móra in
his Ph.D. thesis, it includes a C++ implementation of the Graphplan planner
which is used by the agent in order to perform means-ends reasoning. Agent
Viewer is a Java tool that provides a graphical interface intended to ease
interaction with X2-BDI, which was originally done through a Prolog
console.
Downloads
The implementations of X2-BDI and Agent Viewer are available for download
below, as well as the C++ implementation of Graphplan used in X2-BDI and
compiled as a windows dynamic library. The sources are also available for
compilation in other platforms.
X2-BDI -
src/bin (Requires SICStusProlog version 3.8.3)
EmPlan (C++ implementation of Graphplan) -
src bin
Agent Viewer (Java Installer) -
bin
It is worth mentioning that these are experimental software programs that
were not subjected to any formal testing process. Usage of the programs or
its sources is free of charge for non-commercial use, otherwise it is
necessary to contact the author (i.e. me).
DocDB
Overview
DocDB is an extremely simple program that detects duplicates of files within a specific
local folder. It was created to help me solve the problem of multiple versions of papers I
download in the course of "gathering" research papers throughout the year for my PhD. Though
I always try to be disciplined and keep a folder structure just for papers, and I try to
categorize the PDF/PS files as I download them, as the number of files I download increases
it becomes harder to remember things I downloaded or not, and I end up saving the same paper
under different names in different folders. As another helper for this chore of bookkeeping
research papers I use JabRef, which is a brilliant
program to manage a BibTeX reference database.
Since DocDB cannot even be qualified as
alpha-quality software,
user discretion is advised. Even though it is unlikely that any critical bug is present given
the simplicity of this software, I recommend backing up the target files before executing
DocDB.
Downloads
The source code and binaries for DocDB are provided below. No build files have been
created, but Eclipse project files are included
in the source code, making it simple to compile and recreate the executable
JAR file using Eclipse's
interface.
DocDB -
src bin
Open iTerm Here
Overview
Not strictly software, but rather a Mac OS X workflow that adds a
context menu item in Finder that when invoked opens an iTerm
terminal tab, cd-ing to the selected directory. It is rather neat and useful
if you use a lot of terminal applications in the Mac, and if you, like me,
does not like Terminal.app too much. This workflow was inspired by
Jeroen Leenars's
workflow that opens Terminal.app instead of iTerm. Most of the code was unashamedly
poached from an old
macosxhints forum,
attesting to my relative ignorance of Mac OS X scripting.
Downloads
The workflow is provided below, and is provided as is, I do not guarantee it will work,
even though it has worked in my Snow Leopard installation. It includes installation
instructions, which are basically the following: open the zip file, go into the
open-here folder, and copy Open iTerm Here.workflow to
~/Library/Services.
Open iTerm Here