Procházet zdrojové kódy

[research/lotterysim] staked_tokens/accuracy curve

police před 3 roky
rodič
revize
b6727d8c12

+ 39 - 0
script/research/lotterysim/avg_instance.py

@@ -0,0 +1,39 @@
+from lottery import *
+import os
+import numpy
+from matplotlib import pyplot as plt
+
+os.system("rm f.hist; rm leads.hist")
+
+RUNNING_TIME = int(input("running time:"))
+ERC20DRK=2.1*10**9
+NODES=1000
+plot = []
+EXPS=10
+for portion in range(1,11):
+    accs = []
+    for _ in range(EXPS):
+        darkies = []
+        egalitarian = ERC20DRK/NODES
+        darkies += [ Darkie(random.gauss(egalitarian, egalitarian*0.1), commit=False) for id in range(int(NODES/portion)) ]
+        #darkies += [Darkie() for _ in range(NODES*2)]
+        airdrop = ERC20DRK
+        effective_airdrop  = 0
+        for darkie in darkies:
+            effective_airdrop+=darkie.stake
+        stake_portion = effective_airdrop/airdrop*100
+        print("network airdrop: {}, staked token: {}/{}% on {} nodes".format(airdrop, effective_airdrop, stake_portion, len(darkies)))
+        dt = DarkfiTable(airdrop, RUNNING_TIME, CONTROLLER_TYPE_DISCRETE, kp=0.005999999999989028, ki=-0.005999999985257798, kd=0.01299999999999478)
+        for darkie in darkies:
+            dt.add_darkie(darkie)
+        acc = dt.background(rand_running_time=False)
+        accs += [acc]
+    avg_acc = sum(accs)/EXPS*100
+    plot+=[(stake_portion, avg_acc)]
+
+
+plt.plot([x[0] for x in plot], [x[1] for x in plot])
+plt.xlabel('drk staked %')
+plt.ylabel('accuracy %')
+plt.savefig('stake.png')
+plt.show()

+ 5 - 4
script/research/lotterysim/constants.py

@@ -9,14 +9,15 @@ L = 2894802230932904885589274625217197696336305648194156071595467676434996763033
 N_TERM = 2
 N_TERM = 2
 REWARD = 1
 REWARD = 1
 BASE_L = L*0.01
 BASE_L = L*0.01
-F_MIN = 0.01
-F_MAX = 0.99
+F_MIN = 0.00001
+F_MAX = 0.99999
 EPSILON = 1
 EPSILON = 1
 
 
 L_HP = Num(28948022309329048855892746252171976963363056481941560715954676764349967630337.0)
 L_HP = Num(28948022309329048855892746252171976963363056481941560715954676764349967630337.0)
 REWARD_HP = Num(1)
 REWARD_HP = Num(1)
 BASE_L_HP = L_HP*Num(0.01)
 BASE_L_HP = L_HP*Num(0.01)
-F_MIN_HP = Num(0.01)
-F_MAX_HP = Num(0.99)
+F_MIN_HP = Num(0.00001)
+F_MAX_HP = Num(0.99999)
 EPSILON_HP = Num(1)
 EPSILON_HP = Num(1)
+
 ERC20DRK=2.1*10**9
 ERC20DRK=2.1*10**9

+ 1 - 1
script/research/lotterysim/f.hist

