Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3
- from sys import stderr
- import numpy as np
- from numpy import ones,zeros,fill_diagonal,max
- from numpy.random import choice
- pop_size = 100
- steps_total = 10000
- steps_skip = 1000 #после этого числа поколений в stdout идёт печать возраста предка.
- parents = ones(pop_size, dtype=np.int) #сначала все индивиды братья
- distances = ones((pop_size,pop_size), dtype=np.int) #поэтому общий предок каждой их пары жил 1 поколение назад
- fill_diagonal(distances,0) #кроме пары с самим собой :)
- print(max(distances))
- for step in range(steps_total):
- if step % 100 == 0:
- print(step,file=stderr)
- parents = choice(pop_size,size=pop_size) #случайное, неограниченное порождение потомков
- distances_new = zeros((pop_size,pop_size), dtype=np.int)
- for i in range(pop_size-1):
- for j in range(i,pop_size):
- distances_new[i,j] = distances[parents[i],parents[j]]+1 #общий предок пары жил на одно поколеие раньшеб чем общих предок подителей пары
- distances=distances_new
- if step >= steps_skip:
- print(max(distances))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement