diff --git a/Car.py b/Car.py index 968e29c..06f73ce 100644 --- a/Car.py +++ b/Car.py @@ -36,7 +36,7 @@ class Car(): #print(f"{self.id} : {startEdge.getID()} -> {nextEdge.getID()} via {laneId}") - def __init__(self,carID,route,startTime,dynSpeed,parentMap,parentController,infoWidg): + def __init__(self,carID,route,startTime,dynSpeed,IA,parentMap,parentController,infoWidg): self.id=carID self.map=parentMap self.controller=parentController @@ -49,6 +49,7 @@ class Car(): self.leader=None self.startTime=float(startTime) self.dynSpeed=(dynSpeed == '1') if isinstance(dynSpeed, str) else dynSpeed + self.IA=(IA == '1') if isinstance(IA, str) else IA self.cligno=[] self.pos=[0,0] @@ -73,7 +74,7 @@ class Car(): self.nu = 0 self.gamma = 10 self.delta = 0 - self.T = uniform(0.9,1.6) + self.T = uniform(0.9,1.6) if not self.IA else 0 self.size = 3 self.vroom = 0 @@ -433,7 +434,7 @@ class Car(): vb = (vleader + self.v) / 2 bb = (bleader + self.b) / 2 - vsec = vleader + (self.leaderDist - vleader * self.T - self.minSpace)/((vb/bb) + self.T) + vsec = vleader + (self.leaderDist - vleader * self.T - self.minSpace)/((vb/bb) + self.T) if vb != 0 else vleader vd = min(self.v + self.a * dt, vsec, vmax) self.v = max(0, vd-self.nu) self.updateGraph(self.v, vmax, vsec) @@ -516,7 +517,7 @@ class Car(): self.signals.updateDisp.emit(("Leader", self.leader if self.leader is None else f"{self.leader.id} @ {self.leaderDist:.2f}m (inter : {self.leaderBefore})")) def __copy__(self): - copy = Car(self.id, self.rawRoute, self.startTime, self.dynSpeed, self.map, self.controller, self.infoWidg) + copy = Car(self.id, self.rawRoute, self.startTime, self.dynSpeed, self.IA, self.map, self.controller, self.infoWidg) copy.route = self.route copy.cligno = self.cligno copy.pos = self.pos.copy() diff --git a/CarController.py b/CarController.py index d6a4290..effcb7d 100644 --- a/CarController.py +++ b/CarController.py @@ -136,21 +136,25 @@ class CarController: route=vehicle.route[0].edges.split() if vehicle.name == "vehicle": dynSpeed = '0' + IA = '0' if(vehicle.hasChild("param")): for param in vehicle.getChild("param"): key = param.getAttributeSecure("key") if key == "dynamicSpeed": dynSpeed = param.getAttributeSecure("value") + elif key == "IA": + IA = param.getAttributeSecure("value") if(self.infoWidget is not None) : wId=self.infoWidget.addItem(carInfo(self.infoWidget), vehicle.id) - self.cars.append(Car(vehicle.id,route,vehicle.depart,dynSpeed,self.map,self,self.infoWidget.widget(wId))) + self.cars.append(Car(vehicle.id,route,vehicle.depart,dynSpeed,IA,self.map,self,self.infoWidget.widget(wId))) else: - self.cars.append(Car(vehicle.id,route,vehicle.depart,dynSpeed,self.map,self,None)) + self.cars.append(Car(vehicle.id,route,vehicle.depart,dynSpeed,IA,self.map,self,None)) elif vehicle.name == "flow": randomFlow = 0 burstInterval = 1 burstTime = 1 dynSpeed = '0' + IA = '0' if(vehicle.hasChild("param")): for param in vehicle.getChild("param"): key = param.getAttributeSecure("key") @@ -162,7 +166,9 @@ class CarController: burstTime = param.getAttributeSecure("value") elif key == "dynamicSpeed": dynSpeed = param.getAttributeSecure("value") - self.flows.append(Flow(vehicle.id, route, vehicle.begin, vehicle.vehsPerHour, randomFlow, burstInterval, burstTime, dynSpeed, self.map, self)) + elif key == "IA": + IA = param.getAttributeSecure("value") + self.flows.append(Flow(vehicle.id, route, vehicle.begin, vehicle.vehsPerHour, randomFlow, burstInterval, burstTime, dynSpeed, IA, self.map, self)) def prepareRoute(self): for car in self.cars: diff --git a/Flow.py b/Flow.py index 9e4e238..bd495f0 100644 --- a/Flow.py +++ b/Flow.py @@ -4,14 +4,14 @@ import copy from random import randint class Flow: - def __init__(self,ID,route,start,vph,randomVal, burstInterval, burstTime, dynSpeed,parentMap,parentController): + def __init__(self,ID,route,start,vph,randomVal, burstInterval, burstTime, dynSpeed, IA,parentMap,parentController): self.route = route self.id = ID self.startTime = start self.vph = float(vph) self.randomVal = int(randomVal) self.adjVPH = self.vph + randint(0,self.randomVal) - self.carModel = Car("model",self.route,start,dynSpeed,parentMap,parentController,None) + self.carModel = Car("model",self.route,start,dynSpeed,IA,parentMap,parentController,None) self.carsSpawned = 0 self.priority = 0 self.burstInterval = float(burstInterval) diff --git a/rdpt_polytech_burst_2_IA.rou.xml b/rdpt_polytech_burst_2_IA.rou.xml new file mode 100644 index 0000000..1f5a453 --- /dev/null +++ b/rdpt_polytech_burst_2_IA.rou.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +