Пример #1
0
def Main(algorithm, problem, pop_size, crossover_probability,
         mutation_probability, n_partitions, n_gen, seed):

    # Instancia el problema
    problem = Problems.get(problem)

    reference_directions = get_reference_directions("das-dennis",
                                                    problem.n_obj,
                                                    n_partitions=n_partitions)

    # Instancia el algoritmo
    algorithm = NSGA_II.Get_Algorithm_Instance(
        pop_size, crossover_probability, mutation_probability
    ) if (algorithm == Algorithms.NSGAII) else NSGA_III.Get_Algorithm_Instance(
        reference_directions, pop_size, crossover_probability,
        mutation_probability) if (algorithm == Algorithms.NSGAIII) else None

    # Instancia el optimizador
    optimizer = Optimizer(problem, algorithm)

    optimization_result = optimizer.Minimize(n_gen, seed)
    objective_spaces_values = optimization_result.F

    pareto_front = problem.pareto_front(reference_directions) if type(
        problem).__name__ == "DTLZ1" else problem.pareto_front()

    # Instancia los indicadores de rendimiento (Distancia Generacional Invertida (IGD) / Distancia Generacional Invertida Plus (IGD+))
    IGD = get_performance_indicator("igd", pareto_front)
    #IGD_plus = get_performance_indicator("igd+", pareto_front)

    # Imprime las métricas obtenidas por el conjunto de soluciones resultantes de la optimización multimodal/multiobjetivo
    print("IGD:", IGD.calc(objective_spaces_values))