@alenaksu/neatjs
Version:
NEAT (Neuroevolution of Augmenting Topologies) implementation in JavaScript
104 lines (103 loc) • 3.26 kB
TypeScript
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>;