@@ -1 +1 @@
-0,0.7290000000000001,0.6561,0.5904900000000001,0.6354900000294359,0.5454900000147579,0.5904900000000001,0.5964899999852579,0.6024899999705157,0.6084899999557735,0.6274899999557573,0.6144899999557625,0.6014899999410365,0.6464899999557411,0.5884899999410417,0.6204899999262891,0.6264899999115469,0.6324899998968047,0.6644899999115145,0.6064899998968151,0.6384899998820625,0.6444899998673203,0.650489999852578,0.6564899998378358,0.6754899998378197,0.6494899998230989,0.6684899998083514,0.6874899998083353,0.6614899997936144,0.693489999793593,0.6674899997788722,0.6994899997788508,0.686489999778856,0.67348999976413,0.6924899997493826,0.7114899997493664,0.6854899997346456,0.7174899997346242,0.7044899997346294,0.6914899997199034,0.710489999705156,0.7424899997198658,0.6844899997051664,0.7164899996904138,0.7224899996756716,0.7414899996756554,0.7284899996756606,0.7154899996609346,0.7474899996609132,0.7344899996609184,0.7214899996461924,0.753489999646171,0.7274899996314502,0.7594899996314288,0.746489999631434,0.733489999616708,0.7654899996166866,0.7524899996166918,0.7524899996166918,0.7654899996314178,0.7334899996314392,0.75948999964616,0.7144899996314554,0.7464899996167028,0.7524899996019606,0.7584899995872184,0.8164899996313802,0.7074899996314497,0.75948999964616,0.7404899996609074,0.7214899996609236,0.7344899996609184,0.7214899996461924,0.753489999646171,0.7274899996314502,0.7464899996167028,0.7654899996166866,0.7524899996166918,0.7524899996166918,0.7654899996314178,0.7334899996314392,0.746489999631434,0.746489999631434,0.733489999616708,0.7524899996019606,0.7584899995872184,0.7774899995872022,0.7514899995724814,0.78348999957246,0.7704899995724652,0.7574899995577392,0.7764899995429918,0.7824899995282496,0.8404899995724114,0.7184899995577548,0.7894899995577178,0.763489999542997,0.7954899995429756,0.7954899995577068,0.7764899995724542,0.7574899995724704,
+0,0.7290000000000001,0.6561,0.6841000000000664,0.654299999646183,0.7121000000001328,0.6073000000000567,0.654299999646183,0.7206999996462543,0.673700000000128,0.5987000003539352,0.5792999999999903,0.6669000007078235,0.48710000106155465,0.4975000010614932,0.5445000007076195,0.6109000007076908,0.5639000010615645,0.49750000106149317,0.5445000007076195,0.6023000010615693,0.4975000010614931,0.5445000007076194,0.6023000010615692,0.48890000141537154,0.46090000141530524,0.49930000141531017,0.5079000010614316,0.5829000007076244,0.6195000003538123,0.6561000000000001,0.6755000003539451,0.5621000007077475,0.534100000707681,0.5811000003538074,0.6303000010616358,0.4591000010614883,0.5445000007076196,0.6023000010615694,0.47170000212312885,0.3195000017690414,0.5097000014152488,0.5377000014153153,0.49930000141531033,0.49930000141531033,0.5079000010614317,0.5657000014153816,0.46090000141530535,0.5079000010614317,0.5829000007076245,0.6109000007076909,0.5811000003538075,0.6475000003538788,0.6176999999999954,0.6755000003539452,0.5792999999999905,0.6926999996461881,0.729299999292376,0.7658999989385639,0.7938999989386303,0.7554999989386254,0.7554999989386254,0.7554999989386254,0.746899999292504,0.6890999989385541,0.7938999989386303,0.7554999989386254,0.7640999985847469,0.8218999989386967,0.7084999992924991,0.6633000000001897,0.5774999996461736,0.7206999996462548,0.6908999992923713,0.7572999992924426,0.7188999992924378,0.7188999992924378,0.7274999989385592,0.802499998584752,0.8218999989386969,0.7170999989386208,0.7554999989386256,0.7468999992925042,0.6804999992924329,0.7188999992924378,0.7274999989385592,0.785299999292509,0.6718999996463114,0.6353000000001235,0.6073000000000571,0.6371000003539405,0.5707000003538693,0.6091000003538741,0.6091000003538741,0.6091000003538741,0.6176999999999956,0.6926999996461883,0.7206999996462548,0.6908999992923713,0.7486999996463212,0.6524999992923665,

+ 1 - 1
script/research/lotterysim/highest_gain.txt

