|
@@ -1,4 +1,5 @@
|
|
|
import sys
|
|
|
+import time
|
|
|
sys.path.append("kernel/")
|
|
|
sys.path.append("state/")
|
|
|
sys.path.append("interface/HUTN")
|
|
@@ -142,6 +143,7 @@ class MvKState(object):
|
|
|
self.loaded_primitives = False
|
|
|
self.execution_counter = 0
|
|
|
self.all_failed = True
|
|
|
+ self.rule_generation_time = 0.0
|
|
|
|
|
|
def __str__(self):
|
|
|
return "\nMvK: %s\n" % self.mvk + \
|
|
@@ -244,13 +246,19 @@ class ModelverseKernel(AtomicDEVS):
|
|
|
commands = None
|
|
|
|
|
|
elif self.state.phase == "computation":
|
|
|
+ start = time.time()
|
|
|
try:
|
|
|
commands = self.state.mvk.execute_yields(self.state.current_task, "execute_rule", [], self.state.reply)
|
|
|
except SleepKernel:
|
|
|
commands = None
|
|
|
self.state.mvk.success = False
|
|
|
+ # TODO this should be sampled from a distribution!
|
|
|
+ self.state.rule_generation_time = time.time() - start
|
|
|
elif self.state.phase == "output":
|
|
|
+ start = time.time()
|
|
|
commands = self.state.mvk.execute_yields(self.state.current_task, "get_output", [], self.state.reply)
|
|
|
+ # TODO this should be sampled from a distribution!
|
|
|
+ self.state.rule_generation_time = time.time() - start
|
|
|
else:
|
|
|
raise Exception("Phase: " + str(self.state.phase))
|
|
|
|
|
@@ -299,7 +307,7 @@ class ModelverseKernel(AtomicDEVS):
|
|
|
# Make this a parameter
|
|
|
return 200
|
|
|
if self.state.commands is not None:
|
|
|
- return 0
|
|
|
+ return self.state.rule_generation_time
|
|
|
elif self.state.waiting:
|
|
|
return float("inf")
|
|
|
elif self.state.mvk is None:
|