WordPress Websites for Engineers: Elevate Your Brand
EvoRobocode Competition @ GECCO-2013
1. GECCO 2013 GPUs for GEC
EvoRobocode Competition
Daniele Loiacono and Moshe Sipper
2. GECCO 2013 GPUs for GEC
Overview
q EvoRobocode challenges you to
apply Evolutionary Computation
to design a competitive robot
tank for the Robocode game!
q Robocode is a programming
game, where the goal is
developing in Java a robot tank to
fight against other tanks.
q Battles can be either run in real-
time and displayed on the screen
or run in a batch mode without
visualization.
q Robocode also features an on-line
tournament system to rank
developed tanks.
2
3. GECCO 2013 GPUs for GEC
q Criteria
" 50% – Performance
" 30% - Relevance of EC
" 20% – Novelty
q Panel
… and myself
Evaluation
J. J. MereloMoshe SipperMike Preuss
4. GECCO 2013 GPUs for GEC
Entries
SCALPBot
Robin Harper
RoboNucleicAcid
Mike Worth and Randy Olson
TekitokaBot
Mohab Elkaref, Andreas Scheibenpflug, Stefan Wagner,
and Michael Affenzeller
5. GECCO 2013 GPUs for GEC
SCALPBot
q Based on “Co-Evolving Robocode Tanks”, GECCO-2011
q Grammatical Evolution together with a Spatial Co-evolution
System
6. GECCO 2013 GPUs for GEC
SCALPBot (2)
q Spatial co-evolution of three stacked toroidal planes, each
plane having 20x20 (i.e. 400) cells. Inside each cell there are
two robocode robots, one the “predator” the other the
“prey”.
q Bot structure:
8. Gene7c
Algorithm
for
RoboCode
Test
in
Robocode
against
SpinBot
Selec7on
Crossover
Muta7on
Popula7on
Evaluate
each
bot
Fitness
score
for
each
bot
Next
genera7on
of
bots
10. Byte
string
encoding
9
byte
strings,
one
for
each
AdvancedBot
event
onScannedBot()
1443a000003f14233248
onHitByBullet()
990ff0aab[b4948a04420
onHitBot()
1f3a864a258990da0daad0998d6475508a0442
onHitWall()
1f3a864a258990da0daad09985746d3a34feeb5cfaf5c99ce2
onBulletHitBullet()
0240000000240000000710
onBulletHit()
43a000000a2488aa0ff5842332
onBulletMissed()
3f301441c2ace2a460
run()
14420000009985746d508a0442
while(true)
990ff0ae000300
Byte
strings
stored
in
associated
.data
directory
Crossover
&
muta7ons
act
directly
on
bytes
11. Byte
string
decoding
9
byte
strings,
one
for
each
AdvancedBot
event
onScannedBot()
setFire((e.getDistance()+e.getEnergy())/80);turnGunLec((e.getDistance()
+e.getEnergy()));
onHitByBullet()
setFire((e.getHeading()+e.getVelocity())/80);
execute();
setTurnGunLec(((e.getHeading()+e.getVelocity())+e.getBearing()));turnGunLec(((e.getHeading()
+e.getVelocity())+e.getBearing()));setMaxVelocity((((e.getHeading()+e.getVelocity())+e.getBearing())
+e.getBearing())/32);
onHitBot()
back(0);setTurnGunLec((0+e.getBearing()));
onHitWall()
execute();setMaxVelocity(0/32);
onBulletHitBullet()
;
onBulletHit()
turnGunLec(0);
onBulletMissed()
setMaxVelocity(0/32);fire(0/80);
run()
;
while(true)
ahead(1);
if
(1
>
7)
{setMaxVelocity(0/32)};
Translated
from
byte
code
to
bot
ac7ons,
opera7ons
on
a
register,
and
if
statements
12. Limi7ng
code
length
to
nanobot
size
Implemented
feast
and
famine
periods
Feast:
unlimited
genome
size
allowed
Famine:
fitness
propor7onally
reduced
if
genome
size
is
over
nanobot
size
limit
Repeat
feast
and
famine
periods
mul7ple
7mes
13. Mohab
Elkaref,
mohab.elkaref@gmail.com
Andreas
Scheibenpflug,
ascheibe@heuris7clab.com
Stefan
Wagner,
swagner@heuris7clab.com
Michael
Affenzeller,
maffenze@heuris7clab.com
Heal.TekitokaBot:
A
Robocode
Bot
evolved
with
Gene<c
Programming
using
Heuris<cLab
14. Environment
14
" Heuris<cLab
(HL)
• Framework
for
heuris7c
op7miza7on
• Can
be
applied
to
different
problems
• Implemented
in
Microsoc®. NET and
C#
" Robocode
Plugin
• Uses
the
HL
framework
to
apply
Gene7c
Programming
to
Syntax
Tree
representa7ons
of
Robocode
programs
• Interprets
Syntax
Trees
and
outputs
Java
programs
• Runs
the
output
programs
in
the
Robocode
simulator
and
retrieves
the
result
Heal.TekitokaBot:
A
Robocode
Bot
evolved
with
Gene<c
Programming
using
Heuris<cLab
15. Implementa<on
of
a
Code
Node
(Func<on/Terminal)
15Heal.TekitokaBot:
A
Robocode
Bot
evolved
with
Gene<c
Programming
using
Heuris<cLab
16. Parameters
&
Runs
16
" Evolu<on
Parameters
• Popula<on
size:
250
• Crossover:Standard
crossover
with
0.9
probability
of
selec7ng
an
inner
node
and
0.1
probability
of
selec7ng
a
leaf.
• Muta<on:Probability
of
0.3,
used
operators
are:
Changing
of
the
Node
type,
Removal
and
Replacement
of
a
branch.
All
three
had
equal
chances
of
being
selected.
• Solu<on
Creator:Trees
were
generated
using
the
Grow
method,
since
the
implementa7on
of
Numerical
opera7ons
and
Logical
comparisons
introduced
uneven
trees
making
the
use
of
a
Full
Tree
creator
impossible.
• Maximum
Tree
Depth:
15.
Heal.TekitokaBot:
A
Robocode
Bot
evolved
with
Gene<c
Programming
using
Heuris<cLab
" Termina<on
Criteria
• Conversion
past
200
genera7ons
" Training
against
Human-‐Coded
Robots
• 5
tops
robots
from
the
roborumble
league
selected
• 206
genera7ons
" Training
against
Sample
Robots
• 5
sample
robots
provided
with
Robocode
• 230
genera7ons
• 5
sample
robots
provided
with
Robocode
" AUer
ini<al
experiments
2
code
addi<ons
" Code
added
to
turn
radar
around
indefinitely
in
the
Run
method
" Code
added
to
turn
gun
in
direc7on
of
radar
in
onScannedRobot
event
17. Fitness
Func<on
17
" 5
Human-‐coded
Robots
matched
against
SiXngDuck
sample
bot
" 5
round
Matches
• 5
Human-‐coded
robots
matched
against
SipngDuck
sample
bot
• 5
round
matches
• Largest
Score:
900
• Difference
of
score
used
as
fitness
measure
• Absolute
score
goes
from
-‐900(complete
loss)
to
+900(absolute
domina7on)
• Compe77ve
opponents
both
score
close
to
0
" Evalua<on
of
members
of
popula<on
• Average
score
difference
of
score
against
5
opponents
• 5
round
matches
against
each
opponent
Heal.TekitokaBot:
A
Robocode
Bot
evolved
with
Gene<c
Programming
using
Heuris<cLab
18. Fitness
Func<on
18
" Progress
against
Human-‐coded
Robots
• Best
Quality:
-‐264
Heal.TekitokaBot:
A
Robocode
Bot
evolved
with
Gene<c
Programming
using
Heuris<cLab
19. Fitness
Func<on
19
" Progress
against
Sample
Robots
• Best
Quality:
+241
Heal.TekitokaBot:
A
Robocode
Bot
evolved
with
Gene<c
Programming
using
Heuris<cLabL
20. Comparing
Results
of
Runs
20Heal.TekitokaBot:
A
Robocode
Bot
evolved
with
Gene<c
Programming
using
Heuris<cLab
" Result
in
a
cell
is
score
of
column
vs
row
" Value
between
brackets
is
number
of
wins
" BotSample
selected
to
enter
compe<<on
under
the
name
Heal.TekitokaBot
" Selec<ng
Best
Robots
from
the
2
runs
• Best
3
robots
from
run
against
Human
coded
Robots
• Bot200,
Bot199,
Bot198
• Best
robot
from
run
against
Sample
robots
• BotSample
• 25
round
matches
" Rank
in
NANORUMBLE:
189/248
21. GECCO 2013 GPUs for GEC
Performance Evaluation
q RoboRubmle (Nanobots category, 28 participants)
q Out of 1000 battles:
Rank
Robot Name
Total Score
1sts
2nds
3rds
1st
SCALPBot
150256 (44%)
515
281
204
2nd
TekitokaBot
111007 (32%)
389
308
303
3rd
MendelBot
81743 (24%)
172
340
488
22. GECCO 2013 GPUs for GEC
And the winner is…
SCALPBot
Robin Harper