annotate scripts/nomad/site-parameters-optimization.py @ 1189:ccab20f85710

changed to better parameters
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Sat, 25 Jun 2022 01:09:20 +0200
parents 7117a31555c1
children d24d57e4de24
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1186
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
1 #! /usr/bin/env python3
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
2 import os
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
3 import sys
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
4 import glob
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
5 from trafficintelligence import storage, moving
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
6 import subprocess
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
7 import numpy as np
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
8
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
9
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
10 def loadParametersStartProcess(filename):
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
11 # load initial parameters from x.txt
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
12 f = open(filename, 'r+')
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
13 l = f.readline()
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
14 x = [s for s in l.strip().split(" ")]
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
15 f.close()
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
16
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
17 # create para-value list
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
18 para = paraValueList(x)
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
19
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
20 # run process including trackingfeature, groupfeature, load groundtruth, compute mota
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
21 print(process(para, intersections, optimizeGroupingOnly))
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
22
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
23 def paraValueList(x):
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
24 #create para-value list
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
25 #list of the 8 parameters and their values
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
26 pn = 8
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
27 p = pn*[None]
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
28 p[0] = '--feature-quality' #]0.-0.4]
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
29 p[1] = '--min-feature-distanceklt' #]0.-6]
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
30 p[2] = '--window-size' #[1-10]integer
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
31 p[3] = '--min-tracking-error' #[0.01-0.3]
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
32 p[4] = '--min-feature-time' #[2-100]integer
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
33 p[5] = '--mm-connection-distance' #[0.5-100]
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
34 p[6] = '--mm-segmentation-distance' #[1-100] ~mm-connection-distance / 2.5
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
35 p[7] = '--min-nfeatures-group' #[2-4]
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
36
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
37 para = []
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
38 for n in range(pn):
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
39 para = para + [p[n],x[n]]
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
40
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
41 return para
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
42
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
43 def process(para, intersections, optimizeGroupingOnly):
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
44 Mota = []
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
45 gtDatabaseaAbsPaths = []
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
46 configFileAbsPaths = []
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
47
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
48 cwd = os.getcwd()
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
49 # move to the location of the intersection
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
50 for intersectionPath in intersections:
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
51 intersectionAbsPath = os.path.abspath(intersectionPath)
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
52 os.chdir(intersectionAbsPath)
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
53 # iterate through all the subdirectories to find ground truth sqlite files
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
54 gtDatabaseaAbsPaths.extend([os.path.abspath(intersectionAbsPath + '/' + file) for file in glob.glob('**/*_gt.sqlite', recursive=True)])
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
55 configFileAbsPaths.append(os.path.abspath(intersectionAbsPath + '/' + glob.glob('*.cfg', recursive=True)[0]))
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
56 os.chdir(cwd)
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
57 for gtDatabaseAbsPath, configFileAbsPath in zip(gtDatabaseaAbsPaths, configFileAbsPaths):
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
58 gtDatabaseBasename = gtDatabaseAbsPath[:-10]
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
59 videoFilename = gtDatabaseBasename + ".MP4"
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
60 databaseFilename = gtDatabaseBasename + ".sqlite"
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
61 gtDatabaseDirname = os.path.dirname(gtDatabaseAbsPath)
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
62 homographyFilename = gtDatabaseDirname + "/homography.txt"
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
63 maskFilename = gtDatabaseDirname + "/mask.png"
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
64 # Skip feature tracking if the user specified to optimize only grouping parameters
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
65 if not optimizeGroupingOnly:
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
66 # Track features
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
67 trackingFeature(para, configFileAbsPath, videoFilename, databaseFilename, homographyFilename, maskFilename)
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
68 # Group features
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
69 groupFeature(para, configFileAbsPath, videoFilename, databaseFilename, homographyFilename, maskFilename)
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
70 #load trajectory
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
71 objects = storage.loadTrajectoriesFromSqlite(databaseFilename, 'object')
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
72 #load ground truth
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
73 annotations = storage.loadTrajectoriesFromSqlite(gtDatabaseAbsPath, 'object')
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
74 # Appending negative mota because nomad minimizes the output
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
75 Mota.append(-computeMota(annotations, objects, Mota))
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
76
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
77 # Change to the previous directory
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
78 os.chdir(cwd)
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
79
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
80 return np.mean(Mota)
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
81
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
82 def trackingFeature(para, config, video, db, homo, mask):
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
83 # remove previous tracking
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
84 if os.path.exists(db):
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
85 os.remove(db)
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
86 # trackingfeature command parameters
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
87 tf = ['feature-based-tracking', config, '--tf', '--video-filename', video, '--database-filename', db, '--homography-filename', homo, '--mask-filename', mask]
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
88 # run in command line and print directly
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
89 subprocess.check_output(tf + para[0:10])
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
90
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
91 def groupFeature(para, config, video, db, homo, mask):
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
92 #remove previous grouping
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
93 storage.deleteFromSqlite(db, 'object')
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
94 #groupfeature command parameters
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
95 gf = ['feature-based-tracking', config, '--gf', '--video-filename', video, '--database-filename', db, '--homography-filename', homo, '--mask-filename', mask]
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
96 #run in command line and print directly
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
97 subprocess.check_output(gf + para[8:16]) # ['--min-feature-time', 'x', '--mm-connection-distance', 'x', '--mm-segmentation-distance', 'x', '--min-nfeatures-group', 'x']
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
98
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
99 def computeMota(annotations, objects, Mota):
1189
ccab20f85710 changed to better parameters
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 1186
diff changeset
100 matchingDistance = 5
1186
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
101 firstInstant = 0
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
102 lastInstant = 50000
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
103 return moving.computeClearMOT(annotations, objects, matchingDistance, firstInstant, lastInstant)[1]
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
104
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
105
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
106 if __name__ == "__main__":
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
107 # Load args that were given with select-arguments.py
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
108 with open('arguments.txt', 'r') as f:
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
109 args = f.read().split('\n')
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
110 intersections = args[0]
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
111 optimizeGroupingOnly = args[1]
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
112 # Convert string representation of list into list
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
113 intersections = eval(intersections)
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
114
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
115 loadParametersStartProcess(sys.argv[1])
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
116 sys.exit(0)
7117a31555c1 Etienne Beauchamp s work on optimization with Nomad software
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
117