def take_step(self, current, step_size): position = Citizen() for i in range(Citizen.P_SIZE): minimum = min( [self.bounds[i][0], current.get_value(i) - step_size[i]]) maximum = max( [self.bounds[i][1], current.get_value(i) + step_size[i]]) value = rand_bound(minimum, maximum) position.set_value(i, value) return position
def generate_sample(self): sample = Citizen() for i in range(Citizen.P_SIZE): aux = rand_bound(self.means[i], self.stdevs[i]) sample.set_value(i, aux) return sample
def random_neighbor(self, params=[]): mutant = Citizen(params) pos = randint_bound(Citizen.P_SIZE) mutant.set_value(pos) return mutant