takahashi.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. from lottery import *
  2. AVG_LEN = 3
  3. KC_STEP=0.1
  4. KC_SEARCH_START=-2.3
  5. KC_SEARCH_END=-1.9
  6. TI_STEP=0.05
  7. TI_SEARCH_START=-0.7
  8. TI_SEARCH_END=-0.5
  9. TD_STEP=0.05
  10. TD_SEARCH_START=0.1
  11. TD_SEARCH_END=0.3
  12. TS_STEP=0.05
  13. TS_SEARCH_START=-0.4
  14. TS_SEARCH_END=-0.2
  15. EPSILON=0.0001
  16. RUNNING_TIME=1000
  17. NODES=1000
  18. randomize_nodes_str = input("randomize number of nodes (y/n):")
  19. randomize_nodes = True if randomize_nodes_str.lower()=="y" else False
  20. rand_running_time_str = input("random running time (y/n):")
  21. rand_running_time = True if rand_running_time_str.lower()=="y" else False
  22. debug_str = input("debug mode (y/n):")
  23. debug = True if debug_str.lower()=="y" else False
  24. target = 1
  25. accuracy = []
  26. # Kc
  27. kc_range=tqdm(np.arange(KC_SEARCH_START, KC_SEARCH_END, KC_STEP))
  28. for kc in kc_range:
  29. kc_range.set_description('kc: {}'.format(kc))
  30. if kc == 0:
  31. continue
  32. # Ti
  33. ti_range=tqdm(np.arange(TI_SEARCH_START, TI_SEARCH_END, TI_STEP))
  34. for ti in ti_range:
  35. ti_range.set_description('kc: {}, ti: {}'.format(kc, ti))
  36. if ti == 0:
  37. continue
  38. # Td
  39. td_range = tqdm(np.arange(TD_SEARCH_START, TD_SEARCH_END, TD_STEP))
  40. for td in td_range:
  41. td_range.set_description('kc: {}, ti: {}, td: {}'.format(kc, ti, td))
  42. if td == 0:
  43. continue
  44. # Ts
  45. ts_range = tqdm(np.arange(TS_SEARCH_START, TS_SEARCH_END, TS_STEP))
  46. for ts in ts_range:
  47. ts_range.set_description('kc: {}, ti: {}, td: {}, ts: {}'.format(kc, ti, td, ts))
  48. if ts == 0:
  49. continue
  50. accs = []
  51. for i in range(0, AVG_LEN):
  52. dt = DarkfiTable(0, RUNNING_TIME, kc=kc, ti=ti, ts=ts, td=td)
  53. darkie_accs = []
  54. #sum_airdrops = 0
  55. # random nodes
  56. RND_NODES = random.randint(5, NODES) if randomize_nodes else NODES
  57. for idx in range(0,RND_NODES):
  58. # random airdrops
  59. #darkie_airdrop = None
  60. #if idx == RND_NODES-1:
  61. #darkie_airdrop = AIRDROP - sum_airdrops
  62. #else:
  63. #remaining_stake = (AIRDROP-RND_NODES)-sum_airdrops
  64. #if remaining_stake <= 1:
  65. #continue
  66. #darkie_airdrop = random.randrange(1, remaining_stake)
  67. #sum_airdrops += darkie_airdrop
  68. darkie = Darkie(CONTROLLER_TYPE_TAKAHASHI)
  69. dt.add_darkie(darkie)
  70. darkie_acc = dt.background(rand_running_time, debug)
  71. darkie_accs+=[darkie_acc]
  72. acc = sum(darkie_accs)/(float(len(darkie_accs))+EPSILON)
  73. accs+=[acc]
  74. avg_acc = sum(accs)/float(AVG_LEN)
  75. gains = (avg_acc, (kc, ti, td, ts))
  76. accuracy+=[gains]
  77. accuracy=sorted(accuracy, key=lambda i: i[0], reverse=True)
  78. with open("takahashi_gains.txt", "w") as f:
  79. buff=''
  80. for gain in accuracy:
  81. line=str(gain[0])+','+','.join([str(i) for i in gain[1]])+'\n'
  82. buff+=line
  83. f.write(buff)