|
@@ -60,6 +60,7 @@ def translate(operation):
|
|
|
"RDK": "read_dict_keys",
|
|
|
"DE": "delete_edge",
|
|
|
"DN": "delete_node",
|
|
|
+ "GC": "purge",
|
|
|
}[operation]
|
|
|
|
|
|
class MvSState(object):
|
|
@@ -107,6 +108,7 @@ class ModelverseState(AtomicDEVS):
|
|
|
"read_reverse_dict": read_reverse_dict,
|
|
|
"delete_node": delete_node,
|
|
|
"delete_edge": delete_edge,
|
|
|
+ "purge": 0.0,
|
|
|
}
|
|
|
|
|
|
self.state = MvSState()
|
|
@@ -177,6 +179,7 @@ class MvKState(object):
|
|
|
self.rule_generation = rule_generation
|
|
|
self.current_time = 0.0
|
|
|
self.start_task_time = 0.0
|
|
|
+ self.execution_rounds = 0
|
|
|
|
|
|
def __str__(self):
|
|
|
return "\nMvK: %s\n" % self.mvk + \
|
|
@@ -255,7 +258,11 @@ class ModelverseKernel(AtomicDEVS):
|
|
|
if len(self.state.tasks) == 0:
|
|
|
# Read out new set of tasks first
|
|
|
if self.state.reply is None:
|
|
|
+ self.state.execution_rounds += 1
|
|
|
commands = [("RDK", [self.state.root])]
|
|
|
+ if self.state.execution_rounds > 10000:
|
|
|
+ commands.append(("GC", []))
|
|
|
+ self.state.execution_rounds = 0
|
|
|
else:
|
|
|
self.state.tasks = self.state.reply[0]
|
|
|
commands = None
|