Beispiel #1
0
    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
Beispiel #2
0
    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)