@@ -1 +1 @@
-accuracy:0.7414672554662889, kp: -0.03179999999987708, ki:-0.03319999929237562, kd:0.0015999999999950984
+accuracy:0.748666072596457, kp: 0.067400000000246, ki:-0.03319999929237562, kd:-0.0015999999999950568

+ 5 - 8
script/research/lotterysim/instance.py

@@ -4,17 +4,14 @@ import numpy
 os.system("rm f.hist; rm leads.hist")
 os.system("rm f.hist; rm leads.hist")
 
 
 RUNNING_TIME = int(input("running time:"))
 RUNNING_TIME = int(input("running time:"))
-
+NODES=1000
+ERC20DRK = 2.1*10**9
 
 
 if __name__ == "__main__":
 if __name__ == "__main__":
-    darkies = []
-    #darkies += [ Darkie(abs(random.gauss(20,20))*50, commit=False) for id in range(1000) ]
-    darkies += [ Darkie(ERC20DRK*random.random(), commit=False) for id in range(1000) ]
-    airdrop = 0
-    for darkie in darkies:
-        airdrop+=darkie.stake
+    darkies = [ Darkie(random.gauss(ERC20DRK/NODES, ERC20DRK/NODES*0.1)) for id in range(NODES) ]
+    airdrop = ERC20DRK
     print("network airdrop: {} on {} nodes".format(airdrop, len(darkies)))
     print("network airdrop: {} on {} nodes".format(airdrop, len(darkies)))
-    dt = DarkfiTable(airdrop, RUNNING_TIME, CONTROLLER_TYPE_DISCRETE, kp=0.005999999999989028, ki=-0.005999999985257798, kd=0.01299999999999478)
+    dt = DarkfiTable(airdrop, RUNNING_TIME, CONTROLLER_TYPE_DISCRETE, kp=-0.010399999999938556, ki=-0.0365999996461878, kd=0.03840000000000491)
     for darkie in darkies:
     for darkie in darkies:
         dt.add_darkie(darkie)
         dt.add_darkie(darkie)
     acc = dt.background(rand_running_time=False)
     acc = dt.background(rand_running_time=False)

+ 1 - 1
script/research/lotterysim/leads.hist

@@ -1 +1 @@
-0,0,0,0,0,3,0,0,0,0,0,1,1,0,2,0,0,0,0,2,0,0,0,0,0,1,0,0,1,0,1,0,1,1,0,0,1,0,1,1,0,0,2,0,0,0,1,1,0,1,1,0,1,0,1,1,0,1,1,1,2,1,2,0,0,0,0,4,1,2,2,1,1,0,1,0,0,1,1,1,2,1,1,1,0,0,0,1,0,1,1,0,0,0,4,0,1,0,1,2,2,1,
+0,0,0,0,1,0,2,1,0,1,2,2,0,3,2,1,0,1,2,1,0,2,1,0,2,2,1,1,0,0,0,0,2,2,1,0,3,1,0,2,4,0,0,1,1,1,0,2,1,0,0,1,0,1,0,2,0,0,0,0,1,1,1,1,2,0,1,1,0,2,2,3,0,1,0,1,1,1,0,0,2,1,1,2,1,1,0,2,2,2,1,2,1,1,1,1,0,0,1,0,2,0,

+ 2 - 2
script/research/lotterysim/lottery.py

@@ -45,8 +45,8 @@ class DarkfiTable:
                 self.darkies[i].update_stake()
                 self.darkies[i].update_stake()
             feedback = winners
             feedback = winners
             if winners==1:
             if winners==1:
-            #if count >= ERC20DRK and winners==1:
-                self.Sigma += 1
+                if count >= ERC20DRK:
+                    self.Sigma += 1
                 for i in range(len(self.darkies)):
                 for i in range(len(self.darkies)):
                     self.darkies[i].finalize_stake()
                     self.darkies[i].finalize_stake()
             count+=1
             count+=1

binární
script/research/lotterysim/stake.png