2003/2004 Undergraduate Projects

Dr Joanna Bryson

E-mail: J.J.Bryson@bath.ac.uk

General Interests: Artificial Intelligence, Natural Intelligence, Artificial Life, AI Development Methodologies.

Samples of Specific Interests:  Modular models of animal intelligence, the evolution of social behaviour, intelligent environments, tutoring systems, VR characters, autonomous robots, multi-agent models of political systems.

Title:  A GUI  Development Environment for Reactive Plans


Reactive plans are an excellent way to organise the behaviour of complex artificial agents, such as VR characters or simulated animals. A developer provides a concise, robust plan which the agent can then apply in a large number of diverse, dynamic situations. However, visualising, coding and debugging reactive plans can be tricky.

This project extends existing work on Behavior Oriented Design.  Two MSc projects over the summer have already created a GUI for editing plan elements and a new version of the POSH reactive planning system, both written in Python.  Python is a scripting language that is extremely simple to learn for Java or C programmers; it sacrifices a little speed for coding simplicity, e.g. it is not strictly typed. Writing GUIs in python is very quick and intuitive.

The project will require creating an improved view of the complete plan, connecting the plan execution software, connecting the plan execution software to the planner so that execution can be observed in real time.  Additional features should include some of the following:  connecting to an editor (preferably emacs) for editing source code for plan primitives, building demonstration AI characters in a graphical environment, user testing,a well specified API, logging facilities so that behaviour can be re-run out of real-time for debugging and analysis, evaluations and possibly improvements on the POSH plan representation.  The final writeup may be directed toward either industrial or academic standards, depending on the student's career interests.

The POSH planning system, though developed by Dr. Bryson, is being used and evaluated at several other universities.  It is expected that the outcome of this project will be made publicly available from the Bath AI web pages, and will be used by many students and researchers.

Pre-requisite knowledge:

Strong competence in at least one GUI development language, knowledge of HCI, willingness to learn new languages, interest in AI, willingness to read academic papers.

Indicative reading:

Title: NetLogo Behaviour Library for Simulating Social Animal Interactions


Many projects in the AmonI research group here at Bath involve modelling agents moving freely in the world and interacting with each other.  Dr. Bryson is particularly interested in the differences in social behaviour of closely related species of monkeys.  Dr. Barry is interested in the communication of predators that hunt in packs, and Dr. Richardson is interested in flocking in fish and birds.  NetLogo is a research environment designed to study multi-agent systems.  It provides easy-to-use tools for building GUI test environments and a simple scripting language for creating their behaviours.  However, very few simulations to date have been done in NetLogo where the agents are individuated --- that is, where the individual agents move around the environment as if they have their own goals, preferences, memories and associates.  

Behavior Oriented Design breaks the problem of making AI systems into two halves.  The first half is describing how an agent performs each individual action it is capable of, and the second is describing when (in what situation) an agent should perform which action.  The answers to the `how' question are stored in a behaviour library of primitive senses and actions which are built object-oriented behaviour modules.  The answer to the `when' question is solved by action selection.

The aim of this project it so make a behaviour library to support the rapid development of such agents.  The project will start off by refactoring the code of two MSc projects which created individuated primate simulations.  The project will extend this work to incorporate a a few simple action-selection mechanisms into the library.  Finally, the library will be demonstrated by extending the replications of the MSc projects, probably by adding new conflict resolution behaviours to some of the monkey's behaviour repertoire and seeing how they impact the interactions of those monkeys.

It is expected that the outcome of this project would result in code available both from the Bath AI web pages and from the NetLogo project.  Users will probably be available for user studies in the form of MSc students provided the student finishes the coding part of this project early enough.  The writeup should take the form of a manual, but can be pitched either from an industrial or a scientific perspective, depending on the inclination and aspirations of the author.

Pre-requisite knowledge:

Interest in AI and animal behaviour.  Ability to work with large software systems, to read and understand other people's code. 

Indicative reading:

Title: Modelling Transverse Patterning and the effects of Hippocampal Lesioning


The objective of this project is to determine whether a model of primate transitive inference learning can be used to explain results in learning transverse patterning in both normal and lesioned animals. The transitive model is written in Lisp.

Transitive inference is inferring that, given A > B and B > C, then A must be > C. Oddly enough, monkeys (and even rats and pigeons) seem to be able make this inference if they are able to learn the initial relations (A>B, B>C) in the first place. On the other hand, if you let a monkey (or even a child) choose between A, B and C at the same time, they are quite likely to think B is the greatest.

