Calvin Hayes
Period 5

C. Hayes Genetic Algorithms in Machine Learning

Oct. 3 - GA program to solve 8-Queens (from Russell AI text)

Oct. 5 - randomly generated population, working on crossover/mutation techniques

Oct. 7 - prepared output for current prototype
	(NEEDS EXPLANATORY TEXT...here's the output)
	[[1, 2, 7, 1, 4, 0, 3, 6], 3]
	[[3, 3, 6, 2, 7, 2, 0, 4], 5]
	[[6, 4, 3, 1, 0, 1, 6, 4], 7]
	[[2, 5, 0, 4, 4, 6, 4, 0], 8]
	parent one: 2
	parent two: 1
	keep: 4
	drop: 3
	exchange point: 7
	child: [3, 3, 6, 2, 7, 2, 0, 6]
	counter	0

	[[1, 2, 7, 1, 4, 0, 3, 6], 3]
	[[3, 3, 6, 2, 7, 2, 0, 6], 5]
	[[3, 3, 6, 2, 7, 2, 0, 4], 5]
	[[2, 5, 0, 4, 4, 6, 4, 0], 8]
	parent one: 4
	parent two: 1
	keep: 2
	drop: 3
	exchange point: 7
	child: [2, 5, 0, 4, 4, 6, 4, 6]
	counter 1

	[[1, 2, 7, 1, 4, 0, 3, 6], 3]
	[[3, 3, 6, 2, 7, 2, 0, 6], 5]
	[[2, 5, 0, 4, 4, 6, 4, 6], 7]
	[[2, 5, 0, 4, 4, 6, 4, 0], 8]
	parent one: 2
	parent two: 4
	keep: 1
	drop: 3
	exchange point: 2
	mutation
	child: [3, 3, 0, 4, 2, 6, 4, 0]
	counter 2

Oct. 14 - 8-Queens, done, setting up a framework for Othello

Nov. 4 - website

Black (AI): 47
White (random): 17

greedy: 5.16
mobile: 16.48
stabile: 17.28
weighted combination: 19.36

Nov. 4 - Notes from his webpage ~chayes
This source code runs and displays 25 Othello games between black, the specified
AI that uses one or more heuristic values but not forward-search, and white, a 
random player. After each set of games has been played, the value printed is 
the average margin of victory for black. The viewer can then compare the success
of each method. Be warned, however, that there is a lot of variation for each 
margin of victory average due to the relatively low number of trials. 
Note that the weighted combination is at this time equal to 10*stability + 3*mobility + 1*power. 

Nov. 30 - Notes from his webpage 
THIS PART IS THE SAME AS ABOVE
This source code runs 10 Othello games between black, the specified AI that uses
one or more heuristic values that may or may not include forward-search, and 
white, a random player. After each set of games has been played, the value printed 
is the average margin of victory for black. The viewer can then compare the success 
of each method. Be warned, however, that there is a lot of variation for each 
margin of victory average due to the relatively low number of trials.

THIS PART IS NEW
In this trial, comparisons are made between searches of different depths for 
the greedy and combination heuristics. Note that the weighted combination is at
this time equal to 15*stability + 2*mobility + 1*power. "Forward" indicates a 
3-ply search, and "Far Forward" indicates a 5-ply search.


Dec. 7 - Notes from his webpage
SAME AS ABOVE Nov.30 and Nov. 4
This source code runs 25 Othello games between black, the specified AI that uses
one or more heuristic values that may or may not include forward-search, and 
white, a random player. After each set of games has been played, the value printed
is the average margin of victory for black. The viewer can then compare the success
of each method. Be warned, however, that there is a lot of variation for each 
margin of victory average due to the relatively low number of trials.

THIS IS NEW
This prototype compares each of 4 direct heuristics (greedy, mobile, stable, 
and a combination) with and without forward-searching. The number of trials has 
been increased to 25.

Jan 4 - Status Report -
see Jan 4
This source code runs 100 iterations of the completed genetic algorithm. Now, instead of simply playing games
for each heuristic, or set of weights, and measuring the results, the machine is changing these weights after
each iteration using the results. A slate of six 'players' is initialized, each with a current state of four
weights, one for each heuristic function. Each iteration, three games are played against a random player for
each 'player'. After all games have been played, the player with the lowest score is replaced by a new 
'player', that is created as a combination of the the two best scoring 'players'. These high-scoring players 
are called 'parents' of this new 'child'. There is a one in 5 chance that the new 'child' will undergo a 
mutation in one of the weights, and a one in 25 chance that the 'child' will have all of its weights set 
randomly. No forward search capabilities are used to preserve time. The program may take a few minutes to 
run to its conclusion as is. 


Jan. 23 - Current version,
Jan. 20th version is a good one to run for grading and review

Notes:
Calvin Hayes
January 20, 2005
Period 5

Notes


This source code runs 100 iterations of the completed genetic algorithm. Now, 
instead of simply playing games for each heuristic, or set of weights, and 
measuring the results, the machine is changing these weights after each 
iteration using the results. A slate of twelve 'players' is initialized, each 
with a current state of six weights, one for each Othello heuristic function. 
Each iteration, three games are played against a random player for each 'player'.
After all games have been played, the player with the lowest score is replaced 
by a new 'player', that is created as a combination of the the two best scoring
'players'. These high-scoring players are called 'parents' of this new 'child'.
This iteration has made some changes in the way the algorithm is run. First of 
all, the slate of players has been increased to 12. This allows for a more 
diverse group of players. Next, when considering which players have preformed 
best, the program now takes into account their performance on earlier iterations.
Finally, the proportion of mutations has been increased greatly and multiple 
mutations are possible on one child. However, in each mutation, the amount that
a weight can be mutated is limited to 200 points.