Ejemplo n.º 1
0
        public double Evaluate(IChromosome chromosome)
        {
            var stopwatch = Stopwatch.StartNew();

            var scalingFactor = (double)(int)chromosome.GetGene(0).Value / 1000;
            var error         = _engineOperator.Evaluate(scalingFactor);

            var fitness     = 1.0 - error;
            var elapsedTime = (double)stopwatch.ElapsedMilliseconds / 1000;

            var chromosomeRequest = RequestsFactory.CreateChromosomeRequest(_testId, fitness, elapsedTime, chromosome);

            _webService.SendChromosomeData(chromosomeRequest).GetAwaiter().GetResult();

            Console.WriteLine($"[{DateTime.Now}] Run done! Fitness: {fitness}");
            return(fitness);
        }
Ejemplo n.º 2
0
        public double Evaluate(IChromosome chromosome)
        {
            for (var geneIndex = 0; geneIndex < SettingsLoader.Data.Genes.Count; geneIndex++)
            {
                var geneName  = SettingsLoader.Data.Genes[geneIndex].Name;
                var geneValue = chromosome.GetGene(geneIndex).ToString();

                _engineOperator.SetOption(geneName, geneValue);
            }

            while (true)
            {
                try
                {
                    _engineOperator.ApplyOptions();
                    break;
                }
                catch
                {
                    _engineOperator.Restart();
                    _engineOperator.LoadEpd(SettingsLoader.Data.PositionsDatabasePath);
                }
            }

            var stopwatch   = Stopwatch.StartNew();
            var error       = _engineOperator.Evaluate(SettingsLoader.Data.ScalingConstant);
            var fitness     = 1.0 - error;
            var elapsedTime = (double)stopwatch.ElapsedMilliseconds / 1000;

            var chromosomeRequest = RequestsFactory.CreateChromosomeRequest(_testId, fitness, elapsedTime, chromosome);

            _webService.SendChromosomeData(chromosomeRequest).GetAwaiter().GetResult();

            Console.WriteLine($"[{DateTime.Now}] Run done! Fitness: {fitness}");
            return(fitness);
        }