These results were explained by Harris & McGonigle in 1994 using a simple production rule model. Instead of learning about a number of pairs, the agent seems to learn about 1) given a bunch of options, which one should I attend to? and 2) given that I'm currently looking at option A, should I take it or avoid it? I have recently tested and extended this work into a learning system using a two-tier neural-network representation. The hypothesis to be tested in this project is that the first tier (which represents the association of a stimulus to an action) corresponds to the enthorinal cortex, and the second tier (which represents priorities between the different associative rules) corresponds to the rest of the hippocampal system.

Transverse Patterning is a related problem of learning a list of pairs that cycles, e.g. A > B, B > C, and C > A. The purpose of this project is to see whether the model which explains the TI results also can explain TP results.

This project is not necessarily challenging from a programming perspective, particularly if the student is willing to use the existing Lisp code. It does require the ability to find, read and reason about neuroscience papers. This project most suits a student who wishes to go on to do research in psychology or cognitive science. The write-up should take the form of a scientific paper. Whether the results are positive or negative, a good project would probably be publishable.

Pre-requisite knowledge:

Competence in programming, ability to learn and manage software systems. Must know or learn about the scientific method, some neuroscience and hypothesis testing.  Existing code is in Lisp, it may either be extended or rewritten in another language, but ability to read lisp would be useful (though not strictly necessary.)

Indicative reading:

Title: Passing the Turing Test in a Games Environment:  Language and Action in UnReal Tournament.


The Turing test is a functionalist solution to the question "How will we know when we have achieved AI?" Alan Turing, (the English mathematician who funded AI and computer science) suggested the answer was simple:  you've achieved it when people can't tell whether they are interacting with a computer or a person.  Obviously this test is harder to pass in some circumstances than others.  This project will look at the domain of language in multi-user gaming.

In a gaming environment, there are many distractions.  Further language is often stereotyped.  Also, most of the things the language will be referring to are specified in the semantics of the game, either objects or actions.  The goal of this project is to create a simple reactive AI agent which gamers have trouble distinguishing from at least some classes (e.g. novices) of other gamers.

The first task will be to collect a large corpus of gaming conversations, possibly including chat-room dialogue.  The next task will to be attempt to categorise sentences into ones that can be responded to simply (e.g. "How are you doing?") and ones that require actions or observations (e.g. "Is there anything over there? " "Go right!")  The third will be to build an agent which can respond appropriately to at least some of the things that are said, or to some events in a gaming environment.

Existing work includes an MSc project this summer which produced an AI agent which operates in Unreal Tournament.  This agent is written in Python which is a good language for doing prototypes and has good regular expression libraries.

Writeup would probably be aimed toward an industrial standard, documenting design decisions, usability and extendability, it must include experimental evidence of the extent to which it passed Turing equivalence.

Pre-requisite knowledge:

Should be a very strong student, happy with both statistics and parsing, not afraid of reading or programming.

Indicative reading:

Daniel Jurafsky and James H. Martin's Speech and Language Processing: An Introduction to Natural Language Processing, Computational Linguistics, and Speech Recognition, Prentice Hall, 2000

Joseph Weizenbaum's ELIZA: Communications of the ACM
 Try also typing M-x doctor in any full version of emacs.

The Behavior-Oriented Design of Modular Agent Intelligence 

Title: A Reactive Project Planner


Most project planning tools these days assume rigid descriptions of tasks and their ordering.  Reactive planning is a methodology drawn from Artificial Intelligence to control robots, VR characters and other intelligent systems in dynamic, unpredictable environments.  The idea is that there are many things that you could do now, though some will have higher priority than others.  But if a particular opportunity presents itself (for example, if you happen to have found the place in some code where you can easily perform a lower priority task) you should exploit it.

The idea of reactive project planning goes beyond the AI technicalities to the robustness of the software tool.  A project manager should be able to draw in whatever plan elements they know exists at the times they need to appear, without necessarily fully supporting those elements with preconditions.  The process of project planning should also be reactive and responsive, as well as the process of executing the plan.  A good planning tool should be able to record the plan as it is being developed, as well as flagging things that need to be further worked out.  Partially developed plans should still provide prioritised lists of things to be done to people working on the project when they are requested.

The final project should be platform independent and easy to install.

This project is best suited to a student interested in going into industry. The write-up should take the form of documentation and include some user studies. A good project might wind up on sourceforge.   This project is not particularly well specified, nor does Dr. Bryson know much about GUIs or HCI.  Any student taking it should write a fuller proposal, so that it is semi-self-proposed.

Pre-requisite knowledge:

Competence in HCI as well as GUI design, databases (probably Java or Python for the former and MySQL for the latter.)

Indicative reading:

Here's a short web page on  reactive planning.  You should find some more references on project management.