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
Web Planner is an online interface with an underlying PDDL-based automated planner for deterministic planning. This interface is the result of work from my PhD student Mauricio and an undergraduate student and allows end users to visualise both the formalisation of the operators and the way heuristics evaluate the state space towards the goal.
Work on the operator visualisation language was published in the paper DOVETAIL - An abstraction for Classical Planning using a Visual Metaphor, whereas work on the heuristic visualisation was published in the paper WEB PLANNER: A Tool to Develop Classical Planning Domains and Visualize Heuristic State-Space Search.
We decided to share our code through Github: at WebPlanner, while the working app is available as Heroku app at WebPlanner.
ν-BDI
ν-BDI (nu-BDI) is an interpreter for a normative agent that uses constraints on plan instantiations to enforce normative stipulations of obligations and prohibitions.
This interpreter is the result of the work I have been carrying out with Nir Oren, Wamberto Vasconcelos and Michael Luck, most of which is currently unpublished.
The basic work on this interpreter can be found in the paper Using Constraints for Norm-aware BDI Agents
It is implemented as an extension of the popular Jason interpreter.
I decided to share my code through Github: Nu-BDI
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).
ANTICO is a proof-of-concept demo of a proactive information assistant I helped implement while at Carnegie Mellon University. It uses plan/intention recognition and probabilistic plan prediction to detect a human user's future information needs in order to provide time-sensitive information and guidance. The demo itself is intended to help a disaster response coordinator to go through all necessary steps to react to natural disasters and/or terrorist attacks.
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.
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
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.
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.
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.
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) - srcbin
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.
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.