import { ObjectiveManager, EncodingSampler, ObjectiveFunction, SearchAlgorithm, Encoding, Crossover, EventManager } from "../../..";
import { SearchAlgorithmPlugin, SearchAlgorithmOptions } from "../../../plugin/SearchAlgorithmPlugin";
import { EvolutionaryAlgorithm } from "./EvolutionaryAlgorithm";
/**
 * Many-objective Sorting Algorithm (MOSA).
 *
 * Based on:
 * Reformulating Branch Coverage as a Many-Objective Optimization Problem
 * A. Panichella; F. K. Kifetew; P. Tonella
 *
 * @author Mitchell Olsthoorn
 * @author Annibale Panichella
 */
export declare class MOSAFamily<T extends Encoding> extends EvolutionaryAlgorithm<T> {
    constructor(eventManager: EventManager<T>, objectiveManager: ObjectiveManager<T>, encodingSampler: EncodingSampler<T>, crossover: Crossover<T>);
    protected _environmentalSelection(size: number): void;
    /**
     * See: Preference sorting as discussed in the TSE paper for DynaMOSA
     *
     * @param population
     * @param objectiveFunctions
     */
    preferenceSortingAlgorithm(population: T[], objectiveFunctions: Set<ObjectiveFunction<T>>): T[][];
    /**
     * It retrieves the front of non-dominated solutions from a list
     */
    getNonDominatedFront(uncoveredObjectives: Set<ObjectiveFunction<T>>, remainingSolutions: T[]): T[];
    /**
     * Preference criterion in MOSA: for each objective, we select the test case closer to cover it.
     *
     * @param population
     * @param objectives list of objective to consider
     * @protected
     */
    preferenceCriterion(population: T[], objectives: Set<ObjectiveFunction<T>>): T[];
}
/**
 * Factory plugin for MOSA
 *
 * @author Dimitri Stallenberg
 */
export declare class MOSAFactory<T extends Encoding> implements SearchAlgorithmPlugin<T> {
    name: string;
    register(): void;
    createSearchAlgorithm(options: SearchAlgorithmOptions<T>): SearchAlgorithm<T>;
}
/**
 * Factory plugin for DynaMOSA
 *
 * Dynamic Many-Objective Sorting Algorithm (DynaMOSA).
 *
 * Based on:
 * Automated Test Case Generation as a Many-Objective Optimisation Problem with Dynamic Selection of the Targets
 * A. Panichella; F. K. Kifetew; P. Tonella
 *
 * @author Dimitri Stallenberg
 */
export declare class DynaMOSAFactory<T extends Encoding> implements SearchAlgorithmPlugin<T> {
    name: string;
    register(): void;
    createSearchAlgorithm(options: SearchAlgorithmOptions<T>): SearchAlgorithm<T>;
}
//# sourceMappingURL=MOSAFamily.d.ts.map