UNPKG

tycho-solver

Version:

Evolutionary computation and optimization library

77 lines (76 loc) 2.2 kB
/** * 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';