/
main.py
executable file
·104 lines (82 loc) · 2.44 KB
/
main.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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#!/Library/Frameworks/Python.framework/Versions/2.7/bin/python
import pyga
import os
import time
import sys
import getopt
def java_semaphor(path):
if os.path.exists(path):
os.remove(path)
return True
else:
return False
def set_ga_semaphor(path):
open(path, 'w').close()
def start_ga(populations, individuals, genes, mutationrate, datafolder, generations_path, semaphor_path, result_path, ga_semaphor_file):
# setup the folders
if not os.path.exists(datafolder):
os.makedirs(datafolder)
else:
print 'Directory exists:', datafolder
print 'Are you sure you want to initialize a GA here?'
sys.exit()
if not os.path.exists(generations_path):
os.makedirs(generations_path)
if not os.path.exists(semaphor_path):
os.makedirs(semaphor_path)
if not os.path.exists(result_path):
os.makedirs(result_path)
ga = pyga.pyga(populations, individuals, genes, mutationrate)
ga.export_setup(datafolder)
ga.export_to_file(datafolder)
set_ga_semaphor(ga_semaphor_file)
return ga
def main2(argv):
datafolder = 'data/'
max_generations = 100000
populations = 1
individuals = 5
genes = 3
mutation_rate = 0.02
initialize_ga = False
try:
opts, args = getopt.getopt(argv,"hid:p:u:g:m:", [])
except getopt.GetoptError:
print 'main.py -i <true/false> -d <datadir> -p <populations> -u <individuals> -g <genes> -m <mutationrate>'
sys.exit(2)
for opt, arg in opts:
if opt == '-i':
initialize_ga = True
elif opt == '-d':
datafolder = arg
elif opt == '-p':
populations = int(arg)
elif opt == '-u':
individuals = int(arg)
elif opt == '-g':
genes = int(arg)
elif opt == '-m':
mutation_rate = float(arg)
generations_path = datafolder + 'generations/'
semaphor_path = datafolder + 'semaphors/'
result_path = datafolder + 'results/'
java_semaphor_file = semaphor_path + 'JAVAKlar.sem'
ga_semaphor_file = semaphor_path + 'GAKlar.sem'
setup_file = datafolder + 'setup.txt'
os.system('clear')
if initialize_ga:
ga = start_ga(populations, individuals, genes, mutation_rate, datafolder, generations_path, semaphor_path, result_path, ga_semaphor_file)
print 'GA initialized.'
sys.exit()
for i in range(max_generations):
while not java_semaphor(java_semaphor_file):
time.sleep(0.1)
print 'Generation', i
ga = pyga.pyga()
ga.import_folder(setup_file, result_path)
ga.run(1)
ga.export_to_file(datafolder)
set_ga_semaphor(ga_semaphor_file)
time.sleep(0.1)
if __name__ == "__main__":
main2(sys.argv[1:])