Mercurial > hg > nsaunier > traffic-intelligence
comparison trafficintelligence/traffic_engineering.py @ 1303:d828f3f76273
forgot update to triangular FD equations
| author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
|---|---|
| date | Thu, 04 Sep 2025 15:56:37 -0400 |
| parents | c15b9fcdbcb1 |
| children |
comparison
equal
deleted
inserted
replaced
| 1302:30711484d2f6 | 1303:d828f3f76273 |
|---|---|
| 259 return self.vc*log(self.kj/k) | 259 return self.vc*log(self.kj/k) |
| 260 | 260 |
| 261 class TriangularFD(FundamentalDiagram): | 261 class TriangularFD(FundamentalDiagram): |
| 262 def __init__(self, vf = None, kc = None, kj = None, qmax = None, w = None): | 262 def __init__(self, vf = None, kc = None, kj = None, qmax = None, w = None): |
| 263 FundamentalDiagram.__init__(self,'Triangular') | 263 FundamentalDiagram.__init__(self,'Triangular') |
| 264 if vf is not None and qmax is not None and kj is not None: | 264 if vf is not None and kj is not None: |
| 265 self.vf=vf | 265 self.vf=vf |
| 266 self.qmax = qmax | |
| 267 self.kj = kj | 266 self.kj = kj |
| 268 self.kc = qmax/vf | 267 if qmax is not None: |
| 269 self.w = qmax/(self.kc-kj) | 268 self.qmax = qmax |
| 269 self.kc = qmax/vf | |
| 270 self.w = qmax/(self.kc-kj) | |
| 271 elif kc is not None: | |
| 272 self.kc = kc | |
| 273 self.qmax = vf*kc | |
| 274 self.w = self.qmax/(self.kc-kj) | |
| 270 | 275 |
| 271 def v(self, k): | 276 def v(self, k): |
| 272 if k<self.kc: | 277 if k<self.kc: |
| 273 return self.vf | 278 return self.vf |
| 274 else: | 279 else: |
| 275 return self.vf*self.kc*(self.kj/k-1)/(self.kj-self.kc) | 280 return self.qmax/(self.kj-self.kc)*(1-self.kj/k) |
| 276 | 281 |
| 277 def generateDensities(n, maxDensity): | 282 def generateDensities(n, maxDensity): |
| 278 return stats.uniform.rvs(size=n)*maxDensity | 283 return stats.uniform.rvs(size=n)*maxDensity |
| 279 | 284 |
| 280 def generateSpeedVolumes(fd, n, maxDensity, maxHGVProportion = 0, etrucks = 2.5): | 285 def generateSpeedVolumes(fd, n, maxDensity, maxHGVProportion = 0, etrucks = 2.5): |
