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.beta = 0.1
|
||||
self.nu = 0.1
|
||||
self.nu = 0
|
||||
self.gamma = 10
|
||||
self.delta = 0
|
||||
self.T = uniform(0.9,1.6)
|
||||
@ -206,7 +206,7 @@ class Car():
|
||||
connections = self.route[prevInd].getConnections(self.route[edgeInd])
|
||||
if(len(connections)==0):
|
||||
print("aaaaaaaaa")
|
||||
return
|
||||
return None
|
||||
connection = connections[0]
|
||||
linkInd = inter.getLinkIndex(connection)
|
||||
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
|
||||
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
|
||||
|
||||
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)
|
||||
# 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
|
||||
#print(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)
|
||||
#print(self.id, "ca passe")
|
||||
|
@ -100,6 +100,7 @@ class CarController:
|
||||
self.cars=[]
|
||||
self.flows=[]
|
||||
self.t=0
|
||||
self.dt=1/60
|
||||
self.spawnFailed = 0
|
||||
|
||||
self.infoWidget = None
|
||||
@ -114,6 +115,7 @@ class CarController:
|
||||
varWidget.addWidget(varEdit(varWidget, self, "delta", 0.5))
|
||||
varWidget.addWidget(varEdit(varWidget, self, "T", 0.3))
|
||||
varWidget.addWidget(varEdit(varWidget, self, "size", 3))
|
||||
varWidget.addWidget(varEdit(varWidget, self, "dt", self.dt))
|
||||
|
||||
|
||||
def fromPath(self,path):
|
||||
@ -157,11 +159,11 @@ class CarController:
|
||||
return filter(lambda c: dist(c.pos, car.pos) < car.minSpace, cars)
|
||||
|
||||
def update(self):
|
||||
if self.map.net is None:
|
||||
if self.map.net is None or self.dt == 0:
|
||||
return
|
||||
self.t+=1/60
|
||||
self.t+=self.dt
|
||||
for car in self.cars:
|
||||
car.update(1.0/60)
|
||||
car.update(self.dt)
|
||||
|
||||
for flow in self.flows:
|
||||
if flow.shouldSpawn(self.t):
|
||||
@ -173,7 +175,7 @@ class CarController:
|
||||
else:
|
||||
self.spawnFailed += 1
|
||||
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):
|
||||
for ind,car in enumerate(self.cars):
|
||||
@ -191,5 +193,8 @@ class CarController:
|
||||
self.cars.remove(car)
|
||||
|
||||
def updateConstant(self, name, val):
|
||||
if name == "dt":
|
||||
self.dt = val
|
||||
return
|
||||
for car in self.cars:
|
||||
car.__dict__[name] = val
|
||||
|
@ -86,9 +86,9 @@ class mainLoop(QObject):
|
||||
|
||||
@threadSafe
|
||||
def quickLoad(self):
|
||||
self.map.fromPath("test_calc_dist.net.xml")
|
||||
self.map.fromPath("test12.net.xml")
|
||||
self.painter.generateTransform()
|
||||
self.controller.fromPath("test_calc_dist.rou.xml")
|
||||
self.controller.fromPath("test21.rou.xml")
|
||||
self.controller.prepareRoute()
|
||||
|
||||
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'
|
||||
##
|
||||
## 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!
|
||||
################################################################################
|
||||
@ -32,6 +32,7 @@ class Ui_varEdit(object):
|
||||
|
||||
self.value = QDoubleSpinBox(varEdit)
|
||||
self.value.setObjectName(u"value")
|
||||
self.value.setDecimals(5)
|
||||
|
||||
self.horizontalLayout.addWidget(self.value)
|
||||
|
||||
|
@ -22,7 +22,11 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QDoubleSpinBox" name="value"/>
|
||||
<widget class="QDoubleSpinBox" name="value">
|
||||
<property name="decimals">
|
||||
<number>5</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
|
Loading…
x
Reference in New Issue
Block a user