tycho-solver
Version:
Evolutionary computation and optimization library
77 lines (76 loc) • 2.2 kB
TypeScript
/**
* GeneticAlgorithm.ts
* A flexible and powerful genetic algorithm library for TypeScript and JavaScript
*/
/**
* Interface representing an individual in a population
*/
export interface Individual<T> {
genes: T[];
fitness: number;
}
/**
* Type definition for the fitness function
*/
export type FitnessFunction<T> = (genes: T[]) => number;
/**
* Type definition for the gene generator function
*/
export type GeneGenerator<T> = () => T;
/**
* Type definition for the selection method
*/
export type SelectionMethod<T> = (population: Individual<T>[], fitnessSum: number) => Individual<T>;
/**
* Type definition for the crossover method
*/
export type CrossoverMethod<T> = (parent1: Individual<T>, parent2: Individual<T>) => [Individual<T>, Individual<T>];
/**
* Type definition for the mutation method
*/
export type MutationMethod<T> = (individual: Individual<T>, geneGenerator: GeneGenerator<T>) => void;
/**
* Configuration options for the genetic algorithm
*/
export interface GeneticAlgorithmOptions<T> {
populationSize: number;
geneLength: number;
fitnessFunction: FitnessFunction<T>;
geneGenerator: GeneGenerator<T>;
selectionMethod?: SelectionMethod<T>;
crossoverMethod?: CrossoverMethod<T>;
mutationMethod?: MutationMethod<T>;
crossoverRate?: number;
mutationRate?: number;
elitismCount?: number;
maxGenerations?: number;
targetFitness?: number;
}
/**
* Export utility functions
*/
export declare const geneticAlgorithmUtils: {
/**
* Helper to create a binary gene generator
*/
binaryGeneGenerator: () => 0 | 1;
/**
* Helper to convert binary genes to decimal
*/
binaryToDecimal: (genes: number[] | (0 | 1)[]) => number;
/**
* Helper to create a gene generator for real values in a range
*/
realValueGeneGenerator: (min: number, max: number) => GeneGenerator<number>;
};
/**
* Tycho Solver - Evolutionary Computation Library
*
* A modular and extensible library for evolutionary computation
* and optimization problems.
*/
export * from './core';
export * from './algorithms';
export * from './search';
export * from './parallel';
export * from './utils';