Пример #1
0
    // start with the selected settings
    public void RunSettings()
    {
        if (ReadFromFileField.isOn && !File.Exists(MapFilePathField.text))
        {
            ColorBlock cb = MapFilePathField.colors;
            cb.normalColor          = new Color(1f, 0.7f, 0.7f);
            MapFilePathField.colors = cb;
            return;
        }

        ReadMapFromFile          = ReadFromFileField.isOn;
        MapFilePath              = MapFilePathField.text;
        MapWidth                 = int.Parse(MapWidthField.text);
        MapHeight                = int.Parse(MapHeightField.text);
        NumberOfGuards           = int.Parse(NumberOfGuardsField.text);
        RouteGenotypeLength      = int.Parse(GenotypeLengthField.text);
        CrossoverPerStage        = int.Parse(CrossoverNumberField.text);
        DetectionRadius          = int.Parse(DetectionRadiusField.text);
        DetectionDecayTime       = int.Parse(DetectionDecayField.text);
        FitnessFunction          = (FitnessFunctions)(FitnessFunctionField.value);
        NumberOfSchemes          = int.Parse(NumberOfSchemesField.text);
        SimpleCrossover          = SimpleCrossoverField.isOn;
        UseMinFunction           = UseMinFunctionField.isOn;
        MutationProbability      = float.Parse(MutationProbabilityField.text);
        RouteMutationProbability = float.Parse(RouteMutationProbabilityField.text);
        NumberOfIterations       = int.Parse(NumberOfIterationsField.text);
        FitnessBinsX             = int.Parse(FitnessBinsXField.text);
        FitnessBinsY             = int.Parse(FitnessBinsYField.text);
        RandomSeed               = int.Parse(RandomSeedField.text);

        TurnTime  = float.Parse(TurnTimeField.text);
        TurnLimit = int.Parse(TurnLimitField.text);
        EnvironmentalNoiseProbability = float.Parse(EnvNoiseProbabilityField.text);
        EnvironmentalNoiseDegree      = int.Parse(EnvNoiseDegreeField.text);
        CrawlNoise        = float.Parse(CrawlNoiseField.text);
        WalkNoise         = float.Parse(WalkNoiseField.text);
        RunNoise          = float.Parse(RunNoiseField.text);
        NoiseRandomRange  = float.Parse(NoiseRadiusField.text);
        MinOutputToCheck  = float.Parse(MinOutputCheckField.text);
        MinOutputForAlarm = float.Parse(MinOutputAlarmField.text);
        RandomNinjaNumber = int.Parse(RandomNinjaNumberField.text);


        SettingsCanvas.gameObject.SetActive(false);
        RouteCanvas.gameObject.SetActive(true);

        if (RandomSeed != -1)
        {
            Random.InitState(RandomSeed);
        }
        if (!GenerateMap())
        {
            return;
        }
        SetGuards();
        GameStage = GameStages.RouteGeneration;
    }
Пример #2
0
            public Population(int size, Chromosomes.IChromosomeFactory chromosomeFactory, FitnessFunctions.IFitnessFunction fitnessFunction, SelectionMethods.ISelectionMethod selectionMethod)
            {
                this.SetCrossoverProbabilityToDefault();
                this.SetMutationProbabilityToDefault();
                this.SetSelectionRateToDefault();

                this.size = size;
                this.individuals = new Chromosomes.IChromosome[size];
                for (int i = 0; i < size; ++i)
                    this.individuals[i] = chromosomeFactory.GetNewChromosome();
                this.fitnessCalculator = fitnessFunction;
                this.selector = selectionMethod;
                this.fitnesses = new double[this.size];
                for (int i = 0; i < this.size; ++i)
                    this.fitnesses[i] = this.fitnessCalculator.GetFitness(this.individuals[i]);
            }
Пример #3
0
        public static void RunWickedCombOptimization()
        {
            var          solutionSpace       = new IntervalBranch(-0.15, 0.15); // Constraints
            const double difficulty          = 5;
            const double xSquaredCoefficient = 10;
            const int    sampleSize          = 200;
            const double confidenceLevel     = 0.99;
            const int    numSteps            = 15;

            var bb     = new SIDBranchAndBound <double>(solutionSpace, x => FitnessFunctions.WickedComb(x, difficulty, xSquaredCoefficient), GuidingParameter.OneOverNthQuantile);
            var result = bb.BranchAndBound(sampleSize, numSteps, confidenceLevel, false, false);

            Program.logger.WriteLine($"Wicked Comb (x, {difficulty}, {xSquaredCoefficient}) Size {sampleSize} Confidence {confidenceLevel} Optimization Results:");
            for (int i = 0; i < result.Length; i++)
            {
                Program.logger.WriteLine($"{i}: {result[i].ToString()}");
            }
        }
Пример #4
0
        public static void RunEggholderOptimization()
        {
            var          solutionSpace   = new RectangleBranch(-512, 512, -512, 512); // Constraints
            const int    sampleSize      = 200;
            const double confidenceLevel = 0.99;
            const int    numSteps        = 6;

            var bb     = new SIDBranchAndBound <Tuple <double, double> >(solutionSpace, x => FitnessFunctions.EggHolder(x.Item1, x.Item2), GuidingParameter.OneOverNthQuantile);
            var result = bb.BranchAndBound(sampleSize, numSteps, confidenceLevel, false, false);

            Program.logger.WriteLine($"Eggholder Size {sampleSize} Confidence {confidenceLevel} Optimization Results:");
            for (int i = 0; i < result.Length; i++)
            {
                Program.logger.WriteLine($"{i}: {result[i].ToString()}");
            }
        }