示例#1
0
    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']
示例#2
0
    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)
示例#3
0
 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
示例#4
0
 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