From: goetz@acsu.buffalo.edu (Phil Goetz)
Newsgroups: rec.games.programmer
Subject: Re: Computer-Controlled Players - simulated evolution
Date: 1 Sep 92 22:39:01 GMT
Organization: State University of New York at Buffalo/Comp Sci

(Nicolai Czempin) writes:
>cprem@marlin.jcu.edu.au writes:
>> Now we've got this discussion rolling, is anyone actually going to begin
>> coding a game with intelligent/evolvable CCPs.  It would be great to see
>> a game that had a large variety of CCPs that can evolve into stronger
>> opposition as the game develops.
>> 
>> Ross Milward,   ross@coral.cs.jcu.edu.au, cprem@marlin.jcu.edu.au
>
>A possible starting point would be those bot programs. However, the languages
>to program the bots are usually not very powerful.
>...
>Nicolai Czempin, University of Karlsruhe, Germany
>"I am not left-handed either"

On the contrary - the bot languages are too powerful for genetic algorithms.

To use genetic improvement of algorithms, you have to be able to change the
algorithm randomly.  A bot language is rather complex, and changing (say)
a GOTO to a LET A = B would probably not improve performance.  You would have
to sort through a lot of mutants before you found a viable one.

The key to using genetic algorithms is to formalize the behavior/construction
you wish to improve in a way such that a random change still produces something
plausible.  I don't think that computer-controlled players can be generated
using genetic algorithms.  You could write an algorithm that used a large
number of parameters to determine its behavior, and then vary those parameters
(i.e. define a standard deviation for each parameter, then create a descendent
by randomly selecting a value for each parameter from a normal distribution
around the parent's value using said standard deviation).  Or, you could have
a data language which specified the construction of, say, a battlebot, which
would be altered in random ways (i.e. make entire bot or subunits larger/
smaller, armor thicker/thinner, weapons heavier/lighter; you may then have
to 'renormalize' if bot construction is constrained by resources).  But a
von Neumann machine program is not a good candidate for genetic algorithms.

So to speculate about GA is usually pointless unless you propose a SPECIFIC
data encoding and method of varying it.

The same applies to neural nets.  Neither GA nor neural nets are magic.
It pains me to hear people explain futuristic systems that will do marvellous
things, saying, "They will use neural networks to ...".  Neural networks
compute functions.  They can generalize to previously unseen input, learn to
better approximate the function they compute, etc.  But you have to define the
function!  It has to be the right scope of function - you can't use letters as
input and expect a parse of an English sentence as output; you have to
hypothesize some modularity to the task.

I am aware that a network can theoretically do any computable task.  However,
if your function is not modularized well, the network will function
inefficiently, to the point that it will not work.

Usenet has a lot of discussion of genetic algorithms & neural nets, but seldom
arrives at the useful level of specific proposals.

Phil
goetz@cs.buffalo.edu
--
The Usenet Oracle has pondered your question deeply.
Your question was:

> help i'm a bug

And in response, thus spake the Oracle:

} <poof> you're a feature!