def construct(self, hyperparameters: Mapping, scenario: Mapping,
                  warm_startup_info: Mapping) -> None:
        problem_init_params = HashableDict(
            scenario['problem_initialization_parameters'])
        problem = self._get_problem(scenario['Problem'], problem_init_params)
        self.load_initial_solutions(warm_startup_info, problem)

        from jmetal.operator.mutation import PermutationSwapMutation

        termination_criterion_cls = self._get_class_from_module(
            name=scenario["Budget"]["Type"], module=termination)
        termination_criterion = termination_criterion_cls(
            scenario["Budget"]["Amount"])

        mh_name = hyperparameters["low level heuristic"].split(".")[1]
        if mh_name == "GeneticAlgorithm":
            from jmetal.algorithm.singleobjective.genetic_algorithm import (
                GeneticAlgorithm)
            from jmetal.operator.crossover import CXCrossover
            from jmetal.operator.selection import BinaryTournamentSelection
            self._llh_algorithm = GeneticAlgorithm(
                problem=problem,
                population_size=100,
                offspring_population_size=100,
                mutation=PermutationSwapMutation(0.5),
                crossover=CXCrossover(0.5),
                selection=BinaryTournamentSelection(),
                termination_criterion=termination_criterion,
                population_generator=self._solution_generator)

        elif mh_name == "SimulatedAnnealing":
            from jmetal.algorithm.singleobjective.simulated_annealing import (
                SimulatedAnnealing)
            self._llh_algorithm = SimulatedAnnealing(
                problem=problem,
                mutation=PermutationSwapMutation(0.5),
                termination_criterion=termination_criterion,
                solution_generator=self._solution_generator)

        elif mh_name == "EvolutionStrategy":
            from jmetal.algorithm.singleobjective.evolution_strategy import (
                EvolutionStrategy)
            self._llh_algorithm = EvolutionStrategy(
                problem=problem,
                mu=500,
                lambda_=500,
                elitist=False,
                mutation=PermutationSwapMutation(0.5),
                termination_criterion=termination_criterion,
                population_generator=self._solution_generator)
        else:
            self.logger.error(f"Wrong meta-heuristic name: {mh_name}")
from jmetal.util.density_estimator import CrowdingDistance
from jmetal.util.observer import PrintObjectivesObserver
from jmetal.util.ranking import FastNonDominatedRanking
from jmetal.util.solutions.comparator import MultiComparator
from jmetal.util.termination_criterion import StoppingByEvaluations

if __name__ == '__main__':
    problem = TSP(instance='../../resources/TSP_instances/kroA100.tsp')

    print('Cities: ', problem.number_of_variables)

    algorithm = GeneticAlgorithm(
        problem=problem,
        population_size=100,
        offspring_population_size=100,
        mutation=PermutationSwapMutation(1.0 / problem.number_of_variables),
        crossover=PMXCrossover(0.8),
        selection=BinaryTournamentSelection(
            MultiComparator([
                FastNonDominatedRanking.get_comparator(),
                CrowdingDistance.get_comparator()
            ])),
        termination_criterion=StoppingByEvaluations(max=2500000))

    algorithm.observable.register(observer=PrintObjectivesObserver(1000))

    algorithm.run()
    result = algorithm.get_result()

    print('Algorithm: {}'.format(algorithm.get_name()))
    print('Problem: {}'.format(problem.get_name()))
        available_time = vsc.get_available_time()
        metric.update_available_time(available_time)

        test_cases = vsc.get_testcases()
        IND_SIZE = len(test_cases)

        if (IND_SIZE > 1):
            # Run GA to find the best NAPFD in current commit
            problem = TCPCI(metric=metric, test_cases=test_cases,
                            number_of_variables=IND_SIZE)

            algorithm = GeneticAlgorithm(
                problem=problem,
                population_size=300,
                offspring_population_size=300,
                mutation=PermutationSwapMutation(0.01),
                crossover=PMXCrossover(0.9),
                selection=BinaryTournamentSelection(),
                termination_criterion=StoppingByEvaluations(max=60000)
            )

            # algorithm.observable.register(observer=PrintObjectivesObserver(1000))

            algorithm.run()
            result = algorithm.get_result()

            print(f"Commit: {t} - Fitness: {result.objectives[0]*-1} - Computing time: {algorithm.total_computing_time}")
        else:
            print(f"Commit: {t} - Fitness: {1}")
        # print('Algorithm: ' + algorithm.get_name())
        # print('Problem: ' + problem.get_name())
Beispiel #4
0
                                               k=self.number_of_variables)

        return new_solution

    def get_name(self):
        return 'MultiObjective TSP'


if __name__ == '__main__':
    problem = NSGA()
    max_evaluations = 20000
    algorithm = NSGAII(
        problem=problem,
        population_size=20,
        offspring_population_size=20,
        mutation=PermutationSwapMutation(probability=0.2),
        # crossover=PMXCrossover(probability=0.9),
        crossover=Order1Crossover(probability=0.9),
        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,
Beispiel #5
0
  def create_solution(self) -> PermutationSolution:
    new_solution = PermutationSolution(
      number_of_variables=self.number_of_variables,
      number_of_objectives=self.number_of_objectives
    )
    new_solution.variables = random.sample(range(self.number_of_variables), k=self.number_of_variables)

    return new_solution
  def get_name(self):
        return 'Symmetric TSP'
algorithm = GeneticAlgorithm(
  problem=TSP(),
  population_size=4,
  offspring_population_size=4,
  # To Get a Different Combination by swapping any two positions
  mutation=PermutationSwapMutation(1.0 / 4),
  # Partially Mapped Crossover
  # Basically, parent 1 donates a swath of genetic material and the
  # corresponding swath from the other parent is sprinkled about in the child. 
  # Once that is done, the remaining alleles are copied direct from parent 2.
  crossover=PMXCrossover(0.8),
  # Compare any two Selection and then select the fittest
  selection=BinaryTournamentSelection(
    MultiComparator(
      [FastNonDominatedRanking.get_comparator(),
      CrowdingDistance.get_comparator()]
    )
  ),
  termination_criterion=StoppingByEvaluations(max=250)
)
algorithm.observable.register(observer=PrintObjectivesObserver(10))