cristobal baray
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 consistent theme...

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 -

  • 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...
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.

resource allocation problem [pages on their way]

I use this resource allocation problem as an example of the MVC 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.