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))