def post_processing(self):
        self.hj.pid_lb_diff_pct, self.hj.pid_ub_diff_pct = Stats.bounds_compare(self.ilb, self.iub, self.hj.gbest.fitness)

        fitness, _ = self.evaluator(self.hj.gbest.candidate)  # set machine assigned jobs to best permutation
        filename = self.hj.results_path + '/' + self.hj.pid + ' ' + self.hj.bid + ' ' + self.hj.oid + ' gbest Gantt chart'
        self.vis.solution_representation_gantt(fitness, self.machines, self.jobs, filename)

        lg.msg(logging.INFO, 'Machine times for best fitness {}'.format(fitness))
        self.machines_times(self.hj.gbest.candidate)

        lg.msg(logging.INFO, 'Job times for best fitness of {} with permutation {}'.format(fitness, self.hj.gbest.candidate))
        self.jobs_times(self.hj.gbest.candidate)