NS implementation should include data structure to hold information about the explored novel item and the structure to maintain and manage a list of novel items. In our implementation, this functionality is encapsulated in three Python classes:
- NoveltyItem: The structure that holds all relevant information about the novelty score of the individual that was evaluated during the evolution.
- NoveltyArchive: The class that maintains a list of the relevant NoveltyItem instances. It provides methods to evaluate the novelty scores of individual genomes compared to the already collected NoveltyItem instances and the current population.
- ItemsDistance: The auxiliary structure that holds the distance (novelty) metric value between the two NoveltyItem instances. It is used in calculations of the average k-nearest neighbor distance, which is used as a novelty score...