moo-1.0: Genetic algorithm library

Safe HaskellNone

Moo.GeneticAlgorithm.Multiobjective

Contents

Synopsis

Types

type MultiPhenotype a = (Genome a, [Objective])Source

An individual with all objective functions evaluated.

Evaluation

evalAllObjectivesSource

Arguments

:: forall fn gt a . (ObjectiveFunction fn a, GenomeState gt a) 
=> MultiObjectiveProblem fn

a list of problems

-> [gt]

a population of genomes

-> [MultiPhenotype a] 

Calculate multiple objective per every genome in the population.

NSGA-II: A non-dominated sorting genetic algorithm

stepNSGA2Source

Arguments

:: forall fn a . ObjectiveFunction fn a 
=> MultiObjectiveProblem fn

a list of objective functions

-> SelectionOp a 
-> CrossoverOp a 
-> MutationOp a 
-> StepGA Rand a 

A single step of the NSGA-II algorithm (Non-Dominated Sorting Genetic Algorithm for Multi-Objective Optimization).

The next population is selected from a common pool of parents and their children minimizing the non-domination rank and maximizing the crowding distance within the same rank. The first generation of children is produced without taking crowding into account. Every solution is assigned a single objective value which is its sequence number after sorting with the crowded comparison operator. The smaller value corresponds to solutions which are not worse the one with the bigger value. Use evalAllObjectives to restore individual objective values.

Reference: Deb, K., Pratap, A., Agarwal, S., & Meyarivan, T. A. M. T. (2002). A fast and elitist multiobjective genetic algorithm: NSGA-II. Evolutionary Computation, IEEE Transactions on, 6(2), 182-197.

Deb et al. used a binary tournament selection, base on crowded comparison operator. To achieve the same effect, use stepNSGA2bt (or stepNSGA2 with tournamentSelect Minimizing 2 n, where n is the size of the population).

stepNSGA2btSource

Arguments

:: forall fn a . ObjectiveFunction fn a 
=> MultiObjectiveProblem fn

a list of objective functions

-> CrossoverOp a 
-> MutationOp a 
-> StepGA Rand a 

A single step of NSGA-II algorithm with binary tournament selection. See also stepNSGA2.

stepConstrainedNSGA2Source

Arguments

:: forall fn a b c . (ObjectiveFunction fn a, Real b, Real c) 
=> [Constraint a b]

constraints

-> ([Constraint a b] -> Genome a -> c)

non-negative degree of violation

-> MultiObjectiveProblem fn

a list of objective functions

-> SelectionOp a 
-> CrossoverOp a 
-> MutationOp a 
-> StepGA Rand a 

A single step of the constrained NSGA-II algorithm, which uses a constraint-domination rule:

“A solution i is said to constrain-dominate a solution j, if any of the following is true: 1) Solution i is feasible and j is not. 2) Solutions i and j are both infeasible but solution i has a smaller overall constraint violation. 3) Solutions i and j are feasible, and solution i dominates solution j.”

Reference: (Deb, 2002).

stepConstrainedNSGA2btSource

Arguments

:: forall fn a b c . (ObjectiveFunction fn a, Real b, Real c) 
=> [Constraint a b]

constraints

-> ([Constraint a b] -> Genome a -> c)

non-negative degree of violation

-> MultiObjectiveProblem fn

a list of objective functions

-> CrossoverOp a 
-> MutationOp a 
-> StepGA Rand a 

A single step of the constrained NSGA-II algorithm with binary tournament selection. See also stepConstrainedNSGA2.