Advertisement
Guest User

Untitled

a guest
Aug 24th, 2019
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.48 KB | None | 0 0
  1. import chess.pgn
  2.  
  3. PGN_PATH = 'test.pgn'
  4. NODES = 800
  5.  
  6. def average_time_per_move(pgn_file):
  7. pgn = open(pgn_file, encoding="utf-8-sig")
  8. stats = {} #format {engine_name : [total_time, nr_of_samples]}
  9. while True:
  10. game = chess.pgn.read_game(pgn)
  11. if game is None:
  12. break
  13. white_engine = game.headers['White']
  14. black_engine = game.headers['Black']
  15. engines = [white_engine, black_engine]
  16.  
  17. for engine in engines:
  18. if engine not in stats.keys():
  19. stats[engine] = [0.0, 0]
  20. node = game
  21. ply_nr = 0
  22. while not node.is_end():
  23. next_node = node.variations[0]
  24. engine = engines[ply_nr % 2]
  25. comment = node.comment
  26. if comment != 'book' and comment != '':
  27. used_time = float(comment.split(' ')[1][:-1])
  28. stats[engine][0] += used_time
  29. stats[engine][1] += 1
  30. node = next_node
  31. ply_nr += 1
  32.  
  33. #calculate average time used for move
  34. stats_final = {eng: stats[eng][0]/(stats[eng][1] if stats[eng][1]!= 0 else 1) for eng in stats.keys()}
  35. return(stats_final)
  36.  
  37. stats = average_time_per_move(PGN_PATH)
  38. nodes_per_move = 800
  39.  
  40. for engine in stats.keys():
  41. print(engine, NODES/stats[engine])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement