public GeneticPathFinding(int[] order, OptimizationParameters parameters, DelegateFitness.CalcFitness calcFitness, CancellationToken ct, Random random)
        {
            var populationInitialization = new StandardPathInitialization(random);
            var population = populationInitialization.InitializePopulation(order, parameters.PopulationSize, 0);

            _genetic = new BaseGenetic(parameters, population, calcFitness, ct, random);
        }
        public GeneticWarehouse(OptimizationParameters optimizationParameters, int warehouseSize,
                                DelegateFitness.CalcFitness calcFitness, CancellationToken ct, Random random)
        {
            _warehouseSize = warehouseSize;
            int[] itemsToSort = new int[_warehouseSize];
            for (int i = 1; i < _warehouseSize; i++)
            {
                itemsToSort[i - 1] = i;
            }

            var populationInitialization = new StandardPathInitialization(random);
            var population = populationInitialization.InitializePopulation(itemsToSort, optimizationParameters.PopulationSize, 0);

            _genetic = new BaseGenetic(optimizationParameters, population, calcFitness, ct, random);
            wm       = new WarehouseModule();
            _genetic.LoadModule(wm);
        }