Skip to content

Population Diversity

elinoreroebber edited this page Apr 25, 2024 · 1 revision

Population diversity is the key factor controlling convergence of differential evolution. A population that is insufficiently diverse is likely to prematurely converge to a less-favourable minimum. On the other hand, an initially diverse population that finds multiple local minima can search for new minima on scales similar to the total extent of the population or to the extent of the population within a local minimum. This allows for a wider search, basin-to-basin transfer, as well as convergence within each of the local minima.

Since population diversity is important, Diver monitors it in multiple ways, as well as allowing for different initialisation strategies.

Duplicate vectors

Since new vectors are proposed using vector addition of three randomly-selected members of the population, it is occasionally possible to create two identical vectors. This decreases the population diversity. Worse, duplicate vectors can ‘infect’ the rest of the population: whenever a pair of duplicates is chosen to create the difference vector during mutation, the resulting donor vector will match the third vector chosen, possibly creating another duplicate. In best/ mutation, such a process can rapidly lead to an entire population matching the ‘best’ vector.

Diver includes a facility for weeding out duplicate vectors as soon as they arise to prevent these problems. When removeDuplicates = true, the population is examined after selection. If a set of duplicates is discovered, one is modified, according to the following rules:

  1. If one vector was inherited from the previous generation, and the other is new, the new vector is reverted to its previous value.
  2. If both vectors are new, the one that improved the most is kept and the other is reverted to its previous value.
  3. The appearance of duplicate vectors in the initial population, or inheritance of multiple copies of the same vector from a previous generation, are strong indications of coding errors. In these cases, a warning is printed and one vector is re-initialised to a random point in the parameter space.

Duplicate removal is disabled by default for current/ mutation (current = true), jDE (jDE = true), and λjDE (lambdajDE = true), as the presence of duplicates in the results of these algorithms would be surprising. It is enabled by default for all other settings, i.e. rand/, best/, or rand-to-best/ mutation, as these forms of mutation are susceptible to duplicate creation. If Diver is compiled with MPI support, duplicate removal is enabled by default regardless of any other settings, and is recommended as a useful diagnostic for insuring against MPI library issues.

Convergence Criteria

Initialisation Criteria

Discarding Unfit Points.

Clone this wiki locally