-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgenersi.py
64 lines (50 loc) · 1.86 KB
/
genersi.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import sys, traceback
from settings.constants import PLAYER_X, PLAYER_O
from settings.variables import MAX_DEPTH, IS_TOURNAMENT, GENERATIONS
from evolution.individual import IndividualFactory
from evolution.population import Population
from evolution.fitness import fitness
from utils.timer import startTimer
from utils.reporter import openReport, closeReport
from play.champion import contestChampion
currentTime = startTimer()
population = Population()
experimentDir = openReport()
currentGeneration = 0
generationFitness = {}
try:
for generation in range(GENERATIONS):
all_fitness = []
currentGeneration = generation
print(currentTime() + '\t| Generation number: ' + str(generation))
num = 0
for item in population.items:
num += 1
if GENERATIONS == generation + 1:
fitness(item = item, items=population.items, num=num, isTournament=True)
else:
fitness(item = item, items=population.items, num=num)
print(currentTime() + '\t| Item ' + str(num) + ' With Fitness: ' + str(item.fitness))
all_fitness.append(item.fitness)
generationFitness[str(generation + 1)] = all_fitness
if GENERATIONS != generation + 1:
population.moveGeneration()
except KeyboardInterrupt:
traceback.print_exc(file=sys.stdout)
best_player = population.best()
experimentTime = currentTime()
print('%s\t| Experiment Over' % experimentTime)
print('Contesting champion:')
results = {
'Noob': contestChampion(isComputer=True, item = item, difficulty= 'NOOB'),
'Adept': contestChampion(isComputer=True, item = item, difficulty= 'ADEPT'),
'Master': contestChampion(isComputer=True, item = item, difficulty= 'MASTER')
}
closeReport(
item=best_player,
experimentTime=experimentTime,
generation = currentGeneration,
results = results,
generationFitness = generationFitness,
experimentDir = experimentDir
)