Mercurial Hosting > traffic-intelligence
changeset 1208:a07e455baaa6
merged
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Wed, 26 Apr 2023 18:33:46 -0400 |
parents | 36f0d18e1fad (current diff) 770306fef827 (diff) |
children | 2064e52019db |
files | |
diffstat | 1 files changed, 25 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/trafficintelligence/traffic_engineering.py Wed Apr 26 18:33:29 2023 -0400 +++ b/trafficintelligence/traffic_engineering.py Wed Apr 26 18:33:46 2023 -0400 @@ -3,6 +3,7 @@ from math import ceil from numpy import e, log, arange +from scipy import stats from matplotlib.pyplot import figure,plot,xlabel,ylabel, xlim, ylim @@ -217,7 +218,30 @@ return self.vf else: return self.vf*self.kc*(self.kj/k-1)/(self.kj-self.kc) - + +def generateDensities(n, maxDensity): + return stats.uniform.rvs(size=n)*maxDensity + +def generateSpeedVolumes(fd, n, maxDensity, maxHGVProportion = 0, etrucks = 2.5): + densities = generateDensities(n, maxDensity) + speeds = [fd.v(k) for k in densities] + volumes = [fd.q(k) for k in densities] + if maxHGVProportion > 0: + hgvProportions = stats.uniform.rvs(size=n)*maxHGVProportion # en pourcent + volumes = [v/(1+(etrucks-1)*p/100) for v,p in zip(volumes, hgvProportions)] + else: + hgvProportions = None + return speeds, volumes, hgvProportions + +def highwayLOS(k): + 'returns the highway level of service for density k in veh/km' + if k>=28: return 'F' + elif k>=22: return 'E' + elif k>=16: return 'D' + elif k>=11: return 'C' + elif k>=7: return 'B' + else: return 'A' + ######################### # intersection #########################