public bool Match(IGenerationResult <T, TScore> generationResult) { int mostFitGenomeGeneration = generationResult.FittestGenome.GenomeInfo.Generation; double averageGenomeGeneration = generationResult.AverageGenomeGeneration; return(generationResult.GenerationNumber > _minGenerationsToTakeEffect && (mostFitGenomeGeneration / (double)generationResult.GenerationNumber < _mostFitGenomeMaxAgePercentage || averageGenomeGeneration / generationResult.GenerationNumber < _averageGenomeMaxAgePercentage)); }
public void LogGeneration(IGenerationResult <Coefficients, double> generationResult) { using (var generationFile = new StreamWriter($"generation_{generationResult.GenerationNumber}_{_loggerId}.csv")) { foreach (var fitnessResult in generationResult.OrderedGenomes) { Coefficients genome = fitnessResult.GenomeInfo.Genome; generationFile.WriteLine($"{fitnessResult.Fitness:e2},{fitnessResult.GenomeInfo.Generation},{genome.FifthLevel:0.0000},{genome.FourthLevel:0.0000},{genome.ThirdLevel:0.0000},{genome.SecondLevel:0.0000},{genome.FirstLevel:0.0000}"); } } }
public void LogGenerationInfo(IGenerationResult <GameAgentLogicGenome, double> generationResult) { Console.WriteLine("----------------------------"); Console.WriteLine($"{_runId},{generationResult.GenerationNumber},{generationResult.FittestGenome.Fitness}"); _logFile.WriteLine($"{_runId},{generationResult.GenerationNumber},{generationResult.FittestGenome.Fitness}"); Console.WriteLine($"Monster w/ weapon func {generationResult.FittestGenome.GenomeInfo.Genome.MonsterWhenPossessingWeaponScoreFunc}"); Console.WriteLine($"Monster no weapon func {generationResult.FittestGenome.GenomeInfo.Genome.MonsterWhenNotPossessingWeaponScoreFunc}"); Console.WriteLine($"Weapon w/ weapon func {generationResult.FittestGenome.GenomeInfo.Genome.WeaponWhenPossessingWeaponScoreFunc}"); Console.WriteLine($"Weapon no weapon func {generationResult.FittestGenome.GenomeInfo.Genome.WeaponWhenNotPossessingWeaponScoreFunc}"); LogGeneration(generationResult); }
public void LogGeneration(IGenerationResult <GameAgentMultipliers, double> generation) { using (var resultFile = new StreamWriter($"results_{_runId}.csv")) { var best = generation.FittestGenome.GenomeInfo.Genome; resultFile.WriteLine($"Gold multipliers {string.Join(", ", best.GoldScoreMultiplier.Select(d => $"{d:0.0000}"))}"); resultFile.WriteLine($"Monster w/ weapon multipliers {string.Join(", ", best.MonsterWhenPossessingWeaponScoreMultiplier.Select(d => $"{d:0.0000}"))}"); resultFile.WriteLine($"Monster no weapon multipliers {string.Join(", ", best.MonsterWhenNotPossessingWeaponScoreMultiplier.Select(d => $"{d:0.0000}"))}"); resultFile.WriteLine($"Weapon w/ weapon multipliers {string.Join(", ", best.WeaponWhenPossessingWeaponScoreMultiplier.Select(d => $"{d:0.0000}"))}"); resultFile.WriteLine($"Weapon no weapon multipliers {string.Join(", ", best.WeaponWhenPossessingNotWeaponScoreMultiplier.Select(d => $"{d:0.0000}"))}"); resultFile.Close(); } }
public void LogGenerationInfo(IGenerationResult <Coefficients, double> generationResult) { // Console.WriteLine($" Average generation: {generationResult.AverageGenomeGeneration:0.00}"); // Console.WriteLine($" Average fitness: {generationResult.OrderedGenomes.Average(r => r.Fitness):e2}"); LogGenome(generationResult.FittestGenome); FitnessResult <Coefficients, double> topGenome = generationResult.FittestGenome; double averageAgeTop10Genomes = generationResult.OrderedGenomes.Take(10).Average(r => r.GenomeInfo.Generation); var averageScoreAllGenomes = generationResult.OrderedGenomes.Average(r => r.Fitness); var averageScoreTop10Genomes = generationResult.OrderedGenomes.Take(10).Average(r => r.Fitness); _logFile.WriteLine($"{_loggerId},{generationResult.GenerationNumber},{generationResult.AverageGenomeGeneration:0.00},{averageAgeTop10Genomes:0.00},{topGenome.GenomeInfo.Generation:0},{averageScoreAllGenomes:e2},{averageScoreTop10Genomes:e2},{topGenome.Fitness:e2}"); _logFile.Flush(); }
public bool Match(IGenerationResult <T, double> generationResult) { double currentGenerationFitness = generationResult.FittestGenome.Fitness; _previousGenerationFitnesses.Enqueue(currentGenerationFitness); if (_previousGenerationFitnesses.Count > _numGenerations) { double oldestGenerationFitness = _previousGenerationFitnesses.Dequeue(); if (Math.Abs(oldestGenerationFitness - currentGenerationFitness) < _minImprovement) { return(true); } } return(false); }
public void LogGenerationInfo(IGenerationResult <GameAgentMultipliers, double> generationResult) { Console.WriteLine($"{_runId},{generationResult.GenerationNumber},{generationResult.FittestGenome.Fitness}"); _logFile.WriteLine($"{_runId},{generationResult.GenerationNumber},{generationResult.FittestGenome.Fitness}"); }
public void LogGenerationInfo(IGenerationResult <MyThing, int> generationResult) { Console.WriteLine($" Average generation: {generationResult.AverageGenomeGeneration}"); Console.WriteLine($" Average fitness: {generationResult.OrderedGenomes.Average(r => r.Fitness)}"); }
public void LogGeneration(IGenerationResult <MyThing, int> generation) { }
public bool Match(IGenerationResult <T, TScore> generationResult) { return(_fitnessScoreConditionFunc(generationResult.FittestGenome.Fitness)); }