comparison trafficintelligence/traffic_engineering.py @ 1208:a07e455baaa6

merged
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Wed, 26 Apr 2023 18:33:46 -0400
parents 770306fef827
children 3bfdb2ffd29d
comparison
equal deleted inserted replaced
1207:36f0d18e1fad 1208:a07e455baaa6
1 #! /usr/bin/env python 1 #! /usr/bin/env python
2 ''' Traffic Engineering Tools and Examples''' 2 ''' Traffic Engineering Tools and Examples'''
3 3
4 from math import ceil 4 from math import ceil
5 from numpy import e, log, arange 5 from numpy import e, log, arange
6 from scipy import stats
6 7
7 from matplotlib.pyplot import figure,plot,xlabel,ylabel, xlim, ylim 8 from matplotlib.pyplot import figure,plot,xlabel,ylabel, xlim, ylim
8 9
9 from trafficintelligence import prediction 10 from trafficintelligence import prediction
10 11
215 def v(self, k): 216 def v(self, k):
216 if k<self.kc: 217 if k<self.kc:
217 return self.vf 218 return self.vf
218 else: 219 else:
219 return self.vf*self.kc*(self.kj/k-1)/(self.kj-self.kc) 220 return self.vf*self.kc*(self.kj/k-1)/(self.kj-self.kc)
220 221
222 def generateDensities(n, maxDensity):
223 return stats.uniform.rvs(size=n)*maxDensity
224
225 def generateSpeedVolumes(fd, n, maxDensity, maxHGVProportion = 0, etrucks = 2.5):
226 densities = generateDensities(n, maxDensity)
227 speeds = [fd.v(k) for k in densities]
228 volumes = [fd.q(k) for k in densities]
229 if maxHGVProportion > 0:
230 hgvProportions = stats.uniform.rvs(size=n)*maxHGVProportion # en pourcent
231 volumes = [v/(1+(etrucks-1)*p/100) for v,p in zip(volumes, hgvProportions)]
232 else:
233 hgvProportions = None
234 return speeds, volumes, hgvProportions
235
236 def highwayLOS(k):
237 'returns the highway level of service for density k in veh/km'
238 if k>=28: return 'F'
239 elif k>=22: return 'E'
240 elif k>=16: return 'D'
241 elif k>=11: return 'C'
242 elif k>=7: return 'B'
243 else: return 'A'
244
221 ######################### 245 #########################
222 # intersection 246 # intersection
223 ######################### 247 #########################
224 248
225 class FourWayIntersection(object): 249 class FourWayIntersection(object):