def get_result(self) -> R: ranking = FastNonDominatedRanking(self.dominance_comparator) ranking.compute_ranking(self.solutions) try: non_dominated = ranking.get_nondominated() except IndexError: non_dominated = None return non_dominated if non_dominated else self.solutions
no_evaluations = Paras.N_GEN*Paras.N_IND algorithm = NSGAII_MEDA( problem=problem, population_size=Paras.N_IND, offspring_population_size=Paras.N_IND, mutation=IntegerPolynomialMutation(probability=1.0 / problem.number_of_variables, distribution_index=20), crossover=IntegerSBXCrossover(probability=0.8, distribution_index=20), termination_criterion=StoppingByEvaluations(max_evaluations=no_evaluations) ) progress_bar = ProgressBarObserver(max=no_evaluations) algorithm.observable.register(progress_bar) algorithm.run() solutions = algorithm.get_result() non_dominated_ranking = FastNonDominatedRanking(algorithm.dominance_comparator) non_dominated_ranking.compute_ranking(solutions) non_dominated_sols = non_dominated_ranking.get_nondominated() plot_front = Plot(title='Pareto front approximation', axis_labels=['Dis', 'Mani']) plot_front.plot(non_dominated_sols, label='NSGAII-ZDT1') list_labels = [] for sol in non_dominated_sols: list_labels.append(sol.variables) dis = sol.objectives[0] man = sol.objectives[1] # train_acc = sol.objectives[2] Yt_sol = sol.variables acc = (np.sum(Yt_sol == problem.Yt)+0.0)/len(Yt_sol) print("Dis: %.5f, man: %.5f, acc: %.5f" %(dis, man, acc)) # print("Dis: %.5f, man: %.5f, train acc: %.5f, acc: %.5f" % (dis, man, train_acc ,acc)) vote_label = Helpers.voting(list_labels)