class Environment: action_space = 2 # Action = 0 - Detected malicious activity info = "" # Action = 1 - Normal activity def __init__(self, mode=Mode.DEMO, behavior=Behavior.ONLY_SAFE): self.done = False self.behavior = behavior self.network = Network(mode) self.mode = mode if self.mode == Mode.DEMO: self.observation_space = 8 else: self.observation_space = 68 def reset(self): self.network.reset() self.done = False return self.network.step().message def step(self, action): if (action != 0) & (action != 1): print("Wrong action") return -1, -1, False, "" note = self.network.step(self.behavior) if (action == 1) & (note.kind == Kind.DANGER): reward = 1 elif (action == 1) & (note.kind == Kind.SAFE): reward = -1 elif (action == 0) & (note.kind == Kind.SAFE): reward = 1 else: reward = -1 observation = note.message done = self.done if self.mode == Mode.HYBRID: info = note.protocol else: info = "" return observation, reward, done, info