# HG changeset patch # User Nicolas Saunier # Date 1682005602 14400 # Node ID 770306fef8274d2e62bd93ef76a036724b4af54b # Parent 3905b393ade0de603111722bc9fbee7efad18299 moving functions for exams in traffic engineering diff -r 3905b393ade0 -r 770306fef827 trafficintelligence/traffic_engineering.py --- a/trafficintelligence/traffic_engineering.py Wed Mar 22 23:29:09 2023 -0400 +++ b/trafficintelligence/traffic_engineering.py Thu Apr 20 11:46:42 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 #########################