store the generation of the last best program found

This commit is contained in:
Josh Holtrop 2014-02-11 09:36:15 -05:00
parent 10abe3bf15
commit 4a9b515ea4

View File

@ -26,6 +26,7 @@ def main
generation = 0 generation = 0
begin begin
last_best = nil last_best = nil
last_best_generation = 0
while true while true
generation += 1 generation += 1
programs += programs.map do |grade, p| programs += programs.map do |grade, p|
@ -40,6 +41,7 @@ def main
programs = programs.take(NUM_PROGRAMS) programs = programs.take(NUM_PROGRAMS)
if last_best.nil? or programs.first.first < last_best if last_best.nil? or programs.first.first < last_best
last_best = programs.first.first last_best = programs.first.first
last_best_generation = generation
$stdout.write("\rGrade: #{last_best}, output: #{programs.first.last.execute.inspect} ") $stdout.write("\rGrade: #{last_best}, output: #{programs.first.last.execute.inspect} ")
end end
if programs.first.first == 0 if programs.first.first == 0
@ -52,7 +54,7 @@ def main
rescue Interrupt rescue Interrupt
puts puts
puts "Canceled at #{generation} generations" puts "Canceled at #{generation} generations"
puts "The best program (grade #{programs.first.first}) is:" puts "The best program (grade #{programs.first.first}, generation #{last_best_generation}) is:"
puts programs.first.last puts programs.first.last
end end
end end