diff --git a/Car.py b/Car.py index edab79d..0f6b7fe 100644 --- a/Car.py +++ b/Car.py @@ -55,9 +55,12 @@ class Car(): self.vmax=0 - self.gamma = 5 + self.alpha = 0.1 + self.beta = 0.1 + self.nu = 0.1 + self.gamma = 10 self.delta = 0 - self.T = uniform(0.9,1.6) + self.T = 1.3#uniform(0.9,1.6) self.size = 3 self.vroom = 0 @@ -170,6 +173,8 @@ class Car(): return cDist def getLeaderAtIntersection(self, prevInd, edgeInd): + if(self.getCurrentEdge().isSpecial()): + return while(self.route[edgeInd].isSpecial()): edgeInd = edgeInd + 1 if edgeInd >= len(self.route): @@ -254,7 +259,7 @@ class Car(): if(self.leaderBefore): if(vleader == 0): return - if(self.distToInter > (self.T * self.vmax) or ((self.distToInter / self.vmax) < (self.leaderDist / vleader) - 2*self.T)): + if(self.distToInter > (self.T * self.vmax) or ((self.distToInter / self.vmax) < (self.leaderDist / vleader) - 2 * self.T)): self.v=self.vmax else: self.v = 0 @@ -283,7 +288,31 @@ class Car(): self.v=max(0,vd) self.updateGraph(self.v, vmax, vsec) + + def conduiteGipps(self, dt): #Nope + Va = self.v + 2.5 * self.a * dt * (1 - self.v/self.vmax) * sqrt(0.025 + self.v/self.vmax) + #Vb = self.b * dt + sqrt(self.b**2 * dt**2 - self.b * ) + + def conduiteKrauss(self, vmax, leader, dt): + if self.id == "f_00" and self.controller.t%10>5: + self.v = 0 + return + if leader is None: + vd = min(self.v + self.a * dt, vmax) + self.v = max(0, vd-self.nu) + return + + vleader = leader.v + bleader = leader.b + vb = (vleader + self.v) / 2 + bb = (bleader + self.b) / 2 + #S = self.alpha * vleader**2 + self.beta * self.v**2 + self.gamma * self.v + self.delta + vsec = vleader + (self.leaderDist - vleader * self.T)/((vb/bb) + self.T) + vd = min(self.v + self.a * dt, vsec, vmax) + self.v = max(0, vd-self.nu) + self.updateGraph(self.v, vmax, vsec) + def updateGraph(self, v, vmax, vsec): if self.infoWidg is None: return @@ -299,7 +328,7 @@ class Car(): self.leader=self.getLeader(100) - self.conduite(self.vmax,self.leader,dt) + self.conduiteKrauss(self.vmax,self.leader,dt) lgt=self.v*dt diff --git a/test11.rou.xml b/test11.rou.xml index fa850bc..ca66e09 100644 --- a/test11.rou.xml +++ b/test11.rou.xml @@ -4,40 +4,40 @@ --> - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/test12.rou.xml b/test12.rou.xml index b17576c..3c56a07 100644 --- a/test12.rou.xml +++ b/test12.rou.xml @@ -7,7 +7,25 @@ + + + + + + + + + + + + + + + + + + diff --git a/test14.rou.xml b/test14.rou.xml index 122f469..f604cea 100644 --- a/test14.rou.xml +++ b/test14.rou.xml @@ -7,10 +7,10 @@ - + - + diff --git a/test16.rou.xml b/test16.rou.xml index 8fdb722..dd94b1e 100644 --- a/test16.rou.xml +++ b/test16.rou.xml @@ -4,17 +4,17 @@ --> - + - + - + - + diff --git a/test7.rou.xml b/test7.rou.xml index e311655..6c809ad 100644 --- a/test7.rou.xml +++ b/test7.rou.xml @@ -30,4 +30,8 @@ + + + + diff --git a/test9.net.xml b/test9.net.xml new file mode 100644 index 0000000..1f37089 --- /dev/null +++ b/test9.net.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +