def report_results(self, configuration, results_dir):
    """Report on the results of a run of the optimisation"""
    optimisation = configuration.optimisation
    configuration.report_on_best_params(self.best_citizen.dictionary)
    
    print("After: " + str(configuration.num_generations) + " generations:")

    if not results_dir:
      params_dir = os.path.dirname(optimisation.params_file)
      results_dir = os.path.join(params_dir, "results")
    results_dir = utils.get_new_directory(results_dir)
  
    best_parameters_fname = os.path.join(results_dir, "best_params")
    best_parameters_file = open(best_parameters_fname, "w") 
    for param in optimisation.parameters:
      value = self.best_citizen.dictionary[param.name]
      line = param.name + ": " + str(value)
      print (line)
      best_parameters_file.write(line)
      best_parameters_file.write("\n")

    best_parameters_file.close()

    best_cost_fname = os.path.join(results_dir, "best_cost")
    best_cost_file = open(best_cost_fname, "w")
    best_cost_file.write(str(self.best_cost))
    best_cost_file.close()

    self.print_best_citizen_results(results_dir)
 def bundle_result(self, configuration, results_directory):
   """A simple function to bundle the results into the results
      directory."""
   if not results_directory:
     results_directory = utils.get_new_directory("results")
   shutil.copy2(self.results_file, results_directory)
   optimisation = configuration.optimisation
   shutil.copy2(optimisation.params_file, results_directory)
   # These are untested since I updated optimisation to hold
   # multiple model_datas rather than a single model file and
   # gold standard file.
   for model_data in optimisation.model_datas:
     shutil.copy2(model_data.model_file, results_directory)
     shutil.copy2(model_data.gold_standard_file, results_directory)
   print ("Find the results in: " + results_directory)