UNPKG

@alenaksu/neatjs

Version:

NEAT (Neuroevolution of Augmenting Topologies) implementation in JavaScript

104 lines (103 loc) 3.26 kB
import { Genome } from './neat/Genome'; import { Organism } from './neat/Organism'; import { Species } from './neat/Species'; import { ConnectionGene } from './neat/ConnectionGene'; import { NodeType, NEATConfig } from './types'; /** * Picks n random items from the given list * @param list * @param n */ export declare function getRandomItems(list: any[], n: number): Array<any>; /** * Returns a random boolean */ export declare function randomBool(): boolean; /** * Compute the mean of the given values * @param values */ export declare function mean(...values: number[]): number; /** * Returns a random number between from/to arguments * @param to * @param from */ export declare function rnd(to?: number, from?: number): number; /** * Returns a normally distribuited random number (Box-Muller transform) */ export declare function gaussian(mean?: number, standardDeviation?: number): IterableIterator<number>; /** * Generate a random UUIDv4 (rfc4122 compliant) */ export declare function uuid(): string; /** * Compute the compatibility distance between two genomes * @param genome1 * @param genome2 * @param config */ export declare function compatibility(genome1: Genome, genome2: Genome, config: NEATConfig): number; export declare function sigmoid(x: number, slope?: number): number; /** * Check whether the connection creates a loop inside the network * @param connection * @param connections */ export declare function isRecurrent(connection: ConnectionGene, connections: ConnectionGene[]): boolean; /** * Mate 2 organisms * @param genome1 * @param genome2 */ export declare function crossover(genome1: Organism, genome2: Organism, config: NEATConfig): Organism; /** * Perform genome's mutations * @param config * @param organism */ export declare function mutateGenome(config: NEATConfig, organism: Organism): Organism; /** * Returns a random species form the given set, tending towards better species * @param sortedSpecies A sorted set of species */ export declare function getRandomSpecies(sortedSpecies: Species[]): Species; /** * Puts the organism inside a compatibile species * @param config * @param organism * @param species */ export declare function speciateOrganism(config: NEATConfig, organism: Organism, allSpecies: Species[]): void; /** * Sorts an array from largest to smallest * @param keyFn */ export declare function descending(keyFn?: Function): (a: any, b: any) => number; /** * Sorts an array from smallest to largest * @param keyFn */ export declare function ascending(keyFn?: Function): (a: any, b: any) => number; export declare const byFitness: (i: any) => any; export declare const byMaxFitness: (i: any) => any; export declare const byInnovation: (i: any) => any; export declare const byType: (i: any) => any; /** * Keeps the given value between the specified range * @param min * @param max * @param value */ export declare function wrapNumber(min: number, max: number, value: number): number; export declare const isSensor: (gene: { type: NodeType; }) => boolean; export declare const isOutput: (gene: { type: NodeType; }) => boolean; /** * Create a new innovation number generator */ export declare function Innovation(i?: number): IterableIterator<number>;