def __init__(self, env, session, serializer, show_world=False): super(ConsoleView, self).__init__(env, session) # for visualization purposes, we keep an internal buffer of the # input and output stream so when they are cleared from task to # task, we can keep the history intact. self.input_buffer = '' self.output_buffer = '' self.panic = 'SKIP' # record what the learner says self._learner_channel = InputChannel(serializer) # record what the environment says self._env_channel = InputChannel(serializer) # listen to the updates in these channels self._learner_channel.sequence_updated.register( self.on_learner_sequence_updated) self._learner_channel.message_updated.register( self.on_learner_message_updated) self._env_channel.sequence_updated.register( self.on_env_sequence_updated) self._env_channel.message_updated.register(self.on_env_message_updated) if show_world: # register a handler to plot the world if show_world is active env.world_updated.register(self.on_world_updated) # connect the channels with the observed input bits session.env_token_updated.register(self.on_env_token_updated) session.learner_token_updated.register(self.on_learner_token_updated) del self.info['current_task']
def __init__(self, serializer, task_scheduler, scramble=False, max_reward_per_task=10): # save parameters into member variables self._task_scheduler = task_scheduler self._serializer = serializer self._max_reward_per_task = max_reward_per_task # cumulative reward per task self._reward_per_task = defaultdict(int) # the event manager is the controller that dispatches # changes in the environment (like new inputs or state changes) # to handler functions in the tasks that tell the environment # how to react self.event_manager = EventManager() # intialize member variables self._current_task = None self._current_world = None # we hear to our own output self._output_channel_listener = InputChannel(serializer) if scramble: serializer = ScramblingSerializerWrapper(serializer) # output channel self._output_channel = OutputChannel(serializer) # input channel self._input_channel = InputChannel(serializer) # priority of ongoing message self._output_priority = 0 # reward that is to be given at the learner at the end of the task self._reward = None # Current task time self._task_time = None # Task deinitialized self._current_task_deinitialized = False # Internal logger self.logger = logging.getLogger(__name__) # signals self.world_updated = Observable() self.task_updated = Observable() self.reward_given = Observable() # Register channel observers self._input_channel.sequence_updated.register( self._on_input_sequence_updated) self._input_channel.message_updated.register( self._on_input_message_updated) self._output_channel_listener.sequence_updated.register( self._on_output_sequence_updated) self._output_channel_listener.message_updated.register( self._on_output_message_updated)
def __init__(self, serializer): ''' Takes the serialization protocol ''' self._serializer = serializer self._input_channel = InputChannel(serializer) self._output_channel = OutputChannel(serializer) self._input_channel.message_updated.register(self.on_message) self.logger = logging.getLogger(__name__) self.speaking = False
def __init__(self, serializer, byte_mode): ''' Takes the serialization protocol ''' self._serializer = serializer if byte_mode: self._input_channel = ByteInputChannel(serializer) self._output_channel = ByteOutputChannel(serializer) else: self._input_channel = InputChannel(serializer) self._output_channel = OutputChannel(serializer) self.logger = logging.getLogger(__name__) self.speaking = False