diff --git a/evolve/evolve.c b/evolve/evolve.c index ce312af..f186041 100644 --- a/evolve/evolve.c +++ b/evolve/evolve.c @@ -31,6 +31,7 @@ SOFTWARE. #include #include "evolve.h" +#include "genann.h" pcg32_random_t rng; @@ -113,6 +114,9 @@ genann *child_from_mutation(genann **nns) { genann *mutate(genann *parent) { genann *child = genann_copy(parent); + // Hacky way to also have a slight chance of no mutation at all. + if (GENANN_RANDOM() < 0.01) return child; + float mutation_rate = 0.0004; // 1/2500 for (int i = 0; i < child->total_weights; i++) { diff --git a/ruby/run_generation.rb b/ruby/run_generation.rb index 2a90bcb..f164c86 100644 --- a/ruby/run_generation.rb +++ b/ruby/run_generation.rb @@ -251,9 +251,9 @@ def clean_up_generation(g) GNUGO10 = { 'name' => 'GnuGoLevel10', 'command' => 'gnugo --level 10 --mode gtp' } EXTERNAL_PLAYERS = [ *(1..5).map { |i| BROWN.merge('name' => BROWN['name'] + i.to_s) }, - *(1..5).map { |i| AMIGO.merge('name' => AMIGO['name'] + i.to_s) }, - GNUGO0, - GNUGO10 + *(1..10).map { |i| AMIGO.merge('name' => AMIGO['name'] + i.to_s) }, + *(1..2).map { |i| GNUGO0.merge('name' => GNUGO0['name'] + i.to_s) }, + *(1..2).map { |i| GNUGO10.merge('name' => GNUGO10['name'] + i.to_s) } ] def setup_tournament diff --git a/stats b/stats index 287d338..f68cb23 100755 --- a/stats +++ b/stats @@ -45,7 +45,7 @@ end $stats = File.exist?('stats.json') ? JSON.load_file('stats.json') : {} $starting = true -TO_COMBINE = %w[Brown AmiGo] +TO_COMBINE = %w[Brown AmiGo GnuGoLevel0 GnuGoLevel10] def stats_for(generation) return $stats[generation] if $stats[generation] @@ -142,7 +142,7 @@ loop do gens = if options[:csv] generations[0..-2] else - generations[0..-2].reverse.take(40).reverse + generations[0..-2].reverse.take(50).reverse end if gens.empty?