Newsgroups: comp.ai.games
Path: cantaloupe.srv.cs.cmu.edu!das-news2.harvard.edu!news2.near.net!news.mathworks.com!uhog.mit.edu!news.kei.com!wang!news
From: bruck@actcom.co.il (Uri Bruck)
Subject: Re: How to detect human patterns ?
Organization: ACTCOM - Internet Services in Israel
Date: Tue, 21 Mar 1995 23:33:22 GMT
Message-ID: <D5tDFn.F0q@actcom.co.il>
References: <LAVOIE.95Mar13191953@gemini.genie.uottawa.ca> <SMISHRA.95Mar14122529@kiwi.acns.nwu.edu>
Sender: news@wang.com
Lines: 47

Sunil Mishra (smishra@kiwi.acns.nwu.edu) wrote:
: In article <LAVOIE.95Mar13191953@gemini.genie.uottawa.ca> lavoie@gemini.genie.uottawa.ca (Lavoie Philippe) writes:

:    If you can direct me to a reference, a source code or give my hints it
:    would be appreciated.

: Don't have any references, but have you considered reverse engineering?
: Have a little routine in your netrek server to record what the players do,
: while you are playing. Then you figure out from the data what the players
: do and try to come up with some kind of correlation between their actions
: and their experience. You then program these specific things into your
: robot, and see what kind of performance you get.

: The reason I am not suggesting a genetic algorithm or neural net is that
: these might turn out to be too slow, and give you far too little control on
: the behavior of your robot. This technique, of anticipating the possible
: responses before you write the code and building the program around it, is
: I think what has been used in a large number of programs, simply because it
: is a LOT easier to do, though not very intelligent if you look at it from
: the point of view of AI.

: Sunil
Sounds like you are suggesting a variation on a Markov Chain.
Basically , list all moves of a player in sequence. When trying to predict
the player's next move, compare their last n (1,2,3....) moves to 
the recorded sequence, if a match is found, assume that the next move
will the same as the move that followd the same sequnce the previous
times. 
example1 :last three moves were shoot,dodge,shoot.
you look them in the move list and find that after every sequence of
shoot,dodge, shoot the next move was run-to-the-right. your guess would
be that this is the player's next move.
example2 :same last three move, however, in this example you find that 
ina third of the cases the player ran right, and in the rest they ran 
to the left. Guess one of the two, but give more weight toe the one that 
occures most often. 

I would also suggest genetic algorithms. they require large populations
and a lot of time to reach a solution. in your case you are not lookng
for one ideal solution, but for several good/adequate ones, so you could 
achieve some results in a shorter time. 
If you could combine genetic algorithms with Markov chaining somehow
it could produce a powerful algorithms, the essence of which I would
be happy to see posted.
	Uri Bruck
bruck@actcom.co.il

