Embedding GI inside the JVM
Benoit Baudry Kwaku Yeboah-Antwi
1
Embedding GI inside the JVM Benoit Baudry Kwaku Yeboah-Antwi 1 - - PowerPoint PPT Presentation
Embedding GI inside the JVM Benoit Baudry Kwaku Yeboah-Antwi 1 Specialize to environment .. or not 2 Open-ended evolution 3 Continuously evolve 4 In software Code specialization API are large and generic exact usage (e.g., surface really
Benoit Baudry Kwaku Yeboah-Antwi
1
2
3
4
at runtime
5
6
7
Initialization Selection Variation Evaluation
Object A Object B Object C Object D Object B Object C Object B’ Object C’
EvoAgent getAllObjects()
Action FN
EvoDaemon
selectObjects()
Evo Strategy
EvoDaemon mutateObject()
Genetic Oper
EvoAgent testObjects()
Action FN
Object B’
EvoDaemon
discardUnfit() Fitness
EvoAgent redefObjects()
Action FN
Installation
Object C’ Object B’
records of
10
Selection Initialization
11
Variation
checks about the well-formedness of bytecode
12
Evaluation
13
public int greaterThan(int intOne, intTwo) { if (intOne > intTwo) { return 0; } else { return 1; } } greaterThan(10,20);
0: iload_1 1: iload_2 2: nop 3: if_icmple 8 6: iconst_0 7: ireturn 8: iconst_1 9: ireturn Bytecode ✔
14
public int greaterThan(int intOne, intTwo) { if (intOne > intTwo) { return 0; } else { return 1; } } greaterThan(10,20);
0: iload_1 1: iload_2 2: if_icmple 7 5: iconst_0 6: ireturn 7: iconst_1 8: ireturn Bytecode ✗
15
mutated inputs
eval fitness if ok if not ok discard mutated keep mutated
16
17
public long hash() { long h = this.hashCode(); h = this.initCapacity * h; h += ~(h << 9); h ^= h >>> 14; h += h << 4; h ^= h >>> 10; return h; }
18
public long hash() { long h = this.hashCode(); h = this.initCapacity * h; h += ~(h << 9); h ^= h >>> 14; h += h << 4; h ^= h >>> 10; return h + h; } public long hash() { long h = this.hashCode(); h = this.initCapacity * h; h += ~(h << 9); h ^= h >>> 14; h += h << (4+6); h ^= h >>> 10; h = h * 100; return h; } public long hash() { long h = this.hashCode(); h = this.initCapacity * h; h += ~(h << 9); h ^= h >>> 14; h += h << (4+6); h ^= h >>> 10; return h; }
19