validate
DuplicatesValidate
¶
validate(self, *, population, **kwargs)
¶
Removes duplicate individuals from population
Parameters:
Name | Type | Description | Default |
---|---|---|---|
population |
ndarray |
the population to validate |
required |
**kwargs |
|
keyword arguments for plugins |
{} |
Returns:
Type | Description |
---|---|
ndarray |
np.ndarray: same width as population, likely has less rows |
Source code in pangadfs/validate.py
def validate(self,
*,
population: np.ndarray,
**kwargs) -> np.ndarray:
"""Removes duplicate individuals from population
Args:
population (np.ndarray): the population to validate
**kwargs: keyword arguments for plugins
Returns:
np.ndarray: same width as population, likely has less rows
"""
# the first part eliminates individuals with duplicate genes
# the second part eliminates duplicate individuals
population_sorted = np.sort(population, axis=-1)
population = population[(population_sorted[...,1:] != population_sorted[..., :-1]).all(-1)]
return unique(np.sort(population, axis=1))
SalaryValidate
¶
validate(self, *, population, salaries, salary_cap, **kwargs)
¶
Ensures valid individuals in population
Parameters:
Name | Type | Description | Default |
---|---|---|---|
population |
ndarray |
the population to validate |
required |
salaries |
ndarray |
1D where indices are in same order as player indices |
required |
salary_cap |
int |
the salary cap, e.g., 50000 or 60000 |
required |
**kwargs |
|
keyword arguments for plugins |
{} |
Returns:
Type | Description |
---|---|
ndarray |
np.ndarray: same width as population, likely has less rows |
Source code in pangadfs/validate.py
def validate(self,
*,
population: np.ndarray,
salaries: np.ndarray,
salary_cap: int,
**kwargs) -> np.ndarray:
"""Ensures valid individuals in population
Args:
population (np.ndarray): the population to validate
salaries (np.ndarray): 1D where indices are in same order as player indices
salary_cap (int): the salary cap, e.g., 50000 or 60000
**kwargs: keyword arguments for plugins
Returns:
np.ndarray: same width as population, likely has less rows
"""
popsal = np.sum(salaries[population], axis=1)
return population[popsal <= salary_cap]