Source code for fairdo.optimize.operators.initialization

import numpy as np


[docs]def random_initialization(pop_size, d): """ Generate a random population of binary vectors. Each vector has a length of d. The values of the vectors are either 0 or 1. The population is generated randomly. Parameters ---------- pop_size: int The size of the population to generate. d: int The dimension of the binary vectors. Returns ------- population: ndarray, shape (pop_size, d) The generated population of binary vectors. """ return biased_random_initialization(pop_size, d, selection_probability=0.5)
[docs]def biased_random_initialization(pop_size, d, selection_probability=0.8): """ Initialize the population with a bias towards selecting more items. Parameters ---------- pop_size: int Size of the population. d: int Dimensionality of the problem (number of items). selection_probability: float Probability of initializing a bit as 1. Returns: np.ndarray: Initialized population with shape (pop_size, d). """ population = np.random.choice([0, 1], size=(pop_size, d), p=[1 - selection_probability, selection_probability]) return population
[docs]def variable_initialization(pop_size, d, min_p=0.5, max_p=0.99): """ Initialize the population with a variable probability of selecting items. Parameters ---------- pop_size: int Size of the population. d: int Dimensionality of the problem (number of items). min_p: float Minimum probability of selecting an item. max_p: float Maximum probability of selecting an item. Returns: np.ndarray: Initialized population with shape (pop_size, d). """ probabilities = np.linspace(min_p, max_p, num=pop_size) population = np.array([np.random.choice([1, 0], size=d, p=[p, 1-p]) for p in probabilities]) return population