From c61c92b3b08ce4986c05f3d60c1a5fa764c25a16 Mon Sep 17 00:00:00 2001 From: leo Date: Mon, 9 May 2022 15:47:55 +0200 Subject: [PATCH] burst mode --- CarController.py | 14 ++++++++++--- Flow.py | 6 ++++-- rdpt_polytech_burst.rou.xml | 40 +++++++++++++++++++++++++++++++++++++ 3 files changed, 55 insertions(+), 5 deletions(-) create mode 100644 rdpt_polytech_burst.rou.xml diff --git a/CarController.py b/CarController.py index 8eb3b0a..83e47bc 100644 --- a/CarController.py +++ b/CarController.py @@ -139,10 +139,18 @@ class CarController: self.cars.append(Car(vehicle.id,route,vehicle.depart,self.map,self,None)) elif vehicle.name == "flow": randomFlow = 0 + burstInterval = 1 + burstTime = 1 if(vehicle.hasChild("param")): - params = vehicle.getChild("param")[0] - randomFlow = params.getAttributeSecure("value") - self.flows.append(Flow(vehicle.id, route, vehicle.begin, vehicle.vehsPerHour, randomFlow,self.map, self)) + for param in vehicle.getChild("param"): + key = param.getAttributeSecure("key") + if key == "random": + randomFlow = param.getAttributeSecure("value") + elif key == "burstInterval": + burstInterval = param.getAttributeSecure("value") + elif key == "burstTime": + burstTime = param.getAttributeSecure("value") + self.flows.append(Flow(vehicle.id, route, vehicle.begin, vehicle.vehsPerHour, randomFlow, burstInterval, burstTime, self.map, self)) def prepareRoute(self): for car in self.cars: diff --git a/Flow.py b/Flow.py index c7adf6c..944d5ef 100644 --- a/Flow.py +++ b/Flow.py @@ -4,7 +4,7 @@ import copy from random import randint class Flow: - def __init__(self,ID,route,start,vph,randomVal,parentMap,parentController): + def __init__(self,ID,route,start,vph,randomVal, burstInterval, burstTime,parentMap,parentController): self.route = route self.id = ID self.startTime = start @@ -14,6 +14,8 @@ class Flow: self.carModel = Car("model",self.route,start,parentMap,parentController,None) self.carsSpawned = 0 self.priority = 0 + self.burstInterval = float(burstInterval) + self.burstTime = float(burstTime) self.cc = parentController def prepareRoute(self): @@ -21,7 +23,7 @@ class Flow: def shouldSpawn(self, t): f = self.carsSpawned / (t/3600) - return f < self.adjVPH + return f < self.adjVPH and t%self.burstInterval < self.burstTime def spawnCar(self): newCar = copy.copy(self.carModel) diff --git a/rdpt_polytech_burst.rou.xml b/rdpt_polytech_burst.rou.xml new file mode 100644 index 0000000..c20d5e8 --- /dev/null +++ b/rdpt_polytech_burst.rou.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +