Example #1
0
    def configurar_OMOPSO(self):


        algorithm = OMOPSO(
                problem=self.problema,
                swarm_size=self.maxima_poblacion,
                epsilon=0.0075,
                uniform_mutation=UniformMutation(probability=self.probabilidad, perturbation=0.5),
                non_uniform_mutation=NonUniformMutation(probability=self.probabilidad, perturbation=0.5),
                leaders=CrowdingDistanceArchive(100),
                termination_criterion=StoppingByEvaluations(max_evaluations=self.evaluaciones))
        return algorithm
if __name__ == '__main__':
    problem = ZDT1Modified()
    problem.reference_front = read_solutions(
        filename='../../resources/reference_front/{}.pf'.format(
            problem.get_name()))
    mutation_probability = 1.0 / problem.number_of_variables

    max_evaluations = 100
    swarm_size = 10
    algorithm = OMOPSO(
        problem=problem,
        swarm_size=swarm_size,
        epsilon=0.0075,
        uniform_mutation=UniformMutation(probability=mutation_probability,
                                         perturbation=0.5),
        non_uniform_mutation=NonUniformMutation(
            mutation_probability,
            perturbation=0.5,
            max_iterations=max_evaluations / swarm_size),
        leaders=CrowdingDistanceArchive(10),
        termination_criterion=StoppingByEvaluations(max=max_evaluations),
        swarm_evaluator=SparkEvaluator(),
    )

    algorithm.run()
    front = algorithm.get_result()

    # Save results to file
    print_function_values_to_file(
        front, 'FUN.' + algorithm.get_name() + "." + problem.get_name())
    print_variables_to_file(
        front, 'VAR.' + algorithm.get_name() + "." + problem.get_name())
Example #3
0
    def configurar_algoritmo(self,
                             hora_show: datetime,
                             hora_minima: datetime = datetime.time(0, 0),
                             algoritmo: str = 'MOGA',
                             mutation_probability: float = 0.25,
                             max_evaluations: int = 500,
                             population: int = 100):
        hora_minima, hora_show = self.restricciones_hora(
            hora_minima, hora_show)
        if (hora_minima == 0):
            hora_minima = hora_show - 180
        restricciones_baja = list([hora_minima, -100, -100, 0, 0])
        restricciones_alta = list([hora_show, 0, 0, 100, 100])

        self.problem = HVAC(lower_bound=restricciones_baja,
                            upper_bound=restricciones_alta,
                            number_of_configurations=3)

        print("algoritmo: ", algoritmo)
        if algoritmo == 'MOGA':
            algorithm = MOGA(problem=self.problem,
                             population_size=population,
                             offspring_population_size=population,
                             mutation=IntegerPolynomialMutationD(
                                 probability=mutation_probability,
                                 distribution_index=20),
                             crossover=SBXCrossoverD(
                                 probability=mutation_probability,
                                 distribution_index=20),
                             termination_criterion=StoppingByEvaluations(
                                 max=max_evaluations),
                             dominance_comparator=DominanceComparator())

        elif algoritmo == "NSGAII":
            algorithm = NSGAII(problem=self.problem,
                               population_size=population,
                               offspring_population_size=population,
                               mutation=IntegerPolynomialMutationD(
                                   probability=mutation_probability,
                                   distribution_index=20),
                               crossover=SBXCrossoverD(
                                   probability=mutation_probability,
                                   distribution_index=20),
                               termination_criterion=StoppingByEvaluations(
                                   max=max_evaluations),
                               dominance_comparator=DominanceComparator())

        elif algoritmo == 'OMOPSO':
            algorithm = OMOPSO(problem=self.problem,
                               swarm_size=population,
                               epsilon=0.0075,
                               uniform_mutation=UniformMutation(
                                   probability=mutation_probability,
                                   perturbation=0.5),
                               non_uniform_mutation=NonUniformMutation(
                                   probability=mutation_probability,
                                   perturbation=0.5),
                               leaders=CrowdingDistanceArchive(100),
                               termination_criterion=StoppingByEvaluations(
                                   max=max_evaluations))

        elif algoritmo == 'SMPSO':
            algorithm = SMPSO(problem=self.problem,
                              swarm_size=population,
                              mutation=IntegerPolynomialMutation(
                                  probability=mutation_probability,
                                  distribution_index=20),
                              leaders=CrowdingDistanceArchive(100),
                              termination_criterion=StoppingByEvaluations(
                                  max=max_evaluations))

        elif algoritmo == 'SPEA2':
            algorithm = SPEA2(problem=self.problem,
                              population_size=population,
                              offspring_population_size=population,
                              mutation=IntegerPolynomialMutationD(
                                  probability=mutation_probability,
                                  distribution_index=20),
                              crossover=SBXCrossoverD(
                                  probability=mutation_probability,
                                  distribution_index=20),
                              termination_criterion=StoppingByEvaluations(
                                  max=max_evaluations),
                              dominance_comparator=DominanceComparator())

        else:
            print("Algoritmo no vĂ¡lido. Creando MOGA por defecto...")
            algorithm = MOGA(problem=self.problem,
                             population_size=population,
                             offspring_population_size=population,
                             mutation=IntegerPolynomialMutationD(
                                 probability=mutation_probability,
                                 distribution_index=20),
                             crossover=SBXCrossoverD(
                                 probability=mutation_probability,
                                 distribution_index=20),
                             termination_criterion=StoppingByEvaluations(
                                 max=max_evaluations),
                             dominance_comparator=DominanceComparator())
        self.algoritmo = algorithm
        self.algoritmo.observable.register(observer=ProgressBarObserver(
            max=max_evaluations))

        return algorithm
