This commit is contained in:
leo 2022-04-25 23:02:32 +02:00
parent a820bd99e3
commit 4a6c5f97ba
Signed by: leo
GPG Key ID: 0DD993BFB2B307DB
6 changed files with 38 additions and 11 deletions

7
Car.py
View File

@ -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")

View File

@ -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

View File

@ -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
View 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>

View File

@ -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)

View File

@ -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>