import { CostFn } from "../methods/cost"; import { Mutation } from "../methods/mutation"; import { RatePolicy } from "../methods/rate"; import { Connection } from "./connection"; import { Node, NodeVal } from "./node"; export type TrainingVal = { input: number[]; output: number[]; }; export type TrainingResult = { error: number; iterations: number; time: number; }; export type ScheduleFn = (data: TrainingResult) => void; export type ScheduleConfig = { function: ScheduleFn; iterations: number; }; export type TrainingOptions = { log?: number; error?: number; cost?: CostFn; rate?: number; dropout?: number; shuffle?: boolean; iterations?: number; schedule?: ScheduleConfig; clear?: boolean; momentum?: number; ratePolicy?: RatePolicy; batchSize?: number; }; export type EvolveOptions = { cost?: CostFn; amount?: number; growth?: number; iterations?: number; error?: number; log?: number; schedule?: ScheduleConfig; clear?: boolean; threads?: number; }; export interface Network { input: number; output: number; nodes: Node[]; connections: Connection[]; gates: Connection[]; selfconns: Connection[]; activate: (input: number[]) => number[]; noTraceActivate: (input: number[]) => number[]; propagate: (rate: number, momentum: number, update: boolean, target: number[]) => void; connect: (n1: Node, n2: Node) => Connection[]; remove: (n: Node) => void; disconnect: (n1: Node, n2: Node) => void; gate: (n: Node, c: Connection) => void; ungate: (c: Connection) => void; mutate: (m: Mutation) => void; serialize: () => [Float64Array, Float64Array, Float64Array]; toJSON: () => object; standalone: () => string; set: (v: NodeVal) => void; clear: () => void; train: (vals: TrainingVal[], opts: TrainingOptions) => TrainingResult; evolve: (vals: TrainingVal[], opts: EvolveOptions) => TrainingResult; } export declare const merge: (n1: Network, n2: Network) => Network; export declare const crossOver: (n1: Network, n2: Network) => Network; export declare const fromJSON: (o: object) => Network; export declare function create(i: number, o: number): Network; export declare const classConstructor: (i: number, o: number) => void;