forked from Asabere/Project-on-Genetic-Algorithm-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgenetic1.py
More file actions
40 lines (32 loc) · 1.28 KB
/
genetic1.py
File metadata and controls
40 lines (32 loc) · 1.28 KB
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
from All_Necessary_Funcs import *
def genetic(dist_mat = 'c.csv', serv_mat = 'x3.csv', potential = 'd.csv', max_iter = 100, Pc = 0.8, Pm = 0.2, Pop_Size = 50):
#Encoding
pop = list()
for i in range(1,21):
for j in range(i+1,21):
for k in range(j+1,21):
for l in range(k+1,21):
pop.append([i,j,k,l])
#Initialization
random.seed(1)
initial_pop = initialize(pop,Pop_Size)
index = 0
while index < max_iter: #stopping criteria 100 for now
#Evaluation
eval_list = evaluate(initial_pop, 'c.csv', 'x3.csv','d.csv')
#Selection
mate_pool = selection(initial_pop, eval_list, 5) # 2 offspring in the pool
#Crossover
(off_1,off_2) = crossover(mate_pool, Pc) #
print (index)
#Mutate
#problem here, ##genes can repeat
mut_off_1 = mutate(off_1,Pm) #
mut_off_2 = mutate(off_2,Pm)
#Elitism
initial_pop.append(mut_off_1)
initial_pop.append(mut_off_2)
# form of elitism ##change
index += 1
print ('There are ', len(initial_pop), 'chromosomes in the final generation. The best is:')
return max_occurs(initial_pop)