plot progress per run

Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
This commit is contained in:
Csaba Kiraly 2023-03-27 23:16:05 +02:00
parent eb4f451303
commit dc51727b32
No known key found for this signature in database
GPG Key ID: 0FE274EE8C95166E
3 changed files with 18 additions and 2 deletions

View File

@ -3,6 +3,7 @@
import networkx as nx
import logging, random
import pandas as pd
import matplotlib
from functools import partial, partialmethod
from datetime import datetime
from DAS.tools import *
@ -13,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
@ -24,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
@ -240,6 +242,16 @@ class Simulator:
progress = pd.DataFrame(progressVector)
if self.config.saveProgress:
self.result.addMetric("progress", progress.to_dict(orient='list'))
if self.config.plotProgress:
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)
return self.result

View File

@ -22,6 +22,10 @@ dumpXML = 1
# save progress vectors to XML
saveProgress = 1
# plot progress for each run to PNG
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()