def sum_sensors(self, prey_list, predator_list): vectors = [] cohesion_vector = self.cohesion_vector(prey_list) vectors.append(util.multiply_vector(cohesion_vector, self.COHESION_WEIGHT)) follow_vector = self.follow_vector(prey_list) vectors.append(util.multiply_vector(follow_vector, self.FOLLOW_WEIGHT)) separation_vector = self.separation_vector(prey_list) vectors.append(util.multiply_vector(separation_vector, self.SEPARATION_WEIGHT)) predator_vector = self.predator_vector(predator_list) vectors.append(util.multiply_vector(predator_vector, self.PREDATOR_WEIGHT)) vectors.append(self.edge_repulsion_sensor()) x_comp = 0 y_comp = 0 for x, y in vectors: x_comp += x y_comp += y vector_magnitude = util.vector_magnitude((x_comp, y_comp)) if vector_magnitude > self.MAX_SPEED: x_comp /= vector_magnitude y_comp /= vector_magnitude x_comp *= self.MAX_SPEED y_comp *= self.MAX_SPEED return (x_comp, y_comp)
def sum_sensors(self, prey_list, predator_list): vectors = [] prey_pos_vector = self.get_closest_prey_position(prey_list) vectors.append(util.multiply_vector(prey_pos_vector, self.PREY_POS_WEIGHT)) prey_vel_vector = self.get_closest_prey_velocity(prey_list) vectors.append(util.multiply_vector(prey_vel_vector, self.PREY_VEL_WEIGHT)) vectors.append(util.multiply_vector(self.edge_repulsion_sensor(), 100)) print vectors print """Prey_Pos: {} Prey_Vel: {} Repulsion: {}""".format(*vectors) x_comp = 0 y_comp = 0 for x, y in vectors: x_comp += x y_comp += y vector_magnitude = util.vector_magnitude((x_comp, y_comp)) if vector_magnitude > self.MAX_SPEED: x_comp /= vector_magnitude y_comp /= vector_magnitude x_comp *= self.MAX_SPEED y_comp *= self.MAX_SPEED return (x_comp, y_comp)
def sum_sensors(self, prey_list, predator_list): vectors = [] prey_pos_vector = self.get_closest_prey_position(prey_list) vectors.append( util.multiply_vector(prey_pos_vector, self.PREY_POS_WEIGHT)) prey_vel_vector = self.get_closest_prey_velocity(prey_list) vectors.append( util.multiply_vector(prey_vel_vector, self.PREY_VEL_WEIGHT)) vectors.append(util.multiply_vector(self.edge_repulsion_sensor(), 100)) print vectors print """Prey_Pos: {} Prey_Vel: {} Repulsion: {}""".format(*vectors) x_comp = 0 y_comp = 0 for x, y in vectors: x_comp += x y_comp += y vector_magnitude = util.vector_magnitude((x_comp, y_comp)) if vector_magnitude > self.MAX_SPEED: x_comp /= vector_magnitude y_comp /= vector_magnitude x_comp *= self.MAX_SPEED y_comp *= self.MAX_SPEED return (x_comp, y_comp)