- Dropped support for overriding the num_episodes and num_steps at the agent level. It's just not needed and will add complexity when overriding and writing output files.
57 lines
1.5 KiB
Python
57 lines
1.5 KiB
Python
from primaite.agents.agent import HardCodedAgentSessionABC
|
|
from primaite.agents.utils import get_new_action, transform_action_acl_enum, transform_action_node_enum
|
|
|
|
|
|
class RandomAgent(HardCodedAgentSessionABC):
|
|
"""
|
|
A Random Agent.
|
|
|
|
Get a completely random action from the action space.
|
|
"""
|
|
|
|
def _calculate_action(self, obs):
|
|
return self._env.action_space.sample()
|
|
|
|
|
|
class DummyAgent(HardCodedAgentSessionABC):
|
|
"""
|
|
A Dummy Agent.
|
|
|
|
All action spaces setup so dummy action is always 0 regardless of action
|
|
type used.
|
|
"""
|
|
|
|
def _calculate_action(self, obs):
|
|
return 0
|
|
|
|
|
|
class DoNothingACLAgent(HardCodedAgentSessionABC):
|
|
"""
|
|
A do nothing ACL agent.
|
|
|
|
A valid ACL action that has no effect; does nothing.
|
|
"""
|
|
|
|
def _calculate_action(self, obs):
|
|
nothing_action = ["NONE", "ALLOW", "ANY", "ANY", "ANY", "ANY"]
|
|
nothing_action = transform_action_acl_enum(nothing_action)
|
|
nothing_action = get_new_action(nothing_action, self._env.action_dict)
|
|
|
|
return nothing_action
|
|
|
|
|
|
class DoNothingNodeAgent(HardCodedAgentSessionABC):
|
|
"""
|
|
A do nothing Node agent.
|
|
|
|
A valid Node action that has no effect; does nothing.
|
|
"""
|
|
|
|
def _calculate_action(self, obs):
|
|
nothing_action = [1, "NONE", "ON", 0]
|
|
nothing_action = transform_action_node_enum(nothing_action)
|
|
nothing_action = get_new_action(nothing_action, self._env.action_dict)
|
|
# nothing_action should currently always be 0
|
|
|
|
return nothing_action
|