| index↑ |
| index↑ |
begin with random population
repeat
selection
crossover
mutation
==> new population
until fitness of best individual is optimized
begin with random population
repeat
selection
crossover
mutation
==> new population
until fitness of best individual is optimized
begin with random population
repeat
selection
crossover
mutation
==> new population
until fitness of best individual is optimized
begin with random population
repeat
selection
crossover
mutation
==> new population
until fitness of best individual is optimized
parent pair x3 child pair 11101100 11111011 10111011 10101100
begin with random population
repeat
selection
crossover
mutation
==> new population
until fitness of best individual is optimized
main
{
input
{
L, // chromosome length
N, // population size // make this an even number for convenience
P, // randomly generated set of n chromosomes of length L
p_c, // crossover probability
p_m, // mutation probability
F // fitness function
}
max_fitness = maximum value of F(c) for c in P;
c_max = chromosome in P where maximum is achieved;
while (max_fitness < fitness_goal)
{
P1 = generate_new_population(P);
max_fitness = maximum value of F(c) for c in P1;
c_max = chromosome in P1 where maximum is achieved;
P = P1;
}
output
{
P,
c_max,
F(c_max)
}
}
generate_new_population(P)
{
for (i = 0; i < N/2; ++i)
{
choose two elements c1, c2 of P using roulette wheel sampling;
with probability p_c, crossover(c1,c2);
mutate (c1); mutate (c2);
insert c1 and c2 in P1;
}
return P1
}
crossover (&c1 &c2) // passed by reference
{
loc = random [0,L);
for (i = 0; i < loc; ++i)
c1[i]=c2[i];
for (i = loc; i < L; ++i)
c2[i] = c1[i];
}
mutate (&c) // passed by reference
{
for (i = 0; i < L; ++i)
with probability p_m flip c[i];
}
L = 8
N = 4
p_c = 0.6
p_m = 0.1
P = { 00000110 , 11101110 , 00100000 , 00110100 }
F(c) = number of '1'
P[0] F ROULETTE XC P[1] F ROULETTE XC P[2] F ROULETTE XC P[3] F
-------- - -------- -- -------- - -------- -- -------- - -------- -- -------- -
00000110 2 11101110 y3 11110100 5 11101110 y5 11101100 5 11110110 y6 11110110 6
11101110 6 00110100 00101110 4 11110100 11110110 6 11101110 11101110 6
00100000 1 11101110 n 11101110 6 11101110 y2 11101110 6 00101110 y4 00100110 3
00110100 3 00000110 00000110 2 00101110 00101110 4 11110110 11111110 7
ROULETTE XC P[5] F ROULETTE XC P[6] F ROULETTE XC P[7] F
-------- -- -------- - -------- -- -------- - -------- -- -------- -
11111110 y2 11110110 6 11111110 n 11111110 7 11111110 y3 11111110 7
11110110 11111110 7 11111110 11111110 7 11111110 11111110 7
11111110 n 11111110 7 11101110 y7 11111110 7 11111110 y7 11111110 7
11101110 11101110 6 11111110 11101110 6 11101110 11101110 6
Schema Theorem (Holland, 1975)
m(H, t + 1) >= m(H,t) [f(H)/F(P)] [1 - pc d(H)/(l - 1) - o(H)pm]
Standard Interpretation: The number of representatives of a schema in a population grows in proportion to the fitness of the schema. This interpretation has come into question in recent years. The theory of GA in particular and evolutionary computation in general is an active field of research.
Alphabet = {S,A,B,C,D,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p}
Chromosome = SXXXX XXXXX XXXXX XXXXX XXXXX ...
(X = any alphabet character) (spaces for visual convenience only)
Grammar Terminals (fixed):
a -> 0 0 b -> 0 0 c -> 0 0 d -> 0 0 e -> 0 1
0 0 0 1 1 0 1 1 0 0
f -> 0 1 g -> 0 1 h -> 0 1 i -> 1 0 j -> 1 0
1 0 0 1 1 1 0 0 0 1
k -> 1 0 l -> 1 0 m -> 1 1 n -> 1 1 o -> 1 1
1 0 1 1 0 0 0 1 1 0
p -> 1 1
1 1
Example non-terminals (variable):
S -> A B A -> c a B -> a a C -> f g D -> c a
C D f a a a o k p c
represented by chromosome SABCDAcafaBaaaaCfgokDcapc
Example chromosome SABCD Aaaca Baaaa Cokab Daaoa
decodes as follows:
S -> A B -> a a a a -> 0 0 0 0 0 0 0 0 = adjacency matrix
C D c a a a 0 0 0 0 0 0 0 0
o k a a 0 0 0 0 0 0 0 0
a b o a 1 0 0 0 0 0 0 0
1 1 1 0 0 0 0 0
1 0 1 0 0 0 0 0
0 0 0 0 1 1 0 0
0 0 0 1 0 1 0 0
Need ad hoc rules such as:
| index↑ |