You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
888 B
34 lines
888 B
from . import action
|
|
|
|
class State:
|
|
""" Represents a state in the model """
|
|
|
|
def __init__(self, id, model):
|
|
""" Initialize
|
|
:param id: Id of the state
|
|
:param model: Corresponding model
|
|
"""
|
|
self.id = id - 1
|
|
self.model = model
|
|
|
|
def __iter__(self):
|
|
return self
|
|
|
|
def __next__(self):
|
|
if self.id >= self.model.nr_states - 1:
|
|
raise StopIteration
|
|
else:
|
|
self.id += 1
|
|
return self
|
|
|
|
def __str__(self):
|
|
return "{}".format(self.id)
|
|
|
|
def actions(self):
|
|
""" Get actions associated with the state
|
|
:return List of actions
|
|
"""
|
|
row_group_indices = self.model.transition_matrix._row_group_indices
|
|
start = row_group_indices[self.id]
|
|
end = row_group_indices[self.id+1]
|
|
return action.Action(start, end, 0, self.model)
|