- s100+ pages
Last edited - March / 99
-- Hear and forget; see and remember; do and understand...
Constantly not up to date (I won't even lie and say constantly under
construction - web updates are only an occasional fever that I get).
But, I am making an attempt to put something
useful and/or informative out on the web...questions, comments and suggestions goto
me. Here's a list of
some of my current projects, with multi-agent systems being the
- evolving coordination systems
While taking the Natural Language Processing class in the Fall of 95,
I was disappointed by how ungrounded all the models were. I was also
intrigued by the concept of compositional communication - what could
motivate such a system to evolve? I built a small world, inhabited by
agents whose genomes encoded a production system which defined their
behavior. And of course, there are Good Things(tm) and Bad Things(tm)
in their world. By limiting their visual abilities, I hoped to evolve
a society that would use auditory signals as a group to surive
(flourish?) in the world.
What I quickly found instead, was that a cooperating society - a group of
agents that could agree on the same communication system - was difficult
to evolve. Instead of getting the group to
converge on a 'dialect' I tried to instead just work on the problem of
getting the group to find a successful behavior. To do this, I stuck
to more homogenous societies - each genome was now representing a
society of agents in the world.
- Model-View-Controller (MVC)
Possibly my days of guerrilla programming are over? Over the last
couple of years, I've put a lot of work into my coding style to change
it. Too many times I've sat there and known I was doing it the wrong
way, but for the sake of (what goes here?) I didn't do anything about
it. I'm working on a little tutorial about how to use this pattern
because I found it hard to find any good walkthroughs on the web. Plus I
figured it'd make it clearer in my head as well.
- genetic algorithms (GAs) [pages on their way]
Genetic algorithms are generate and test search methods inspired
by natural selection. Their basic algorithm is pretty simple,
yet allows many optional tweaks. This software allows one to add on
whatever tweaks they would like - in particular, an add-on
for distributing this GA is already included.
- genetic algorithms as virtual user manangers (GAVUM) [pages on their way]
It is a subtle change in perspective and involves these basic ideas -
I've done a talk on it, when my slides
didn't come up and I've also tried writing it up a
bit more formally.
- write your programs for people.
- use the mvc pattern
- now you can use the same interface people use on the model, with
genetic algorithm individuals
- the same view information people get can be used by genetic
algorithm individuals in order to calculate fitness
- as the ga individuals evolve, one can take their representations
and plug them into the user app immediately, in order to trace the
path that the ga took...
- resource allocation problem [pages on their way]
I use this resource allocation problem as an example of the
pattern and the GAVUM
architecture as well. Additionally, it is
a pretty interesting autonomous agent problem.
- networked snake [pages on their way]
My brother's telephone allows people to play snake with each other for 10 cents
a minute, or something like that. Grad students don't get cell phones.
But I wanted to play snake - and it seemed like a good enough excuse to
learn how to do some basic networking in Java. Integrating it into the
MVC pattern and using proxies made the whole process much easier. The program
isn't in a really solid/robust state, but I wanted to learn about distributing
the MVC game, which I did. Still, it's fun to play, and using the GA, one
can evolve different snake controllers (artificial intelligences) using
the same snake server program...creating a co-evolution environment for free.
- 1 dimensional cellular automata
Working in San Diego with Hans Sieburg got me into cellular automata.
Particularly, asynchronous update rules. With synchronous update
rules, coordination (it's a common theme...) is much easier, because
there is that central clock ticking. People claim there is no
global information - but in synchronous models, there is global information...the
update method, with its clock that effects every site simultaneously is
a global coordinator. So here's a 1-d cellular automata that was created to
show the differences that occur when that global information is removed.