1

i'm writing a genetic algorithm that uses fitness sharing in tournament selection. in all the relevant literature that i found (Sareni for example) it is mentioned that the solution's own fitness (Fi) should be divided by the sum of its niche distances (Mi).

What I don't understand is, as we are optimizing multiple objectives each solution has more than one fitness. what is then its 'fitness' Fi? should I see it as the multiplication of all its fitness's ?

for example, in the code i'm writing (processing):

float sharedFitnessA = (a.f2*a.f3) / nicheCountA;

thanks

n

manlio
  • 18,345
  • 14
  • 76
  • 126
Noam Naveh
  • 133
  • 1
  • 3
  • 10

1 Answers1

1

For multi objective optimization the goal of fitness sharing (to distribute the population over a number of different peaks in the search space with each peak receiving a fraction of the population in proportion to the height of that peak) is often pursued in a different manner.

When two candidates are either both dominated or both non-dominated (so it's likely that they're in the same equivalence class) niche count Mi is used to choose the "best fit" candidate.

E.g.

Equivalence Class Sharing

(here maximizing along the x-axis and minimizing on the y-axis)

Candidates aren't dominated by the comparison set. From a Pareto point of view neither is preferred. Using Mi we choose Candidate2 (smallest niche count and thus the least number of individuals in its niche).

This is called Equivalence Class Sharing and it isn't based on fitness degradation (i.e. Fi / Mi), but anyway maintains diversity along the front.

For further details take a look at Multiobjective Optimization Using the Niched Pareto Genetic Algorithm by Jeffrey Horn and Nicholas Nafpliotis (it also contains some implementation details).

manlio
  • 18,345
  • 14
  • 76
  • 126