Skip to content

[QUESTION] Shouldn't compute_novelty consider the current batch? #708

Description

@amarrerod

Hi,

I'm not sure if this is a bug or a design choice, but in the compute_novelty method of the ProximityArchive class, the novelty of the new batch of measures is only calculated against the measures already stored in the archive. However, in the original NS paper, Lehman and Stanley defined that the novelty must be computed considering the archive and the current batch: /

The nearest neighbors calculation must take into consideration individuals from the current population and from the permanent archive
of novel individuals.
https://www.cs.swarthmore.edu/~meeden/DevelopmentalRobotics/lehman_ecj11.pdf

Here is the piece of code I'm referring to:

# Compute nearest neighbors.
k_neighbors = min(len(self), self.k_neighbors)
dists, indices = self._cur_kd_tree.query(measures, k=k_neighbors)
# Expand since query() automatically squeezes the last dim when k=1.
dists = dists[:, None] if k_neighbors == 1 else dists
novelty = np.mean(dists, axis=1)

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions