fix
This commit is contained in:
parent
a820bd99e3
commit
4a6c5f97ba
7
Car.py
7
Car.py
@ -62,7 +62,7 @@ class Car():
|
|||||||
|
|
||||||
self.alpha = 0.1
|
self.alpha = 0.1
|
||||||
self.beta = 0.1
|
self.beta = 0.1
|
||||||
self.nu = 0.1
|
self.nu = 0
|
||||||
self.gamma = 10
|
self.gamma = 10
|
||||||
self.delta = 0
|
self.delta = 0
|
||||||
self.T = uniform(0.9,1.6)
|
self.T = uniform(0.9,1.6)
|
||||||
@ -206,7 +206,7 @@ class Car():
|
|||||||
connections = self.route[prevInd].getConnections(self.route[edgeInd])
|
connections = self.route[prevInd].getConnections(self.route[edgeInd])
|
||||||
if(len(connections)==0):
|
if(len(connections)==0):
|
||||||
print("aaaaaaaaa")
|
print("aaaaaaaaa")
|
||||||
return
|
return None
|
||||||
connection = connections[0]
|
connection = connections[0]
|
||||||
linkInd = inter.getLinkIndex(connection)
|
linkInd = inter.getLinkIndex(connection)
|
||||||
if(linkInd == -1): # Ca devrait pas arriver, mais de toute évidence ça arrive
|
if(linkInd == -1): # Ca devrait pas arriver, mais de toute évidence ça arrive
|
||||||
@ -369,7 +369,7 @@ class Car():
|
|||||||
tti, sai = self.calcTti(self.distToInter, self.v, self.route[nextInternalIndex].getLane(0).getSpeed(), self.a) # TODO : laneID
|
tti, sai = self.calcTti(self.distToInter, self.v, self.route[nextInternalIndex].getLane(0).getSpeed(), self.a) # TODO : laneID
|
||||||
ltti, lsai = self.calcTti(self.leaderDist, vleader, leader.vmax, leader.a)
|
ltti, lsai = self.calcTti(self.leaderDist, vleader, leader.vmax, leader.a)
|
||||||
|
|
||||||
lta = leader.vmax / leader.a # temps ou le leader accelere (i.e on ne gagne pas de vitesse relative) (on considere que leader.a==self.a)
|
lta = (leader.vmax-vleader) / leader.a # temps ou le leader accelere (i.e on ne gagne pas de vitesse relative) (on considere que leader.a==self.a)
|
||||||
marg = lta + (lsai-sai) / self.a # marge à prendre pour accelerer après l'intersection sans que le leader nous rattrape
|
marg = lta + (lsai-sai) / self.a # marge à prendre pour accelerer après l'intersection sans que le leader nous rattrape
|
||||||
|
|
||||||
tts = self.v/self.b # time to stop, temps pour s'arreter si on freine mnt
|
tts = self.v/self.b # time to stop, temps pour s'arreter si on freine mnt
|
||||||
@ -378,6 +378,7 @@ class Car():
|
|||||||
# si on est suffisement loin de l'intersection (i.e on s'en fout du leader)
|
# si on est suffisement loin de l'intersection (i.e on s'en fout du leader)
|
||||||
# ou si on as le temps d'arriver à l'intersection avant le leader (plus un marge pour garder un distance de sécu)
|
# ou si on as le temps d'arriver à l'intersection avant le leader (plus un marge pour garder un distance de sécu)
|
||||||
# alors on accelere pour s'inserer
|
# alors on accelere pour s'inserer
|
||||||
|
#print(tti, leader.T, marg, ltti)
|
||||||
if self.distToInter > self.minSpace + dts or (tti + leader.T + marg) < ltti:
|
if self.distToInter > self.minSpace + dts or (tti + leader.T + marg) < ltti:
|
||||||
self.v = min(vmax, self.v + self.a*dt)
|
self.v = min(vmax, self.v + self.a*dt)
|
||||||
#print(self.id, "ca passe")
|
#print(self.id, "ca passe")
|
||||||
|
@ -100,6 +100,7 @@ class CarController:
|
|||||||
self.cars=[]
|
self.cars=[]
|
||||||
self.flows=[]
|
self.flows=[]
|
||||||
self.t=0
|
self.t=0
|
||||||
|
self.dt=1/60
|
||||||
self.spawnFailed = 0
|
self.spawnFailed = 0
|
||||||
|
|
||||||
self.infoWidget = None
|
self.infoWidget = None
|
||||||
@ -114,6 +115,7 @@ class CarController:
|
|||||||
varWidget.addWidget(varEdit(varWidget, self, "delta", 0.5))
|
varWidget.addWidget(varEdit(varWidget, self, "delta", 0.5))
|
||||||
varWidget.addWidget(varEdit(varWidget, self, "T", 0.3))
|
varWidget.addWidget(varEdit(varWidget, self, "T", 0.3))
|
||||||
varWidget.addWidget(varEdit(varWidget, self, "size", 3))
|
varWidget.addWidget(varEdit(varWidget, self, "size", 3))
|
||||||
|
varWidget.addWidget(varEdit(varWidget, self, "dt", self.dt))
|
||||||
|
|
||||||
|
|
||||||
def fromPath(self,path):
|
def fromPath(self,path):
|
||||||
@ -157,11 +159,11 @@ class CarController:
|
|||||||
return filter(lambda c: dist(c.pos, car.pos) < car.minSpace, cars)
|
return filter(lambda c: dist(c.pos, car.pos) < car.minSpace, cars)
|
||||||
|
|
||||||
def update(self):
|
def update(self):
|
||||||
if self.map.net is None:
|
if self.map.net is None or self.dt == 0:
|
||||||
return
|
return
|
||||||
self.t+=1/60
|
self.t+=self.dt
|
||||||
for car in self.cars:
|
for car in self.cars:
|
||||||
car.update(1.0/60)
|
car.update(self.dt)
|
||||||
|
|
||||||
for flow in self.flows:
|
for flow in self.flows:
|
||||||
if flow.shouldSpawn(self.t):
|
if flow.shouldSpawn(self.t):
|
||||||
@ -173,7 +175,7 @@ class CarController:
|
|||||||
else:
|
else:
|
||||||
self.spawnFailed += 1
|
self.spawnFailed += 1
|
||||||
flow.addCar2Counter()
|
flow.addCar2Counter()
|
||||||
print(f"nope, y as déjà une voiture ici : n°{self.spawnFailed}")
|
#print(f"nope, y as déjà une voiture ici : n°{self.spawnFailed}")
|
||||||
|
|
||||||
def draw(self,painter):
|
def draw(self,painter):
|
||||||
for ind,car in enumerate(self.cars):
|
for ind,car in enumerate(self.cars):
|
||||||
@ -191,5 +193,8 @@ class CarController:
|
|||||||
self.cars.remove(car)
|
self.cars.remove(car)
|
||||||
|
|
||||||
def updateConstant(self, name, val):
|
def updateConstant(self, name, val):
|
||||||
|
if name == "dt":
|
||||||
|
self.dt = val
|
||||||
|
return
|
||||||
for car in self.cars:
|
for car in self.cars:
|
||||||
car.__dict__[name] = val
|
car.__dict__[name] = val
|
||||||
|
@ -86,9 +86,9 @@ class mainLoop(QObject):
|
|||||||
|
|
||||||
@threadSafe
|
@threadSafe
|
||||||
def quickLoad(self):
|
def quickLoad(self):
|
||||||
self.map.fromPath("test_calc_dist.net.xml")
|
self.map.fromPath("test12.net.xml")
|
||||||
self.painter.generateTransform()
|
self.painter.generateTransform()
|
||||||
self.controller.fromPath("test_calc_dist.rou.xml")
|
self.controller.fromPath("test21.rou.xml")
|
||||||
self.controller.prepareRoute()
|
self.controller.prepareRoute()
|
||||||
|
|
||||||
def updateFps(self):
|
def updateFps(self):
|
||||||
|
16
test21.rou.xml
Normal file
16
test21.rou.xml
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<!-- generated on 2022-04-25 22:13:38 by Eclipse SUMO netedit Version 1.12.0
|
||||||
|
-->
|
||||||
|
|
||||||
|
<routes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://sumo.dlr.de/xsd/routes_file.xsd">
|
||||||
|
<vehicle id="v_0" depart="0.00">
|
||||||
|
<route edges="E7 E0 E4 E3 E6 E30 -E11"/>
|
||||||
|
</vehicle>
|
||||||
|
<vehicle id="v_1" depart="0.00">
|
||||||
|
<route edges="E11 -E3 E5 E4 E3 E10 -E9"/>
|
||||||
|
</vehicle>
|
||||||
|
<vehicle id="v_2" depart="5.50">
|
||||||
|
<route edges="E11 -E3 E5 E4 E3 E10 -E9"/>
|
||||||
|
</vehicle>
|
||||||
|
</routes>
|
@ -3,7 +3,7 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
## Form generated from reading UI file 'varEdit.ui'
|
## Form generated from reading UI file 'varEdit.ui'
|
||||||
##
|
##
|
||||||
## Created by: Qt User Interface Compiler version 6.2.3
|
## Created by: Qt User Interface Compiler version 6.3.0
|
||||||
##
|
##
|
||||||
## WARNING! All changes made in this file will be lost when recompiling UI file!
|
## WARNING! All changes made in this file will be lost when recompiling UI file!
|
||||||
################################################################################
|
################################################################################
|
||||||
@ -32,6 +32,7 @@ class Ui_varEdit(object):
|
|||||||
|
|
||||||
self.value = QDoubleSpinBox(varEdit)
|
self.value = QDoubleSpinBox(varEdit)
|
||||||
self.value.setObjectName(u"value")
|
self.value.setObjectName(u"value")
|
||||||
|
self.value.setDecimals(5)
|
||||||
|
|
||||||
self.horizontalLayout.addWidget(self.value)
|
self.horizontalLayout.addWidget(self.value)
|
||||||
|
|
||||||
|
@ -22,7 +22,11 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QDoubleSpinBox" name="value"/>
|
<widget class="QDoubleSpinBox" name="value">
|
||||||
|
<property name="decimals">
|
||||||
|
<number>5</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user