Advertisement
Guest User

Untitled

a guest
Jun 6th, 2018
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.31 KB | None | 0 0
  1. #!/usr/bin/env python3
  2.  
  3. from sys import stderr
  4. import numpy as np
  5. from numpy import ones,zeros,fill_diagonal,max
  6. from numpy.random import choice
  7.  
  8. pop_size = 100
  9. steps_total = 10000
  10. steps_skip  = 1000 #после этого числа поколений в stdout идёт печать возраста предка.
  11.  
  12. parents   = ones(pop_size, dtype=np.int) #сначала все индивиды братья
  13. distances = ones((pop_size,pop_size), dtype=np.int) #поэтому общий предок каждой их пары жил 1 поколение назад
  14. fill_diagonal(distances,0) #кроме пары с самим собой :)
  15.  
  16. print(max(distances))
  17.  
  18. for step in range(steps_total):
  19.     if step % 100 == 0:
  20.         print(step,file=stderr)
  21.     parents = choice(pop_size,size=pop_size) #случайное, неограниченное порождение потомков
  22.     distances_new = zeros((pop_size,pop_size), dtype=np.int)
  23.     for i in range(pop_size-1):
  24.         for j in range(i,pop_size):
  25.             distances_new[i,j] = distances[parents[i],parents[j]]+1 #общий предок пары жил на одно поколеие раньшеб чем общих предок подителей пары
  26.     distances=distances_new
  27.     if step >= steps_skip:
  28.         print(max(distances))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement