Mercurial > hg > nsaunier > traffic-intelligence
comparison python/prediction.py @ 696:ae137e3b1990 dev
minor correction
| author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
|---|---|
| date | Tue, 14 Jul 2015 00:14:54 -0400 |
| parents | 9a258687af4c |
| children | 8d99a9e16644 |
comparison
equal
deleted
inserted
replaced
| 695:957126bfb456 | 696:ae137e3b1990 |
|---|---|
| 4 import moving | 4 import moving |
| 5 from utils import LCSS | 5 from utils import LCSS |
| 6 | 6 |
| 7 import math, random | 7 import math, random |
| 8 import numpy as np | 8 import numpy as np |
| 9 from multiprocessing import Pool | |
| 9 | 10 |
| 10 | 11 |
| 11 class PredictedTrajectory(object): | 12 class PredictedTrajectory(object): |
| 12 '''Class for predicted trajectories with lazy evaluation | 13 '''Class for predicted trajectories with lazy evaluation |
| 13 if the predicted position has not been already computed, compute it | 14 if the predicted position has not been already computed, compute it |
| 135 for p in points: | 136 for p in points: |
| 136 out.write('{0} {1} {2} {3}\n'.format(objNum1, objNum2, predictionInstant, p)) | 137 out.write('{0} {1} {2} {3}\n'.format(objNum1, objNum2, predictionInstant, p)) |
| 137 | 138 |
| 138 @staticmethod | 139 @staticmethod |
| 139 def computeExpectedIndicator(points): | 140 def computeExpectedIndicator(points): |
| 140 from numpy import sum | 141 return np.sum([p.indicator*p.probability for p in points])/sum([p.probability for p in points]) |
| 141 return sum([p.indicator*p.probability for p in points])/sum([p.probability for p in points]) | |
| 142 | 142 |
| 143 def computeCollisionTime(predictedTrajectory1, predictedTrajectory2, collisionDistanceThreshold, timeHorizon): | 143 def computeCollisionTime(predictedTrajectory1, predictedTrajectory2, collisionDistanceThreshold, timeHorizon): |
| 144 '''Computes the first instant | 144 '''Computes the first instant |
| 145 at which two predicted trajectories are within some distance threshold | 145 at which two predicted trajectories are within some distance threshold |
| 146 Computes all the times including timeHorizon | 146 Computes all the times including timeHorizon |
| 159 | 159 |
| 160 def savePredictedTrajectoriesFigure(currentInstant, obj1, obj2, predictedTrajectories1, predictedTrajectories2, timeHorizon): | 160 def savePredictedTrajectoriesFigure(currentInstant, obj1, obj2, predictedTrajectories1, predictedTrajectories2, timeHorizon): |
| 161 from matplotlib.pyplot import figure, axis, title, close, savefig | 161 from matplotlib.pyplot import figure, axis, title, close, savefig |
| 162 figure() | 162 figure() |
| 163 for et in predictedTrajectories1: | 163 for et in predictedTrajectories1: |
| 164 et.predictPosition(timeHorizon) | 164 et.predictPosition(int(np.round(timeHorizon))) |
| 165 et.plot('rx') | 165 et.plot('rx') |
| 166 | 166 |
| 167 for et in predictedTrajectories2: | 167 for et in predictedTrajectories2: |
| 168 et.predictPosition(timeHorizon) | 168 et.predictPosition(int(np.round(timeHorizon))) |
| 169 et.plot('bx') | 169 et.plot('bx') |
| 170 obj1.plot('r') | 170 obj1.plot('r') |
| 171 obj2.plot('b') | 171 obj2.plot('b') |
| 172 title('instant {0}'.format(currentInstant)) | 172 title('instant {0}'.format(currentInstant)) |
| 173 axis('equal') | 173 axis('equal') |
| 343 if len(cp) != 0: | 343 if len(cp) != 0: |
| 344 collisionPoints[i] = cp | 344 collisionPoints[i] = cp |
| 345 if len(cz) != 0: | 345 if len(cz) != 0: |
| 346 crossingZones[i] = cz | 346 crossingZones[i] = cz |
| 347 else: | 347 else: |
| 348 from multiprocessing import Pool | |
| 349 pool = Pool(processes = nProcesses) | 348 pool = Pool(processes = nProcesses) |
| 350 jobs = [pool.apply_async(computeCrossingsCollisionsAtInstant, args = (self, i, obj1, obj2, collisionDistanceThreshold, timeHorizon, computeCZ, debug,usePrototypes,route1,route2,prototypes,secondStepPrototypes,nMatching,objects,noiseEntryNums,noiseExitNums,minSimilarity,mostMatched,useDestination,useSpeedPrototype)) for i in list(commonTimeInterval)[:-1]] | 349 jobs = [pool.apply_async(computeCrossingsCollisionsAtInstant, args = (self, i, obj1, obj2, collisionDistanceThreshold, timeHorizon, computeCZ, debug,usePrototypes,route1,route2,prototypes,secondStepPrototypes,nMatching,objects,noiseEntryNums,noiseExitNums,minSimilarity,mostMatched,useDestination,useSpeedPrototype)) for i in list(commonTimeInterval)[:-1]] |
| 351 #results = [j.get() for j in jobs] | 350 #results = [j.get() for j in jobs] |
| 352 #results.sort() | 351 #results.sort() |
| 353 for j in jobs: | 352 for j in jobs: |
