Document

advertisement
Biologically Inspired
Computation
Really finishing off EC
But first:
• Finishing off encodings
• Information about mandatory reading
• Information about CW2
E.g. encoding a timetable I
9:00
mon
tue
E4,
E5
E2
wed
thur
E3,
E7
11:00 E8
4, 5, 13, 1, 1, 7, 13, 2
2:00
E6
4:00 E1
Exam2 in 5th slot
Exam1 in 4th slot
Etc …
• Generate any string of 8 numbers between 1 and 16,
and we have a timetable!
• Fitness may be <clashes> + <consecs> + etc …
• Figure out an encoding, and a fitness function, and
you can try to evolve solutions.
E.g. encoding a timetable II
mon
9:00
tue
E4,
E5
wed
thur
E3,
E7
11:00 E8
4, 5, 13, 1, 1, 7, 13, 2
2:00
4:00
E6,
E2
E1
Etc …
Use the 13th clash-free slot for exam3
Use the 5th clash-free slot for exam2 (clashes with E4,E8)
Use the 4th clash-free slot for exam1
So, a common approach is to
build an encoding around an
algorithm that builds a solution
• Don’t encode a candidate solution directly
• … instead encode parameters/features for a
constructive algorithm that builds a
candidate solution
e.g.: bin-packing – given collection of items, pack
them into the fewest possible number of bins
e.g.: bin-packing – given collection of items, pack
them into the fewest possible number of bins
Engineering Constructive Algorithms
A typical constructive algorithm for bin-packing:
Put the items in a specific sequence (e.g. smallest to
largest)
Initialise solution
Repeat nitems times
choose next item, place it in first bin it fits
(create a new empty bin if necessary)
Indirect Encodings often involve using a constructive algorithm,
Example using ‘First-Fit Ascending’ (FFA)
constructive algorithm for bin-packing
FFA
First-fit Ascending
First-fit Ascending
First-fit Ascending
First-fit Ascending
First-fit Ascending
First-fit Ascending
Example using First-Fit Descending
First-fit Descending
First-Fit Descending
First-Fit Descending
First-Fit Descending
First-Fit Descending
First-Fit Descending
Notes:
• In other problems, FFA gets better results than FFD
• There are many other constructive heuristics for bin packing, e.g.
Using formulae that choose next item based on distribution of
unplaced item sizes and empty spaces ...
• There are constructive algorithms for most problems (e.g.
Timetabling, scheduling, etc ....)
• Often, ‘indirect encodings’ for EAs use constructive algorithms.
• Common approach: the encoding is permutation, and the solution
is built using the items in that order
• READ THE FALKENAUER PAPER TO SEE GOOD EA
ENCODING FOR BIN-PACKING
Encodings that use constructive algorithms
The indirect encoding for timetabling, a few slides ago, is an example.
The ‘underlying’ constructive algorithm is:
Line up the exams in order e1, e2, … eN
Repeat until all exams are scheduled:
take the next exam in the list, and put it in the first place it can go
without clashes
This provides only a single solution, the same every time we run it. This
may be very bad in terms of other factors, such as consecutive exams,
time allowed for marking, etc.
How did we modify it so that it could generate a big space of different
solutions?
Encodings that use constructive algorithms
Line up the exams in order e1, e2, … eN
Repeat until all exams are scheduled:
take the next exam in the list, and put it in the first place it can go
without clashes
Encodings that use constructive algorithms
Line up the exams in order e1, e2, … eN
Repeat until all exams are scheduled:
take the next exam in the list, and put it in the first place it can go
without clashes
Encodings that use constructive algorithms
Line up the exams in order e1, e2, … eN
Repeat until all exams are scheduled:
take the next exam in the list, and put it in the Nth place it can go
without clashes
The chromosome encodes each of the Ns. The original constructive
algorithm corresponds to running the above on the chromosome
“111111111….”.
We could also engineer the original constructive algorithm into an
encoding in a quite different way. How?
Encodings that use constructive algorithms
Line up the exams in order e1, e2, … eN
Repeat until all exams are scheduled:
take the next exam in the list, and put it in the first place it can go
without clashes
Encodings that use constructive algorithms
Randomly permute the exams e1, …, eN
Repeat until all exams are scheduled:
take the next exam in the list, and put it in the first place it can go
without clashes
This is a fine constructive algorithm, which will provide a different
solution depending on the permutation.
It is easily used as an encoding: the chromosome provides the
permutation.
Other well known constructive algorithms
• Prim’s algorithm for building the minimal
spanning tree (see an earlier lecture) is an
example.
• Djikstra’s shortest path algorithm is also an
example.
• In both of these cases, the optimal solution is
guaranteed to be found, since MST and SP are
easy problems.
• But usually we see constructive methods used to
give very fast `OK’ solutions to hard problems.
On engineering constructive methods
Some Constructive Heuristics are deterministic. I.e. they give
the same answer each time.
Some are stochastic – I.e. they may give a different solution
in different runs.
Usually, if we have a deterministic constructive method such
as FFD, we can engineer a stochastic version of it. E.g.
instead of choosing the next-lightest item in each step, we
might choose randomly between the lightest three unplaced
items.
Bin packing example direct encoding:
2, 3, 2, 3, 1 ....  item 1 is in bin 2, item 2
is in bin 3, item 3 is in bin 2, etc...
(often a bin will be over capacity, so fitness
function will have to include penalties)
Bin packing example indirect encoding:
candidate solution is a perm of the items, e.g.
4, 2, 1, 3, 5 ...meaning:
First place item 4 in the first available bin it
fits in, then place item 2 in the first
available ... etc.
Direct vs Indirect Encodings
Direct:
• straightforward genotype (encoding)  phenotype (actual solution)
mapping
• Easy to estimate effects of mutation
• Fast interpretation of chromosome (hence speedier fitness evlaluation)
Indirect/Hybrid:
• Easier to exploit domain knowledge – (e.g. use this in the constructive
heuristic)
• Hence, possible to `encode away’ undesirable features
• Hence, can seriously cut down the size of the search space
• But, slow interpretation
• Neighbourhoods are highly rugged.
Example real-number Encoding (and:
How EAs can innovate, rather than
just optimize)
D1,
D2,
D3,
D4
D5
D6
D1 >= D2 >= D3, D4 <= D5 <= D6
Fixed at six diameters, five sections
Design shape for a two-phase jet nozzle
A simple encoding
2,
1.8,
1.1,
1.3
1.3
The encoding enforces these constraints:
D1 >= D2 >= D3, D4 <= D5 <= D6
Fixed at six diameters, five sections
1.5
A more complex encoding– bigger search space,
slower, but potential for innovative solutions
Num sections before smallest
Z1, Z2,
Section diameters
D1, D2, D3 Dsmall…, Dn, Dn+1, …
Num sections after smallest
Middle section constrained to be smallest,
That’s all
Mutations can change diameters, add sections,
and delete sections
Mandatory reading
slides for
- Operators (typical mutation and crossover
operators for different types of encoding)
- Selection (various standard selection
methods)
- More encodings
About CW2
About CW2
8
0:00.000
0:00.834
0:01.668
0:02.502
0:03.336
0:04.170
0:05.004
0:05.838
0:06.672
0:07.506
0:08.340
0:09.174
0:10.008
0:10.842
0:11.676
0:12.510
0:13.344
0:14.178
0:15.012
0:15.846
0:16.680
0:17.514
0:18.348
0:19.182
0:20.016
0:20.850
0:21.684
0:22.518
0:23.352
0:24.186
0:25.020
0:25.854
0:26.688
0:27.522
0:28.356
0:29.190
0:30.024
0:30.858
0:31.692
0:32.526
0:33.360
0:34.194
0:35.028
0:35.862
0:36.696
0:37.530
0:38.364
0:39.198
0:40.032
0:40.866
0:41.700
0:42.534
0:43.368
0:44.202
0:45.036
0:45.870
0:46.704
0:47.538
0:48.372
0:49.206
0:50.040
0:50.874
0:51.708
0:52.542
About CW2
Pamela Hardaker, Benjamin N. Passow and David Elizondo. Walking State
Detection from Electromyographic Signals towards the Control of Prosthetic
Limbs UKCI 2013
got signals like this, but on her
thigh just above the knee:
running
10
standing
walking
6
4
2
0
-2
-4
-6
-8
-10
Current knee-joint prospects need manual
intervention to change between
standing/walking/running modes (the
wearer presses a button)
Can we train a Neural Network to
automatically detect when to change, on the
basis of nerve signals from the last 30ms ?
About CW2
Snapshot of Pamela’s data
Time
0:04.206
0:04.207
0:04.208
0:04.209
0:04.210
0:04.211
0:04.212
0:04.213
0:04.214
0:04.215
0:04.216
0:04.217
0:04.218
0:04.219
0:04.220
0:04.221
0:04.222
0:04.223
0:04.224
0:04.225
0:04.226
0:04.227
0:04.228
0:04.229
0:04.230
0:04.231
signal
state
6.064453124
5.693359374
4.946289061
4.609374999
4.589843749
4.482421874
4.809570311
5.102539061
5.507812499
5.922851562
5.561523436
5.610351561
5.605468749
5.551757811
5.952148437
6.542968749
6.923828124
6.845703124
6.958007812
6.484374999
6.118164062
5.424804686
4.023437499
3.696289061
3.798828124
3.579101561
standing
standing
standing
standing
standing
standing
standing
standing
standing
standing
standing
standing
standing
walking
walking
walking
walking
walking
walking
walking
walking
walking
walking
walking
walking
walking
About CW2
Snapshot of Pamela’s data
Time
0:04.206
0:04.207
0:04.208
0:04.209
0:04.210
0:04.211
0:04.212
0:04.213
0:04.214
0:04.215
0:04.216
0:04.217
0:04.218
0:04.219
0:04.220
0:04.221
0:04.222
0:04.223
0:04.224
0:04.225
0:04.226
0:04.227
0:04.228
0:04.229
0:04.230
0:04.231
signal
state
6.064453124
5.693359374
4.946289061
4.609374999
4.589843749
4.482421874
4.809570311
5.102539061
5.507812499
5.922851562
5.561523436
5.610351561
5.605468749
5.551757811
5.952148437
6.542968749
6.923828124
6.845703124
6.958007812
6.484374999
6.118164062
5.424804686
4.023437499
3.696289061
3.798828124
3.579101561
standing
standing
standing
standing
standing
standing
standing
standing
standing
standing
standing
standing
standing
walking
walking
walking
walking
walking
walking
walking
walking
walking
walking
walking
walking
walking
1.37207031
1.37207031
2.294921873
2.324218748
2.324218748
2.324218748
2.084960936
1.37207031
1.25488281
2.294921873
2.324218748
2.324218748
2.084960936
1.860351561
Max signal strength in last 30ms
Max signal strength in last 20ms
Max signal strength in last 10ms
range of sig in last 30ms
range … last 20ms
range … last 10ms
mean … last 30ms
mean … last 20ms
mean … last 10ms
1.25488281
0.971679685
2.294921873
2.324218748
2.084960936
1.860351561
1.674804686
2.39746
2.39746
2.75391
3.17383
3.17383
3.17383
2.72949
2.39746
1.7041
2.75391
3.17383
3.17383
2.69043
2.50488
1.7041
1.37207
2.75391
3.17383
2.69043
2.37793
2.31934
0.44873
0.355469
0.51709
0.482422
0.507975
0.484701
0.328939
0.338135
0.532471
0.438232
0.528564
0.518799
0.44165
0.26001
0.674805
0.390137
0.486328
0.570801
0.466797
0.416504
0.103516
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
0
0
0
Outputs: 1 0 0,
0 1 0
or 0 0 1
(standing) (waking)
(running)
About CW2
Snapshot of Pamela’s data
Time
0:04.206
0:04.207
0:04.208
0:04.209
0:04.210
0:04.211
0:04.212
0:04.213
0:04.214
0:04.215
0:04.216
0:04.217
0:04.218
0:04.219
0:04.220
0:04.221
0:04.222
0:04.223
0:04.224
0:04.225
0:04.226
0:04.227
0:04.228
0:04.229
0:04.230
0:04.231
signal
state
6.064453124
5.693359374
4.946289061
4.609374999
4.589843749
4.482421874
4.809570311
5.102539061
5.507812499
5.922851562
5.561523436
5.610351561
5.605468749
5.551757811
5.952148437
6.542968749
6.923828124
6.845703124
6.958007812
6.484374999
6.118164062
5.424804686
4.023437499
3.696289061
3.798828124
3.579101561
standing
standing
standing
standing
standing
standing
standing
standing
standing
standing
standing
standing
standing
walking
walking
walking
walking
walking
walking
walking
walking
walking
walking
walking
walking
walking
1.37207031
1.37207031
2.294921873
2.324218748
2.324218748
2.324218748
2.084960936
Max signal strength in last 30ms
Max signal strength in last 20ms
Max signal strength in last 10ms
range of sig in last 30ms
range … last 20ms
range … last 10ms
mean … last 30ms
mean … last 20ms
mean … last 10ms
1.37207031
1.25488281
2.294921873
2.324218748
2.324218748
2.084960936
1.860351561
1.25488281
0.971679685
2.294921873
2.324218748
2.084960936
1.860351561
1.674804686
2.39746
2.39746
2.75391
3.17383
3.17383
3.17383
2.72949
2.39746
1.7041
2.75391
3.17383
3.17383
2.69043
2.50488
1.7041
1.37207
2.75391
3.17383
2.69043
2.37793
2.31934
CW2: evolve a neural network
that predicts the state.
0.44873
0.355469
0.51709
0.482422
0.507975
0.484701
0.328939
0.338135
0.532471
0.438232
0.528564
0.518799
0.44165
0.26001
0.674805
0.390137
0.486328
0.570801
0.466797
0.416504
0.103516
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
0
0
0
What you will do
From me, you get:
Working NN code that does the job already
What you will do:
Implement new mutation and crossover operators
within my code, and test them on Pamela’s data
Write a report comparing the performance of the
different operators
If time, a look at the key bits of
those operator slides …
Operators for real-valued k-ary
encodings
Here the chromosome is a string of k real numbers, which each
may or may not have a fixed range (e.g. between −5 and 5).
e.g.
0.7, 2.8, −1.9, 1.1, 3.4, −4.0, −0.1, −5.0, …
All of the mutation operators for k-ary encodings, as previously
described in these slides, can be used. But we need to be clear
about what it means to randomly change a value. In the
previous slides for k-ary mutation operators we assumed that a
change to a gene mean to produce a random (new) value
anywhere in the range of possible values …
Operators for real-valued k-ary
encodings
that’s fine … we can do that with a real encoding, but this means
we are choosing the new value for a gene uniformly at
random.
Mutating a real-valued gene
using a uniform distrution
Range of allowed values for gene: 0—10
New value can be anywhere in the range, with
any number equally likely.
But, in real-valued encodings, we usually
use Gaussian (‘Normal’) distributions
… so that the new value is more likely than not
to be close to the old value.
0.3
typically we generate a perturbation
from a Gaussian distribution, like this
one, and add that perturbation to the old
value.
0.2
0.1
0
−1
−0.5
0
0.5
perturbation
1
Mutation in real-valued encodings
Most common is to use the previously
indicated mutation operators (e.g. singlegene, genewise) but with Gaussian
perturbations rather than uniformly chosen
new values.
Crossover in real-valued encodings
All of the k-ary crossover operators previously
described can be used.
But there are other common ones that are
only feasible for real-valued encodings:
Box and Line crossover operators for real-valued
chromosomes – figure is from this paper:
http://cdn.intechopen.com/pdfs/30229/InTech-The_roles_of_crossover_and_mutation_in_real_coded_genetic_algorithms.pdf
Treat the parents like vectors
Fig assumes you are crossing over two 2-gene
parents, x (x1,x2) and y (y1,y2)
Box: child is
(x1 + u1 (y1 – x1), x2 + u2(y2 – x2) )
Where u1 and u2 are uniform random numbers
between 0 and 1
Line: child is: x + u (y – x)
or (x1+ u(y1 – x1) , x2 + u (y2 – x2) )
Where u is a random number between 0 and 1
Box and Line crossover: general form
Parent1: x1, x2, x3, …., xN
Parent2: y1, y2, y3, …, yN
given parameter α (typically values are 0, 0.1 or 0.25)
General form:
Child is ((x1 – α) + u (y1 – x1), ((x2 – α) + u (y2 – x2), … etc)
Where: u is a uniform random number between 0 and 1+2α
Line crossover: α = 0 ; u is generated once for each crossover,
and is the same for every gene.
Extended line crossover: α > 0, u is generated once for each
crossover, and is the same for every gene.
Box crossover: α = 0 ; u is different for every gene
Extended box crossover: α > 0 ; u is different for every gene
Download