def update(self, agent_update): observation_map = agent_update.observation_map observation = observation_map.observations[self.agent_id] self.position = ( observation.get_value(self.feature_names['x']).feature_value, observation.get_value(self.feature_names['y']).feature_value, ) observed_bases = {} for direction, basis in zip(self.direction_bases.keys(), self.direction_bases.values()): distance = observation.get_value(self.feature_names[direction]).feature_value observed_bases[basis] = distance """ if self.updates < 5: print "agent position: " + str(self.position) print "bases: " + str(observed_bases) self.updates += 1 """ self.log_map, self.observed_map = self.update_maps( self.position, self.log_map, self.observed_map, observed_bases, ) action_map = ActionMap() action = Action() next_x, next_y = self.next_movement(self.position, self.log_map) x_component = NumericActionComponent(next_x) action.add_component(self.component_names['x'], x_component) y_component = NumericActionComponent(next_y) action.add_component(self.component_names['y'], y_component) action_map.add_action(self.agent_id, action) return action_map