Source code for coopihc.agents.ExampleUser

import numpy
from coopihc.agents.BaseAgent import BaseAgent
from coopihc.base.State import State
from coopihc.base.elements import discrete_array_element, array_element, cat_element
from coopihc.base.elements import cat_element, discrete_array_element
from coopihc.policy.ExamplePolicy import ExamplePolicy, PseudoRandomPolicy


[docs]class ExampleUser(BaseAgent): """An Example of a User. An agent that handles the ExamplePolicy, has a single 1d state, and has the default observation and inference engines. See the documentation of the :py:mod:`BaseAgent <coopihc.agents.BaseAgent.BaseAgent>` class for more details. :meta public: """ def __init__(self, *args, **kwargs): # Define an internal state with a 'goal' substate state = State() state["goal"] = discrete_array_element(init=4, low=-4, high=4) # Define policy action_state = State() action_state["action"] = discrete_array_element(init=0, low=-1, high=1) agent_policy = ExamplePolicy(action_state=action_state) # Use default observation and inference engines observation_engine = None inference_engine = None super().__init__( "user", *args, agent_policy=agent_policy, agent_observation_engine=observation_engine, agent_inference_engine=inference_engine, agent_state=state, **kwargs )
[docs] def reset(self, dic=None): """reset Override default behaviour of BaseAgent which would randomly sample new goal values on each reset. Here for purpose of demonstration we impose a goal = 4 :meta public: """ self.state["goal"] = 4
[docs]class PseudoRandomUser(BaseAgent): def __init__(self, *args, **kwargs): # Define an internal state with a 'goal' substate state = State() state["p0"] = discrete_array_element(init=1, low=-10, high=10) state["p1"] = discrete_array_element(init=5, low=-10, high=10) state["p2"] = discrete_array_element(init=7, low=-10, high=10) # Call the policy defined above action_state = State() action_state["action"] = discrete_array_element(init=0, N=10) agent_policy = PseudoRandomPolicy(action_state=action_state) # Use default observation and inference engines observation_engine = None inference_engine = None super().__init__( "user", *args, agent_policy=agent_policy, agent_observation_engine=observation_engine, agent_inference_engine=inference_engine, agent_state=state, **kwargs )
[docs]class PseudoRandomUserWithParams(BaseAgent): def __init__(self, p=[1, 1, 1], *args, **kwargs): # Define an internal state with a 'goal' substate self.p = p state = State() state["p0"] = discrete_array_element(init=p[0], low=-10, high=10) state["p1"] = discrete_array_element(init=p[1], low=-10, high=10) state["p2"] = discrete_array_element(init=p[2], low=-10, high=10) # Call the policy defined above action_state = State() action_state["action"] = discrete_array_element(init=0, N=10) agent_policy = PseudoRandomPolicy(action_state=action_state) # Use default observation and inference engines observation_engine = None inference_engine = None super().__init__( "user", *args, agent_policy=agent_policy, agent_observation_engine=observation_engine, agent_inference_engine=inference_engine, agent_state=state, **kwargs )