WARNING: This WWW page contains a table, this page is bested viewed with a table capable brouser like Netscape Navagator or MicroSoft's Internet Explorer


Dynamic PE Tag


Abstract

My final project is based off of PE Tag. Persuer/Evader Tag was studied by Reynolds, but he kept his models very simple. My plans are to expand uppon his basic work and add in more complicated dynamics like momentum and acceleration into the problem and see what the new genetic algorithms produce.

The Actual Program

I am planning to use GP to generate a large population of mini-lisp-like programs that will be stored in a binary tree. These programs will control the way the bot evade and persue.

The gory details...

I am using lil-gp as my GP package which was written by 2 people from the University of Michigan, Douglas Zongker and Dr. Bill Punch, however Bill Rand has taken over the primary responsibility of maintaining lil-gp. I am planning to run this simulation off of my Be Box which is a relativly new PowerPC machine with 2 66 MHz 603's currently with 24 megs of RAM and a 240MB Quantum IDE hard drive.

My current plans are to run each bot agaist every other with the one currently being checked starting out as being tagged (havnt desided yet if it should play itself, something interesting to think about though!). Its fitness would then be the amount of "ticks" that the bot was not it. I am probably going to run with generations ranging from 500 to 2,000 bots with a 1,000 steps (one time through the bots code) per battle. Depending on how my BeBox runs I will probably alter these values (hopefully higher and not lower!). I will then probably replace somewhere from 25% to 50% of the lower population @ 80% and a totally random pick 20% of the time to help prevent a lucky stragity from taking over. The removed bots will then be replaced by mutated and crossed versions of the other 50%-75% remaining bots.

The 2 "bots" will play in an wrapping arena 700 x 575 units big. Each bot will take up a single unit and will have a reach of 2 units away. To make things interesting, the bots use up energy to move around and to change speed. If they run out of energy they are stuck and will most likly remain taged or get tagged if they arnt already. There will also be random energy pellets and energy mines in the playing field, a pellet will give you more energy and a mine will damage you by taking away some of your energy.

Each bot knows where the other bot is in its own local rectangular coordinates. This way there is no need for complex math on the bots part to figure out where his opponate is relative to the direction he is moving. I am planning to work out the local coordinates such that when they cross a boundry and get flung to the other side they will not notice it and it will act as if they are in an infinate sized arena.

Current List of Funtions/Terminals
Functions
Function Name Purpose Source
(if-it a b) If the bot is it, a, else b Reynolds '94
(set!-spd a) Sets bots new speed to a This project
(set!-dir a) Sets bots new direction to a This project
(+ a b) Returns a + b Common Lisp
(- a b) Returns a - b Common Lisp
(* a b) Returns a * b Common Lisp
(/ a b) Returns a / b (if b == 0 then a / b = 0) Reynolds '94/Koza '92
(% a b) Returns a mod b (remainder of a / b) Common Lisp
(min a b) Returns the smaller of a or b Common Lisp
(max a b) Reutnrs the larger of a or b Common Lisp
(abs a) Returns the absolute value of a Common Lisp
(iflte a b c d) If a <= b then c else d Renyolnds '94/Koza '92
(ifgt a b c d) If a > b then c else d This project
Terminals
Terminal Name Purpose Source
energy Current Energy Level This project
curspd Current Speed This project
curdir Current Direction This project
X Opponants Local X Reynolds '94
Y Opponants Local Y Reynolds '94
englocx Local X of closet Energy Pellet This project
englocy Local Y of cloest Energy Pellet This project
minelocx Local X of closet Mine This project
minelocy Local Y of cloest Mine This project


Return to my personal home page
Return to the COSI 110a home page