add per-run progress plots

Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
This commit is contained in:
Csaba Kiraly 2023-03-21 15:12:38 +01:00
parent 74ab8d3fd2
commit d20d8c7c3c
No known key found for this signature in database
GPG Key ID: 0FE274EE8C95166E
4 changed files with 15 additions and 6 deletions

View File

@ -14,7 +14,7 @@ from DAS.validator import *
class Simulator:
"""This class implements the main DAS simulator."""
def __init__(self, shape, config):
def __init__(self, shape, config, execID):
"""It initializes the simulation with a set of parameters (shape)."""
self.shape = shape
self.config = config
@ -25,6 +25,7 @@ class Simulator:
self.logLevel = config.logLevel
self.proposerID = 0
self.glob = []
self.execID = execID
# In GossipSub the initiator might push messages without participating in the mesh.
# proposerPublishOnly regulates this behavior. If set to true, the proposer is not
@ -217,10 +218,16 @@ class Simulator:
else:
steps += 1
progress = pd.DataFrame(progressVector)
progress.plot.line(subplots = [[cnS, cnN, cnV], [cnT0], [cnT1, cnR1, cnD1], [cnT2, cnR2, cnD2]],
title = str(self.shape))
matplotlib.pyplot.pause(30)
if self.config.plotProgress:
progress = pd.DataFrame(progressVector)
progress.plot.line(subplots = [[cnS, cnN, cnV], [cnT0], [cnT1, cnR1, cnD1], [cnT2, cnR2, cnD2]],
title = str(self.shape))
if not os.path.exists("results"):
os.makedirs("results")
if not os.path.exists("results/"+self.execID):
os.makedirs("results/"+self.execID)
filePath = "results/"+self.execID+"/"+str(self.shape)+".png"
matplotlib.pyplot.savefig(filePath)
self.result.populate(self.shape, missingVector)
self.result.addMetric("trafficStats", trafficStatsVector)

View File

@ -19,6 +19,7 @@ import numpy as np
from DAS.shape import Shape
dumpXML = 1
plotProgress = 1
visualization = 1
logLevel = logging.INFO

View File

@ -9,6 +9,7 @@ import numpy as np
from DAS.shape import Shape
dumpXML = 1
plotProgress = 1
visualization = 1
logLevel = logging.INFO

View File

@ -28,7 +28,7 @@ def runOnce(config, shape, execID):
shape.setSeed(config.randomSeed+"-"+str(shape))
random.seed(shape.randomSeed)
sim = Simulator(shape, config)
sim = Simulator(shape, config, execID)
sim.initLogger()
sim.initValidators()
sim.initNetwork()