import { NestFiler } from "../Common/Filer";
import { Container } from "./Container";
import { Part } from "./Part";
import { Path } from "./Path";
import { PlaceType } from "./PlaceType";
/**
 * 个体(表示某一次优化的结果,或者还没开始优化的状态)
 * 个体是由一堆零件组成的，零件可以有不同的状态。
 *
 * 个体单独变异
 *  可以是某个零件的旋转状态发生改变
 *  可以是零件的顺序发生改变
 *
 * 个体交配(感觉暂时不需要)
 *  个体和其他个体进行基因交换
 */
export declare class Individual {
    Parts?: Part[];
    mutationRate: number;
    private bin?;
    private OddmentsBins;
    private ComparePointKeys;
    constructor(Parts?: Part[], mutationRate?: number, bin?: Path, OddmentsBins?: Path[], ComparePointKeys?: string[]);
    Fitness: number;
    Containers: Container[];
    HoleContainers: Container[];
    OddmentsContainers: Container[];
    /**
     * 评估健康程度
     */
    Evaluate(bestCount: number, greedy?: boolean, type?: PlaceType): void;
    /**
     * 在网洞利用时,保持纹路正确
     *
     * @param bestCount
     * @param greedy
     * @param type
     */
    private EvaluateOfUseRotateHole;
    private AppendHoles;
    private InitHoleContainers;
    Clone(): Individual;
    /**
    * 突变
    */
    Mutate(): this;
    ReadFile(file: NestFiler): void;
    WriteFile(f: NestFiler): void;
}
//# sourceMappingURL=Individual.d.ts.map