# File lib/ai4r/genetic_algorithm/genetic_algorithm.rb, line 222
      def self.reproduce(a, b)
        data_size = @@costs[0].length
        available = []
        0.upto(data_size-1) { |n| available << n }
        token = a.data[0]
        spawn = [token]
        available.delete(token)
        while available.length > 0 do 
          #Select next
          if token != b.data.last && available.include?(b.data[b.data.index(token)+1])
            next_token = b.data[b.data.index(token)+1]
          elsif token != a.data.last && available.include?(a.data[a.data.index(token)+1])
            next_token = a.data[a.data.index(token)+1] 
          else
            next_token = available[rand(available.length)]
          end
          #Add to spawn
          token = next_token
          available.delete(token)
          spawn << next_token
          a, b = b, a if rand < 0.4
        end
        return Chromosome.new(spawn)
      end