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

ν-BDI
EmPlan / JavaGP
HTN2MDP
Any Time Cognition - ANTICO
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

 

EmPlan / JavaGP

EmPlan is a planner I implemented during my MSc for my planning BDI agent, while JavaGP is a recent Java reimplementation I made of the same algorithm for integration with Jason. After having noticed that there are no full Java implementations of Graphplan around on the internet, I decided to share my code at JavaGP@Github.

 

HTN2MDP

Overview

HTN2MDP is a probabilistic planner that takes as input a deterministic HTN domain, described in a subset of the popular JSHOP HTN domain description language . It generates a policy that tells, for each possible state in the domain, what is the best action to take. This planning consists of converting the HTN domain into a stochastic planning domain in the MDP format, and planning using an MDP solver.

Downloads

The source code and binaries are available for download below. The package includes the binaries for Jason 1.3.1 as well as AIMA Libraries (for the MDP solver).

HTN2MDP - src

 

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 (JavaGP). Peleus was implemented as an extension to Jason, which is a Java implementation of AgentSpeak. The name of this implementation is to conform with 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 JavaGP, and EmPlan.

Peleus - src

 

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 - bin/src

 

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