A Study of

libyantawdryAI and Robotics

Oct 23, 2013 (3 years and 5 months ago)

52 views

A Study of

Genetic Algorithms for
Parameter Optimization

Mac Newbold

Introduction


Many algorithms have constant values that
affect the way they work


Sometimes we choose them arbitrarily or
based on some experimentation


Their interactions are often not well
understood


Use Genetic Algorithm to optimize the
parameters to an algorithm

Background


Utah Network Testbed (www.emulab.net)


Map a “virtual” topology graph to the
physical topology graph


NP
-
Hard, 30+ degrees of freedom


“assign”


Simulated Annealing (AI algo.)


19 constants control behaviors


1 boolean, 4 integers, 15 floating point


1 integer and 3 floats are scaling factors


15 parameters need to be optimized

Genetic Algorithm


Evolution, “survival of the fittest”


Genetic Algorithm control


“tune”


Calls object methods


Replaceable object


Obj
-
>Random()


returns a random object


Obj
-
>Fitness()


calculate fitness of object


Obj
-
>Cross(obj2)


crossover (returns 2 objs)


Obj
-
>Mutate()


mutate


Obj
-
>Display()


Show the object


Very Flexible Framework

Parameter Optimization


“Params” object


Specialized for “assign”


Contains the 15 variables we want to tune


One extra value caches fitness calculations


Insures that values “make sense” using
domain specific constraints


Uniform crossover


Random mutation


Performance based fitness measure

Fitness Function


For “assign”, we care about running time


Choice of constants has huge effect


Fitness calculation:


Run “assign” on a set of N problems, using the
object’s parameters


Allow S seconds for each run


X=Sum of execution times


Fitness = (S*N)


X


S*N = maximum possible total time


Higher scores are better


Could take a long time, so cache result

G.A. Results


Tested genetic algorithm with “random”
objects


Same as “Params” object, except for fitness


Random fitness, updated after cross/mutate


1000 member population


Crossover rate of 0.50


Mutation rate of 0.30


Threshold = 999.995/1000


Took 7 generations, about 5 seconds

Results

What’s Next


Finish setting up actual scoring using
“assign” runtimes…