Exemple #1
0
    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
Exemple #2
0
    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
Exemple #3
0
 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)
Exemple #4
0
 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]))
Exemple #5
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, {}
Exemple #6
0
    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}
Exemple #7
0
    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
Exemple #8
0
    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
Exemple #9
0
    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}
Exemple #10
0
    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
Exemple #11
0
    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