Duplicate Individual Detection¶
This page demonstrates the use of the method Population.get_num_unique() to help detect when populations have duplicate individuals. This method uses np.round to deal with floating point accuracy issues.
In [1]:
Copied!
import paretobench as pb
import numpy as np
import paretobench as pb
import numpy as np
In [2]:
Copied!
# Create a population with exact duplicates and calculate the number of unique individuals
pop = pb.Population(f=np.array([[1, 2, 3], [1, 2, 3], [1, 2, 3], [2, 3, 4], [3, 4, 5], [1, 2, 3]], dtype=float))
print(f"Number of individuals: {len(pop)}")
print(f"Number of unique individuals: {pop.count_unique_individuals()}")
# Create a population with exact duplicates and calculate the number of unique individuals
pop = pb.Population(f=np.array([[1, 2, 3], [1, 2, 3], [1, 2, 3], [2, 3, 4], [3, 4, 5], [1, 2, 3]], dtype=float))
print(f"Number of individuals: {len(pop)}")
print(f"Number of unique individuals: {pop.count_unique_individuals()}")
Number of individuals: 6 Number of unique individuals: 3
In [3]:
Copied!
# Create some individuals with noise in the last few digits
pop = pb.Population(
f=np.array(
[
[1 + 1e-14, 2, 3],
[1 + 2e-14, 2, 3],
[1 + 3e-14, 2, 3],
[1 + 4e-14, 2, 3],
[2, 3, 4],
[3, 4, 5],
],
dtype=float,
)
)
print(f"Number of individuals: {len(pop)}")
print(f"Number of unique individuals: {pop.count_unique_individuals()}")
# Create some individuals with noise in the last few digits
pop = pb.Population(
f=np.array(
[
[1 + 1e-14, 2, 3],
[1 + 2e-14, 2, 3],
[1 + 3e-14, 2, 3],
[1 + 4e-14, 2, 3],
[2, 3, 4],
[3, 4, 5],
],
dtype=float,
)
)
print(f"Number of individuals: {len(pop)}")
print(f"Number of unique individuals: {pop.count_unique_individuals()}")
Number of individuals: 6 Number of unique individuals: 3
In [ ]:
Copied!