0% found this document useful (0 votes)
21 views

Population-Based Incremental Learning

Population-based incremental learning (PBIL) is a type of genetic algorithm where the genotype of an entire population is evolved as a probability vector rather than individual members. The algorithm represents genes as real values between 0 and 1 indicating the probability of an allele appearing in that gene. It generates a population from the probability vector, evaluates fitness, updates the vector based on the fittest individual, mutates, and repeats. Source code is provided in Java as an example implementation.

Uploaded by

emma698
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
21 views

Population-Based Incremental Learning

Population-based incremental learning (PBIL) is a type of genetic algorithm where the genotype of an entire population is evolved as a probability vector rather than individual members. The algorithm represents genes as real values between 0 and 1 indicating the probability of an allele appearing in that gene. It generates a population from the probability vector, evaluates fitness, updates the vector based on the fittest individual, mutates, and repeats. Source code is provided in Java as an example implementation.

Uploaded by

emma698
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

Population-based incremental learning

In computer science and machine learning, population-based incremental learning (PBIL) is an


optimization algorithm, and an estimation of distribution algorithm. This is a type of genetic algorithm
where the genotype of an entire population (probability vector) is evolved rather than individual
members.[1] The algorithm is proposed by Shumeet Baluja in 1994. The algorithm is simpler than a
standard genetic algorithm, and in many cases leads to better results than a standard genetic
algorithm.[2][3][4]

Algorithm
In PBIL, genes are represented as real values in the range [0,1], indicating the probability that any particular
allele appears in that gene.

The PBIL algorithm is as follows:

1. A population is generated from the probability vector.


2. The fitness of each member is evaluated and ranked.
3. Update population genotype (probability vector) based on fittest individual.
4. Mutate.
5. Repeat steps 1–4

Source code
This is a part of source code implemented in Java. In the paper, learnRate = 0.1, negLearnRate = 0.075,
mutProb = 0.02, and mutShift = 0.05 is used. N = 100 and ITER_COUNT = 1000 is enough for a small
problem.

public void optimize() {


final int totalBits = getTotalBits();
final double[] probVec = new double[totalBits];
Arrays.fill(probVec, 0.5);
bestCost = POSITIVE_INFINITY;

for (int i = 0; i < ITER_COUNT; i++) {


// Creates N genes
final boolean[][] genes = new [N][totalBits];
for (boolean[] gene : genes) {
for (int k = 0; k < gene.length; k++) {
if (rand_nextDouble() < probVec[k])
gene[k] = true;
}
}

// Calculate costs
final double[] costs = new double[N];
for (int j = 0; j < N; j++) {
costs[j] = costFunc.cost(toRealVec(genes[j], domains));
}

// Find min and max cost genes


boolean[] minGene = null, maxGene = null;
double minCost = POSITIVE_INFINITY, maxCost = NEGATIVE_INFINITY;
for (int j = 0; j < N; j++) {
double cost = costs[j];
if (minCost > cost) {
minCost = cost;
minGene = genes[j];
}
if (maxCost < cost) {
maxCost = cost;
maxGene = genes[j];
}
}

// Compare with the best cost gene


if (bestCost > minCost) {
bestCost = minCost;
bestGene = minGene;
}

// Update the probability vector with max and min cost genes
for (int j = 0; j < totalBits; j++) {
if (minGene[j] == maxGene[j]) {
probVec[j] = probVec[j] * (1d - learnRate) +
(minGene[j] ? 1d : 0d) * learnRate;
} else {
final double learnRate2 = learnRate + negLearnRate;
probVec[j] = probVec[j] * (1d - learnRate2) +
(minGene[j] ? 1d : 0d) * learnRate2;
}
}

// Mutation
for (int j = 0; j < totalBits; j++) {
if (rand.nextDouble() < mutProb) {
probVec[j] = probVec[j] * (1d - mutShift) +
(rand.nextBoolean() ? 1d : 0d) * mutShift;
}
}
}
}

See also
Estimation of distribution algorithm (EDA)
Learning Classifier System (LCS)

References
1. Karray, Fakhreddine O.; de Silva, Clarence (2004), Soft computing and intelligent systems
design, Addison Wesley, ISBN 0-321-11617-8
2. Baluja, Shumeet (1994), "Population-Based Incremental Learning: A Method for Integrating
Genetic Search Based Function Optimization and Competitive Learning", Technical Report,
Pittsburgh, PA: Carnegie Mellon University, no. CMU–CS–94–163,
CiteSeerX 10.1.1.61.8554 (https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.61.85
54)
3. Baluja, Shumeet; Caruana, Rich (1995), Removing the Genetics from the Standard Genetic
Algorithm, Morgan Kaufmann Publishers, pp. 38–46, CiteSeerX 10.1.1.44.5424 (https://cites
eerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.44.5424)
4. Baluja, Shumeet (1995), An Empirical Comparison of Seven Iterative and Evolutionary
Function Optimization Heuristics, CiteSeerX 10.1.1.43.1108 (https://citeseerx.ist.psu.edu/vie
wdoc/summary?doi=10.1.1.43.1108)
Retrieved from "https://en.wikipedia.org/w/index.php?title=Population-based_incremental_learning&oldid=991682302"

You might also like