import { EvolutionaryAlgorithm } from "./EvolutionaryAlgorithm";
import { EncodingSampler } from "../../EncodingSampler";
import { Crossover } from "../../operators/crossover/Crossover";
import { Encoding } from "../../Encoding";
import { SearchAlgorithmPlugin, SearchAlgorithmOptions } from "../../../plugin/SearchAlgorithmPlugin";
import { SearchAlgorithm } from "../SearchAlgorithm";
import { ObjectiveManager } from "../../objective/managers/ObjectiveManager";
import { EventManager } from "../../..";
/**
 * Non-dominated Sorting Genetic Algorithm (NSGA-II).
 *
 * Based on:
 * A fast and elitist multiobjective genetic algorithm: NSGA-II
 * K. Deb; A. Pratap; S. Agarwal; T. Meyarivan
 *
 * @author Mitchell Olsthoorn
 * @author Annibale Panichella
 * @author Dimitri Stallenberg
 */
export declare class NSGAII<T extends Encoding> extends EvolutionaryAlgorithm<T> {
    /**
     * Constructor.
     *
     * @param eventManager The event manager
     * @param encodingSampler The encoding sampler
     * @param runner The runner
     * @param crossover The crossover operator to apply
     */
    constructor(eventManager: EventManager<T>, objectiveManager: ObjectiveManager<T>, encodingSampler: EncodingSampler<T>, crossover: Crossover<T>);
    /**
     * @inheritDoc
     * @protected
     */
    protected _environmentalSelection(size: number): void;
}
/**
 * Factory plugin for NSGAII
 *
 * @author Dimitri Stallenberg
 */
export declare class NSGAIIFactory<T extends Encoding> implements SearchAlgorithmPlugin<T> {
    name: string;
    register(): void;
    createSearchAlgorithm(options: SearchAlgorithmOptions<T>): SearchAlgorithm<T>;
}
//# sourceMappingURL=NSGAII.d.ts.map