diff options
author | Daniel Friesel <daniel.friesel@uos.de> | 2019-09-11 11:21:08 +0200 |
---|---|---|
committer | Daniel Friesel <daniel.friesel@uos.de> | 2019-09-11 11:21:08 +0200 |
commit | 6c602c82a7c8285d1a41cfbf714cbd2ea09b182f (patch) | |
tree | e3ed3091dcd4f7cdc99651cee06383b2215cd0f0 /lib | |
parent | 65724c3c3015a8d3b473bab83da5fb5d72d01dd1 (diff) |
PTA: Use "None" transition for sleep
This way, PTA models can have sleep transitions without conflict
Diffstat (limited to 'lib')
-rwxr-xr-x | lib/automata.py | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/lib/automata.py b/lib/automata.py index 50ae179..1ad80bb 100755 --- a/lib/automata.py +++ b/lib/automata.py @@ -624,14 +624,28 @@ class PTA: return generator def simulate(self, trace: list, orig_state: str = 'UNINITIALIZED'): + """ + Simulate a single run through the PTA and return total energy, duration, final state, and resulting parameters. + + :param trace: list of (function name, arg1, arg2, ...) tuples representing the individual transitions, + or list of (Transition, argument tuple, parameter) tuples originating from dfs. + The tuple (None, duration) represents a sleep time between states in us + :param orig_state: origin state, default UNINITIALIZED + + :returns (total energy in uJ, total duration in us, end state, end parameters) + """ total_duration = 0. total_energy = 0. state = self.state[orig_state] param_dict = dict([[self.parameters[i], self.initial_param_values[i]] for i in range(len(self.parameters))]) for function in trace: - function_name = function[0] - function_args = function[1 : ] - if function_name == 'sleep': + if isinstance(function[0], Transition): + function_name = function[0].name + function_args = function[1] + else: + function_name = function[0] + function_args = function[1 : ] + if function_name is None: duration = function_args[0] total_energy += state.get_energy(duration, param_dict) total_duration += duration |