Beispiel #1
0
        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));
        }
Beispiel #2
0
 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}");
         }
     }
 }
Beispiel #3
0
        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();
     }
 }
Beispiel #5
0
        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));
 }