Selection and Recombination
Download
Report
Transcript Selection and Recombination
Tutorial 2
Temi avanzati di Intelligenza Artificiale - Lecture 6
Prof. Vincenzo Cutello
Department of Mathematics and Computer Science
University of Catania
Binary Representation of Real Values
When designing a representation, try to ensure that:
1. Your complete search space is covered
2. Nothing outside your search space is covered
3. All areas of your search space are covered with equal density (no bias)
(In order of importance)
Tutorial 2 - Lecture 6
2
Simple code to transform from binary to Real (-10.0..10.0)
wordLength = genotype.size() / 2;
xMax = (1 << wordLength) - 1;
yMax = (1 << wordLength) - 1;
for (int i=0; i< wordLength; i++) {
xRaw = (xRaw <<1) + (genotype.getBinary(i) ? 1 : 0);
}
for (int i= wordLength; i< genotype.size(); i++) {
yRaw = (yRaw <<1) + (genotype.getBinary(i) ? 1 : 0);
}
x = (-10.0 + 20.0 * ((double) xRaw) / xMax);
y = (-10.0 + 20.0 * ((double) yRaw) / yMax);
Tutorial 2 - Lecture 6
3
Problems with Binary Encoding
1. Hamming Cliffs
Some far points are easier to reach than some
close points
Improvement: Hamming Code
Hamming Distance is Important
Neighbours always have hamming distance one
But: Still not preference for local changes
Tutorial 2 - Lecture 6
4
wordLength = genotype.size() / 2;
xMax = (1 << wordLength) - 1;
yMax = (1 << wordLength) - 1;
invert = false;
for (int i=0; i< wordLength; i++) {
invert = invert ^ genotype.getBinary (i);
xRaw = (xRaw << 1) + (invert ? 1 : 0);
}
invert = false;
for (int i= wordLength; i< genotype.size(); i++) {
invert = invert ^ genotype.getBinary (i);
yRaw = (yRaw << 1) + (invert ? 1 : 0);
}
x = (-10.0 + 20.0 * ((double) xRaw) / xMax);
y = (-10.0 + 20.0 * ((double) yRaw) / yMax);
Tutorial 2 - Lecture 6
5
Problems with Binary Encoding
2. What Bit-length ?
Too short...
.. or too long
Tutorial 2 - Lecture 6
6
Problems with Binary Encoding
Bit-Mutation Probability
Single Mutation...
... or many-bit mutation
Tutorial 2 - Lecture 6
7
Real-valued Representation
Gaussian or Cauchy Mutation
Different distributions
Very much depens on scaling factor
Tutorial 2 - Lecture 6
8
Implementing Gaussian and Cauchy
Mutation
Gaussian distributed random number
Cauchy distributed random number
In Java: see code below.
In C, C++ use GSL, or code below.
Other distributions
In Java: mean + deviation * rng.nextGaussian()), or code below.
In C, C++ use GSL, or code below.
See references
References
Gnu Scientific Library (GSL), http://www.gnu.org/software/gsl/gsl.html
Non-Uniform Random Variate Generation L. Devroye, Springer Verlag, 1986
Computer Generation of Statistical Distributions Richard Saucier,
http://ftp.arl.mil/random/
Tutorial 2 - Lecture 6
9
Implementing Gaussian and Cauchy Mutation
Code Examples
}
double Gaussian (double stdev, double median) {
assert( stdev > 0. );
double u,v,x;
do {
u = 2.0 * rng.nextDouble() - 1.0;
v = 2.0 * rng.nextDouble() - 1.0;
x = u * u + v * v;
}
while ( x >= 1.0 );
return median + stdev * u * sqrt( -2. * log( x ) / x );
double Cauchy (double formFactor, double median) {
assert( formFactor > 0. );
double u, v;
do {
u = 2.0 * rng.nextDouble() - 1.0;
v = 2.0 * rng.nextDouble() - 1.0; }
while (u*u+v*v>1.0 || (u==0.0&&v==0.0));
if (u!=0)
return (median + formFactor * (v/u));
else
return(median); }
Tutorial 2 - Lecture 6
10
Exercise Sheet
Goal:
Goal of this exercise is to get experience with real-valued based representations and
self-adpatation in EC.
Task
Write an EA (possibly reusing bits from the previous tutorial), that finds the optimum
in one of the test functions shown in last lecture. Use a real-valued representation, with
gaussian or cauchy mutation, and self-adaptive mutation parameter. For test functions,
use the generalized sphere function of order 4:
4
f1 xi2
i 1
, and f8 from last lecture notes.
Hints
Each individual in the population will need two genotypes: one for the actual value,
and one for the strategy parameter. You will need to mutate both, using the contents of
the second genotype to control the mutation of the first.
Read Evolutionary Programming made Faster
Question
What happens if you do not use a minimum value for the strategy parameter ?
For most global optimisation problems, the ranges of variables are usually given (e.g.,
-10.0 < xi< 10.0). What do you do if a random mutation takes an offspring outside the
range ?
Tutorial 2 - Lecture 6
11