Multiobjective algorithms

NSGA-II

class jmetal.algorithm.multiobjective.nsgaii.NSGAII(problem: jmetal.core.problem.Problem[S], population_size: int, max_evaluations: int, mutation: jmetal.core.operator.Mutation[S], crossover: jmetal.core.operator.Crossover[S, S], selection: jmetal.core.operator.Selection[typing.List[S], S], evaluator: jmetal.component.evaluator.Evaluator[S] = <jmetal.component.evaluator.SequentialEvaluator object>)

Bases: jmetal.algorithm.singleobjective.evolutionaryalgorithm.GenerationalGeneticAlgorithm

NSGA-II implementation as described in

  • K. Deb, A. Pratap, S. Agarwal and T. Meyarivan, “A fast and elitist multiobjective genetic algorithm: NSGA-II,” in IEEE Transactions on Evolutionary Computation, vol. 6, no. 2, pp. 182-197, Apr 2002. doi: 10.1109/4235.996017

NSGA-II is a genetic algorithm (GA), i.e. it belongs to the evolutionary algorithms (EAs) family. The implementation of NSGA-II provided in jMetalPy follows the evolutionary algorithm template described in the algorithm module (jmetal.core.algorithm).

Parameters:
  • problem – The problem to solve.
  • population_size – Size of the population.
  • max_evaluations – Maximum number of evaluations/iterations.
  • mutation – Mutation operator (see jmetal.operator.mutation).
  • crossover – Crossover operator (see jmetal.operator.crossover).
  • selection – Selection operator (see jmetal.operator.selection).
  • evaluator – An evaluator object to evaluate the individuals of the population.
get_name() → str
get_result()
replacement(population: typing.List[S], offspring_population: typing.List[S]) → typing.List[typing.List[S]]

This method joins the current and offspring populations to produce the population of the next generation by applying the ranking and crowding distance selection.

Parameters:
  • population – Parent population.
  • offspring_population – Offspring population.
Returns:

New population after ranking and crowding distance selection is applied.

jmetal.algorithm.multiobjective.nsgaii.R

SMPSO

jmetal.algorithm.multiobjective.smpso.R = ~R
class jmetal.algorithm.multiobjective.smpso.SMPSO(problem: jmetal.core.problem.FloatProblem, swarm_size: int, max_evaluations: int, mutation: jmetal.core.operator.Mutation[jmetal.core.solution.FloatSolution], leaders: jmetal.component.archive.BoundedArchive[jmetal.core.solution.FloatSolution], evaluator: jmetal.component.evaluator.Evaluator[jmetal.core.solution.FloatSolution] = <jmetal.component.evaluator.SequentialEvaluator object>)

Bases: jmetal.core.algorithm.ParticleSwarmOptimization

This class implements the SMPSO algorithm as described in

The implementation of SMPSO provided in jMetalPy follows the algorithm template described in the algorithm templates section of the documentation.

Parameters:
  • problem – The problem to solve.
  • swarm_size – Swarm size.
  • max_evaluations – Maximum number of evaluations.
  • mutation – Mutation operator.
  • leaders – Archive for leaders.
  • evaluator – An evaluator object to evaluate the solutions in the population.
create_initial_swarm() → typing.List[jmetal.core.solution.FloatSolution]
evaluate_swarm(swarm: typing.List[jmetal.core.solution.FloatSolution]) → typing.List[jmetal.core.solution.FloatSolution]
get_result() → typing.List[jmetal.core.solution.FloatSolution]
init_progress() → None
initialize_global_best(swarm: typing.List[jmetal.core.solution.FloatSolution]) → None
initialize_particle_best(swarm: typing.List[jmetal.core.solution.FloatSolution]) → None
initialize_velocity(swarm: typing.List[jmetal.core.solution.FloatSolution]) → None
is_stopping_condition_reached() → bool
perturbation(swarm: typing.List[jmetal.core.solution.FloatSolution]) → None
select_global_best() → jmetal.core.solution.FloatSolution
update_global_best(swarm: typing.List[jmetal.core.solution.FloatSolution]) → None
update_particle_best(swarm: typing.List[jmetal.core.solution.FloatSolution]) → None
update_position(swarm: typing.List[jmetal.core.solution.FloatSolution]) → None
update_progress() → None
update_velocity(swarm: typing.List[jmetal.core.solution.FloatSolution]) → None
class jmetal.algorithm.multiobjective.smpso.SMPSORP(problem: jmetal.core.problem.FloatProblem, swarm_size: int, max_evaluations: int, mutation: jmetal.core.operator.Mutation[jmetal.core.solution.FloatSolution], reference_points: typing.List[typing.List[float]], leaders: typing.List[jmetal.component.archive.BoundedArchive[jmetal.core.solution.FloatSolution]], evaluator: jmetal.component.evaluator.Evaluator[jmetal.core.solution.FloatSolution] = <jmetal.component.evaluator.SequentialEvaluator object>)

Bases: jmetal.algorithm.multiobjective.smpso.SMPSO

This class implements the SMPSORP algorithm.

Parameters:
  • problem – The problem to solve.
  • swarm_size
  • max_evaluations
  • mutation
  • leaders – List of bounded archives.
  • evaluator – An evaluator object to evaluate the solutions in the population.
get_result() → typing.List[jmetal.core.solution.FloatSolution]
init_progress() → None
initialize_global_best(swarm: typing.List[jmetal.core.solution.FloatSolution]) → None
select_global_best() → jmetal.core.solution.FloatSolution
update_global_best(swarm: typing.List[jmetal.core.solution.FloatSolution]) → None
update_leaders_density_estimator()
update_progress() → None

Random Search

class jmetal.algorithm.multiobjective.randomSearch.RandomSearch(problem: jmetal.core.problem.Problem[S], max_evaluations: int = 25000)

Bases: typing.Generic

static get_name() → str
get_result() → typing.List[S]
run() → None
jmetal.algorithm.multiobjective.randomSearch.S = ~S