def init_population(self, task): r"""Initialize starting population. Args: task (Task): Optimization task. Returns: Tuple[numpy.ndarray, numpy.ndarray, Dict[str, Any]]: 1. Initialized population. 2. Initialized populations function/fitness value. 3. Additional arguments: * enable (numpy.ndarray): If solution/individual is enabled. * improve (numpy.ndarray): If solution/individual is improved. * search_range (numpy.ndarray): Search range. * grades (numpy.ndarray): Grade of solution/individual. """ population, fitness, d = Algorithm.init_population(self, task) enable = np.full(self.population_size, True) improve = np.full(self.population_size, True) search_range = np.full((self.population_size, task.dimension), task.range / 2) grades = np.zeros(self.population_size) d.update({ 'enable': enable, 'improve': improve, 'search_range': search_range, 'grades': grades }) return population, fitness, d
def init_population(self, task): r"""Initialize stating population. Args: task (Task): Optimization task. Returns: Tuple[numpy.ndarray, numpy.ndarray, Dict[str, Any]]: 1. Initialized population. 2. Initialized populations function/fitness values. 3. Additional arguments: * w_neighbor (numpy.ndarray): Weights neighborhood. * w_foraging (numpy.ndarray): Weights foraging. * induced_speed (numpy.ndarray): Induced speed. * foraging_speed (numpy.ndarray): Foraging speed. See Also: * :func:`niapy.algorithms.algorithm.Algorithm.init_population` """ krill_herd, krill_herd_fitness, d = Algorithm.init_population( self, task) w_neighbor, w_foraging = self.init_weights(task) induced_speed, foraging_speed = np.zeros( self.population_size), np.zeros(self.population_size) d.update({ 'w_neighbor': w_neighbor, 'w_foraging': w_foraging, 'induced_speed': induced_speed, 'foraging_speed': foraging_speed }) return krill_herd, krill_herd_fitness, d
def test_init_population_individual(self): r"""Test if custom generation initialization works ok.""" a = Algorithm(population_size=10, initialization_function=init_pop_individual, individual_type=Individual) t = Task(problem=MyProblem(dimension=20)) i = Individual(x=np.zeros(t.dimension), task=t) pop, fpop, d = a.init_population(t) for e in pop: self.assertEqual(i, e)
def test_init_population_numpy(self): r"""Test if custom generation initialization works ok.""" a = Algorithm(population_size=10, initialization_function=init_pop_numpy) t = Task(problem=MyProblem(dimension=20)) self.assertTrue( np.array_equal(np.zeros((10, t.dimension)), a.init_population(t)[0]))
def init_population(self, task): r"""Init population. Args: task (Task): Optimization task Returns: Tuple(numpy.ndarray[MkeSolution], numpy.ndarray[float], Dict[str, Any]]: 1. Initialized solutions 2. Fitness/function values of solution 3. Additional arguments """ pop, fpop, _ = Algorithm.init_population(self, task) for i in self.rng.choice(self.population_size, int(self.population_rate * len(pop)), replace=False): pop[i].monkey_king = True return pop, fpop, {}
def init_population(self, task): r"""Initialize the starting population. Args: task (Task): Optimization task Returns: Tuple[numpy.ndarray, numpy.ndarray[float], Dict[str, Any]]: 1. New population. 2. New population fitness/function values. 3. Additional arguments: * alpha (float): Step size. See Also: * :func:`niapy.algorithms.Algorithm.init_population` """ fireflies, intensity, _ = Algorithm.init_population(self, task) return fireflies, intensity, {'alpha': self.alpha}
def init_population(self, task): r"""Initialize starting population. Args: task (Task): Optimization task. Returns: Tuple[numpy.ndarray[Individual], numpy.ndarray[float], Dict[str, Any]]: 1. Initialized population. 2. Initialized populations function/fitness values. 3. Additional arguments: * ki (int): Number of successful mutations. See Also: * :func:`niapy.algorithms.algorithm.Algorithm.init_population` """ c, fc, d = Algorithm.init_population(self, task) d.update({'ki': 0}) return c, fc, d
def init_population(self, task): r"""Initialize the initial population. Args: task (Task): Optimization task Returns: Tuple[numpy.ndarray, numpy.ndarray[float], Dict[str, Any]]: 1. New population. 2. New population fitness/function values. 3. Additional arguments: * velocities (numpy.ndarray[float]): Velocities See Also: * :func:`niapy.algorithms.Algorithm.init_population` """ population, fitness, d = Algorithm.init_population(self, task) velocities = np.zeros((self.population_size, task.dimension)) d.update({'velocities': velocities}) return population, fitness, d
def init_population(self, task): r"""Initialize the starting population. Args: task (Task): Optimization task Returns: Tuple[numpy.ndarray, numpy.ndarray[float], Dict[str, Any]]: 1. New population. 2. New population fitness/function values. 3. Additional arguments: * age (numpy.ndarray[int32]): Age of trees. See Also: * :func:`niapy.algorithms.Algorithm.init_population` """ trees, fitness, _ = Algorithm.init_population(self, task) age = np.zeros(self.population_size, dtype=np.int32) self.dx = np.absolute(task.upper) / 5.0 return trees, fitness, {'age': age}
def init_population(self, task): r"""Initialize first population and additional arguments. Args: task (Task): Optimization task Returns: Tuple[numpy.ndarray, numpy.ndarray, dict]: 1. Initialized population 2. Initialized population fitness/function values 3. Dict[str, Any]: * x_best (numpy.ndarray): Initialized populations best positions. * x_best_fitness (numpy.ndarray): Initialized populations best positions function/fitness values. * alpha (numpy.ndarray): * gamma (numpy.ndarray): * theta (numpy.ndarray): * rs (float): distance of search space. See Also: * :func:`niapy.algorithms.algorithm.Algorithm.init_population` * :func:`niapy.algorithms.other.aso.AnarchicSocietyOptimization.init` """ population, population_fitness, d = Algorithm.init_population( self, task) alpha, gamma, theta = self.init(task) x_best, x_best_fitness = self.update_personal_best( population, task.optimization_type.value * population_fitness, np.zeros((self.population_size, task.dimension)), np.full(self.population_size, np.inf)) d.update({ 'x_best': x_best, 'x_best_fitness': x_best_fitness, 'alpha': alpha, 'gamma': gamma, 'theta': theta, 'rs': self.d(task.upper, task.lower) }) return population, population_fitness, d
def init_population(self, task): r"""Initialize the population. Args: task (Task): Optimization task. Returns: Tuple[numpy.ndarray, numpy.ndarray[float], Dict[str, Any]]: 1. Initialized population. 2. Initialized population function/fitness values. 3. Additional arguments: * k (int): Starting number of rows to include from lower triangular matrix. * c (int): Constant. See Also: * :func:`niapy.algorithms.algorithm.Algorithm.init_population` """ population, fitness, d = Algorithm.init_population(self, task) k, c = int(ceil(self.population_size / task.dimension)), int(ceil(self.c * task.dimension)) d.update({'k': k, 'c': c}) return population, fitness, d