Mercurial > hg > nsaunier > traffic-intelligence
comparison trafficintelligence/traffic_engineering.py @ 1206:770306fef827
moving functions for exams in traffic engineering
| author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
|---|---|
| date | Thu, 20 Apr 2023 11:46:42 -0400 |
| parents | fa07a78b29f6 |
| children | 3bfdb2ffd29d |
comparison
equal
deleted
inserted
replaced
| 1205:3905b393ade0 | 1206:770306fef827 |
|---|---|
| 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): |
