-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexperiment.py
More file actions
64 lines (47 loc) · 2.46 KB
/
Copy pathexperiment.py
File metadata and controls
64 lines (47 loc) · 2.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import os
import datetime
class Experiment:
"""A class to hold all data from a run."""
def __init__(self, name, metit_timeout=1000):
"""
name -- filename (sans extension) in examples/ subdir
metit_timeout -- default metit_timeout (in milliseconds)
"""
self.filename = name + '.py'
experiment = __import__(name) # run-time loading of experiment
self.metit_timeout = metit_timeout
self.metit_options = ['metit', '--autoInclude', '--time', str(metit_timeout)]
self.system_def = experiment.system_def
self.q = experiment.q
self.equations = experiment.equations # a list of predicate.MetitEquations
self.initial_state = experiment.initial_state # dictionary
self.bad_predicate = experiment.bad_state # a predicate.MetitPredicate
self.extra_constraints = experiment.extra_constraints
self.now = datetime.datetime.now()
#setup folders for the experimental results
self.experiment_dir = 'experiments/'+ name + '-' + str(metit_timeout) + '-' + self.now.strftime('--%d-%m-%Y--%H:%M:%S')
self.feas_check_dir = self.experiment_dir + '/feasability/'
self.trans_check_dir = self.experiment_dir + '/transitions/'
self.feas_check_proved_dir = self.feas_check_dir + '/proved/'
self.feas_check_unproved_dir = self.feas_check_dir + '/unproved/'
self.cont_trans_proved_dir = self.trans_check_dir + 'continuous/proved'
self.cont_trans_unproved_dir = self.trans_check_dir + 'continuous/unproved'
self.disc_trans_proved_dir = self.trans_check_dir + 'discrete/proved'
self.disc_trans_unproved_dir = self.trans_check_dir + 'discrete/unproved'
self.trans_proved = 0
self.trans_unproved = 0
self.infeas_proved = 0
self.infeas_unproved = 0
self.hybrid_system = None
self.var_string = None
self.initial_state_numbers = None
def set_metit_timeout(self, timeout):
self.metit_timeout = timeout
self.metit_options = ['metit', '--autoInclude', '--time', str(timeout)]
def create_dirs(self):
os.makedirs(self.feas_check_proved_dir)
os.makedirs(self.feas_check_unproved_dir)
os.makedirs(self.cont_trans_proved_dir)
os.makedirs(self.cont_trans_unproved_dir)
os.makedirs(self.disc_trans_proved_dir)
os.makedirs(self.disc_trans_unproved_dir)