genetic-search
Version:
Multiprocessing genetic algorithm implementation library
89 lines (88 loc) • 3.35 kB
TypeScript
import type { PhenomeRow, PhenomeCacheInterface } from "./types";
/**
* A dummy phenome cache implementation that does nothing.
*
* This class is used when the {@link GeneticSearch} is created without a
* phenome cache.
*
* @category Cache
* @category Strategies
*/
export declare class DummyPhenomeCache implements PhenomeCacheInterface {
getReady(_: number): PhenomeRow | undefined;
get(_: number, defaultValue?: PhenomeRow): PhenomeRow | undefined;
set(_: number, __: PhenomeRow): void;
clear(_: number[]): void;
export(): Record<number, never>;
import(_: Record<number, never>): void;
}
/**
* A simple phenome cache implementation.
*
* This cache stores the constant phenome value for each genome.
*
* @category Cache
* @category Strategies
*/
export declare class SimplePhenomeCache implements PhenomeCacheInterface {
protected readonly cache: Map<number, PhenomeRow>;
get(genomeId: number, defaultValue?: PhenomeRow): PhenomeRow | undefined;
getReady(genomeId: number): PhenomeRow | undefined;
set(genomeId: number, phenome: PhenomeRow): void;
clear(excludeGenomeIds: number[]): void;
export(): Record<number, PhenomeRow>;
import(data: Record<number, PhenomeRow>): void;
}
/**
* A phenome cache implementation that stores the phenome for each genome as a
* weighted average of all phenome that have been set for that genome.
*
* @category Cache
* @category Strategies
*/
export declare class AveragePhenomeCache implements PhenomeCacheInterface {
/**
* A map of genome IDs to their respective phenome and the number of times they have been set.
*
* The key is the genome ID, and the value is an array with two elements. The first element is the
* current phenome for the genome, and the second element is the number of times the phenome have
* been set.
*/
protected readonly cache: Map<number, [PhenomeRow, number]>;
get(genomeId: number, defaultValue?: PhenomeRow): PhenomeRow | undefined;
getReady(): PhenomeRow | undefined;
set(genomeId: number, phenome: PhenomeRow): void;
clear(excludeGenomeIds: number[]): void;
export(): Record<number, [PhenomeRow, number]>;
import(data: Record<number, [PhenomeRow, number]>): void;
}
/**
* A phenome cache implementation that stores the phenome for each genome as a
* weighted average of all phenome that have been set for that genome.
*
* The closer the genome age is to 0, the closer the phenome are to the average phenome of the population,
* which helps to combat outliers for new genomes.
*
* @category Cache
* @category Strategies
*/
export declare class WeightedAgeAveragePhenomeCache extends AveragePhenomeCache {
/**
* The weight factor used for calculating the weighted average.
*/
private weight;
/**
* The current average phenome row, or undefined if not yet calculated.
*/
private averageRow;
/**
* Constructs a new WeightedAgeAveragePhenomeCache.
* @param weight The weight factor used for calculating the weighted average.
*/
constructor(weight: number);
set(genomeId: number, phenome: PhenomeRow): void;
get(genomeId: number, defaultValue?: PhenomeRow): PhenomeRow | undefined;
private refreshAverageRow;
private resetAverageRow;
private getPhenomeCount;
}