porcupy.utils.population
Classes
Class for managing cyclic population reduction in the Crested Porcupine Optimizer. |
|
Class implementing various selection strategies for population reduction. |
Module Contents
- class porcupy.utils.population.PopulationCycle(initial_pop_size: int, min_pop_size: int, max_iter: int, cycles: int = 2, reduction_strategy: str = 'linear')[source]
Class for managing cyclic population reduction in the Crested Porcupine Optimizer.
This class implements the cyclic population reduction strategy, which is a key feature of the CPO algorithm. The population size varies cyclically throughout the optimization process to balance exploration and exploitation.
- Parameters:
initial_pop_size (int) – Initial population size.
min_pop_size (int) – Minimum population size during reduction.
max_iter (int) – Maximum number of iterations.
cycles (int) – Number of cycles for population reduction.
reduction_strategy (str) – Strategy for population reduction (‘linear’, ‘cosine’, or ‘exponential’).
- class porcupy.utils.population.SelectionStrategies[source]
Class implementing various selection strategies for population reduction.
This class provides methods for selecting which individuals to keep when reducing the population size.
- static best_selection(positions: numpy.ndarray, fitness: numpy.ndarray, new_size: int) Tuple[numpy.ndarray, numpy.ndarray][source]
Select the best individuals based on fitness
- Parameters:
positions (numpy.ndarray) – Current positions of all individuals
fitness (numpy.ndarray) – Current fitness values of all individuals
new_size (int) – New population size
- Returns:
A tuple containing (selected_positions, selected_fitness)
- Return type:
- static tournament_selection(positions: numpy.ndarray, fitness: numpy.ndarray, new_size: int, tournament_size: int = 3) Tuple[numpy.ndarray, numpy.ndarray][source]
Select individuals using tournament selection
- Parameters:
positions (numpy.ndarray) – Current positions of all individuals
fitness (numpy.ndarray) – Current fitness values of all individuals
new_size (int) – New population size
tournament_size (int) – Size of each tournament
- Returns:
A tuple containing (selected_positions, selected_fitness)
- Return type:
- static roulette_wheel_selection(positions: numpy.ndarray, fitness: numpy.ndarray, new_size: int) Tuple[numpy.ndarray, numpy.ndarray][source]
Select individuals using roulette wheel selection
- Parameters:
positions (numpy.ndarray) – Current positions of all individuals
fitness (numpy.ndarray) – Current fitness values of all individuals
new_size (int) – New population size
- Returns:
A tuple containing (selected_positions, selected_fitness)
- Return type:
- static diversity_selection(positions: numpy.ndarray, fitness: numpy.ndarray, new_size: int, elite_fraction: float = 0.2) Tuple[numpy.ndarray, numpy.ndarray][source]
Select individuals based on fitness and diversity
- Parameters:
positions (numpy.ndarray) – Current positions of all individuals
fitness (numpy.ndarray) – Current fitness values of all individuals
new_size (int) – New population size
elite_fraction (float) – Fraction of individuals to select based on fitness
- Returns:
A tuple containing (selected_positions, selected_fitness)
- Return type: