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); }
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); }