def run_one_iteration(parameters, score)
	  	self.run_one_mating_iteration(parameters, score) if @currently_mating == true
	    @current = {:parameters => parameters, :score => score}
	    # update best score?
	    self.update_best?
	    # push new parameter set into generation
	    @currently_mating = @generation_handler.add_new_individual(@current)
	    if @currently_mating == true
	    	# begin mating process
	    	# empty current population
	    	@generation_handler.population_array = []
	    	selected_to_mate = @mating_handler.select_mating_population(@generation_handler.archive_array)
	    	self.get_children_to_score(selected_to_mate)
	    	@children_to_score.pop[:parameters]
	    else
	    	# get next parameter set to score
	    	self.random_parameter_set
	    end
	  end
def run_one_iteration(parameters, score)
	  	self.run_one_mating_iteration(parameters, score) if @currently_mating == true
	    @current = {:parameters => parameters, :score => score}
	    # update best score?
	    self.update_best?
	    # push new parameter set into generation
	    @currently_mating = @generation_handler.add_new_individual(@current)
	    if @currently_mating == true
	    	# begin mating process
	    	# empty current population
	    	@generation_handler.population_array = []
	    	selected_to_mate = @mating_handler.select_mating_population(@generation_handler.archive_array)
	    	self.get_children_to_score(selected_to_mate)
	    	@children_to_score.pop[:parameters]
	    else
	    	# get next parameter set to score
	    	self.random_parameter_set
	    end
	  end
accepts a parameter set and a score (which are added to population)
 returns another parameter set to be scored which is then accepted next iteration