Example #4
0
from jmetal.util.solution import read_solutions
from jmetal.util.termination_criterion import StoppingByEvaluations

if __name__ == '__main__':
    problem = ZDT1()
    problem.reference_front = read_solutions(filename='resources/reference_front/ZDT1.pf')

    mutation_probability = 1.0 / problem.number_of_variables
    max_evaluations = 25000
    swarm_size = 100

    algorithm = OMOPSO(
        problem=problem,
        swarm_size=swarm_size,
        epsilon=0.0075,
        uniform_mutation=UniformMutation(probability=mutation_probability, perturbation=0.5),
        non_uniform_mutation=NonUniformMutation(mutation_probability, perturbation=0.5,
                                                max_iterations=int(max_evaluations / swarm_size)),
        leaders=CrowdingDistanceArchive(100),
        termination_criterion=StoppingByEvaluations(max=max_evaluations)
    )

    algorithm.run()
    front = algorithm.get_result()

    # Save results to file
    print_function_values_to_file(front, 'FUN.' + algorithm.label)
    print_variables_to_file(front, 'VAR.'+ algorithm.label)

    print(f'Algorithm: ${algorithm.get_name()}')
    print(f'Problem: ${problem.get_name()}')
    print(f'Computing time: ${algorithm.total_computing_time}')
Example #5
0
from jmetal.util.solutions import read_solutions
from jmetal.util.termination_criterion import StoppingByEvaluations

if __name__ == '__main__':
    problem = ZDT1()
    problem.reference_front = read_solutions(filename='resources/reference_front/ZDT1.pf')

    mutation_probability = 1.0 / problem.number_of_variables
    max_evaluations = 25000
    swarm_size = 100

    algorithm = OMOPSO(
        problem=problem,
        swarm_size=swarm_size,
        epsilon=0.0075,
        uniform_mutation=UniformMutation(probability=mutation_probability, perturbation=0.5),
        non_uniform_mutation=NonUniformMutation(mutation_probability, perturbation=0.5,
                                                max_iterations=int(max_evaluations / swarm_size)),
        leaders=CrowdingDistanceArchive(100),
        termination_criterion=StoppingByEvaluations(max=max_evaluations)
    )

    algorithm.observable.register(observer=ProgressBarObserver(max=max_evaluations))
    algorithm.observable.register(observer=VisualizerObserver(reference_front=problem.reference_front))

    algorithm.run()
    front = algorithm.get_result()

    # Plot front
    plot_front = Plot(plot_title='Pareto front approximation', reference_front=problem.reference_front, axis_labels=problem.obj_labels)
    plot_front.plot(front, label=algorithm.label, filename=algorithm.get_name())