require 'rubygems' require 'charlie' exit(puts "GIVE ARG!") unless ARGV[0] BONUS = ARGV[0].to_i MIN = BONUS MAX = 100 class Traveler < FloatListGenotype(1,MIN..MAX) def choice genes[0].between(MIN,MAX).round end def fight_points(other) c,oc = choice, other.choice c == oc ? [c,c] : c < oc ? [c+BONUS,c-BONUS] : [oc-BONUS,oc+BONUS] end end for group_size in (2..20) $stderr.puts group_size for mut_size in (1..100).map{|x| x / 10.0 } klass = Class.new(Traveler){ use ListMutator(:probability[0.5],:gaussian[mut_size]), CoTournamentSelection(group_size) def mutate!; super; genes[0] = genes[0].between(MIN,MAX); end } print Population.new(klass).evolve_silent(1000).map{|x| x.genes[0] }.average, ' ' end puts end