changeset 558:a80ef6931fd8

updated safety-analysis to test multiprocessing
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Mon, 14 Jul 2014 17:44:09 -0400
parents b91f33e098ee
children 806df5f61c03
files python/events.py scripts/safety-analysis.py
diffstat 2 files changed, 9 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/python/events.py	Mon Jul 14 17:33:43 2014 -0400
+++ b/python/events.py	Mon Jul 14 17:44:09 2014 -0400
@@ -117,7 +117,7 @@
                 minDistance[instant] = moving.MovingObject.minDistance(self.roadUser1, self.roadUser2, instant)
             self.addIndicator(indicators.SeverityIndicator(Interaction.indicatorNames[3], minDistance))
 
-    def computeCrossingsCollisions(self, predictionParameters, collisionDistanceThreshold, timeHorizon, computeCZ = False, debug = False, timeInterval = None):
+    def computeCrossingsCollisions(self, predictionParameters, collisionDistanceThreshold, timeHorizon, computeCZ = False, debug = False, timeInterval = None, nProcesses = 1):
         '''Computes all crossing and collision points at each common instant for two road users. '''
         self.collisionPoints={}
         self.crossingZones={}
@@ -127,10 +127,12 @@
             commonTimeInterval = timeInterval
         else:
             commonTimeInterval = self.timeInterval
-        for i in list(commonTimeInterval)[:-1]: # do not look at the 1 last position/velocities, often with errors
-            self.collisionPoints[i], self.crossingZones[i] = predictionParameters.computeCrossingsCollisionsAtInstant(i, self.roadUser1, self.roadUser2, collisionDistanceThreshold, timeHorizon, computeCZ, debug)
-            if len(self.collisionPoints[i]) > 0:
-                TTCs[i] = prediction.SafetyPoint.computeExpectedIndicator(self.collisionPoints[i])
+        self.collisionPoints, self.crossingZones = prediction.computeCrossingsCollisions(normalAdaptationPredictionParameters, obj1, obj2, collisionDistanceThreshold, timeHorizon, computeCZ, debug, nProcesses)
+        # for i in list(commonTimeInterval)[:-1]: # do not look at the 1 last position/velocities, often with errors
+        #     i, self.collisionPoints[i], self.crossingZones[i] = predictionParameters.computeCrossingsCollisionsAtInstant(i, self.roadUser1, self.roadUser2, collisionDistanceThreshold, timeHorizon, computeCZ, debug)
+        #     if len(self.collisionPoints[i]) > 0:
+        for i, cp in self.collisionPoints.iteritems():
+            TTCs[i] = prediction.SafetyPoint.computeExpectedIndicator(cp)
         # add probability of collision, and probability of successful evasive action
         self.addIndicator(indicators.SeverityIndicator(Interaction.indicatorNames[7], TTCs))
         
--- a/scripts/safety-analysis.py	Mon Jul 14 17:33:43 2014 -0400
+++ b/scripts/safety-analysis.py	Mon Jul 14 17:44:09 2014 -0400
@@ -14,6 +14,7 @@
 parser.add_argument('--cfg', dest = 'configFilename', help = 'name of the configuration file', required = True)
 parser.add_argument('--prediction-method', dest = 'predictionMethod', help = 'prediction method (constant velocity (vector computation), constant velocity, normal adaptation, point set prediction)', choices = ['cvd', 'cv', 'na', 'ps'])
 parser.add_argument('--display-cp', dest = 'displayCollisionPoints', help = 'display collision points', action = 'store_true')
+parser.add_argument('-n', dest = 'nProcesses', help = 'number of processes to run in parallel', type = int)
 args = parser.parse_args()
 
 params = storage.ProcessParameters(args.configFilename)
@@ -57,7 +58,7 @@
 interactions = events.createInteractions(objects)
 for inter in interactions:
     inter.computeIndicators()
-    inter.computeCrossingsCollisions(predictionParameters, params.collisionDistance, params.predictionTimeHorizon, params.crossingZones)
+    inter.computeCrossingsCollisions(predictionParameters, params.collisionDistance, params.predictionTimeHorizon, params.crossingZones, params.nProcesses)
 
 storage.saveIndicators(params.databaseFilename, interactions)