mirror of
https://github.com/darkrenaissance/darkfi.git
synced 2026-01-09 14:48:08 -05:00
42 lines
1.6 KiB
Python
42 lines
1.6 KiB
Python
from core.lottery import *
|
|
import os
|
|
import numpy
|
|
from matplotlib import pyplot as plt
|
|
|
|
os.system("rm log/f_output.hist; rm log/f_feedback.hist")
|
|
|
|
RUNNING_TIME = int(input("running time:"))
|
|
ERC20DRK=2.1*10**9
|
|
NODES=1000
|
|
plot = []
|
|
EXPS=10
|
|
for nodes in numpy.linspace(1,NODES, 10):
|
|
accs = []
|
|
for _ in range(EXPS):
|
|
darkies = []
|
|
egalitarian = ERC20DRK/NODES
|
|
darkies += [ Darkie(random.gauss(egalitarian, egalitarian*0.1), strategy=random_strategy(EPOCH_LENGTH)) for id in range(int(nodes)) ]
|
|
#darkies += [Darkie() for _ in range(NODES*2)]
|
|
airdrop = ERC20DRK
|
|
#dt = DarkfiTable(airdrop, RUNNING_TIME, CONTROLLER_TYPE_DISCRETE, kp=0.005999999999989028, ki=-0.005999999985257798, kd=0.01299999999999478, r_kp=-2.53, r_ki=29.5, r_kd=53.77)
|
|
dt = DarkfiTable(airdrop, RUNNING_TIME, CONTROLLER_TYPE_DISCRETE, kp=-0.0104, ki=-0.0366, kd=0.0384, r_kp=-2.53, r_ki=29.5, r_kd=53.77)
|
|
for darkie in darkies:
|
|
dt.add_darkie(darkie)
|
|
acc, apy, reward, staked_ratio, apr = dt.background(rand_running_time=False)
|
|
accs += [acc]
|
|
effective_airdrop = 0
|
|
for darkie in darkies:
|
|
effective_airdrop+=darkie.stake
|
|
effective_airdrop*=float(staked_ratio)
|
|
stake_portion = effective_airdrop/airdrop*100
|
|
print("network airdrop: {}, staked token: {}/{}% on {} nodes".format(airdrop, effective_airdrop, stake_portion, len(darkies)))
|
|
avg_acc = sum(accs)/EXPS
|
|
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('img'+os.sep+'stake_pid.png')
|
|
plt.show()
|