Lecture 8 - Hyper-Heuristics II Flashcards
What do the colours mean within a graph-based hyper-heuristic?
As assignment of labels (colours) to elements of a graph subject to certain constraints
What is Vertex Colouring?
A way of colouring the vertices of a graph such that no two adjacent vertices share the same colour
What does the degree of a vertex tell you?
The number of edges connected to that vertex
What does the saturation degree of a vertex tell you?
The number of differently coloured vertices already connected to it
How do you go about solving the minimum colouring problem?
Compute the degree of all vertices
Sort the vertices from largest degree to smallest
Colour the first vertex in the list with the next colour (starting with the first) that is different than its neighbours
Delete the vertex from the list, go to the previous step unless no vertices are left.
For each step, use the saturation degree.
What is Genetic Programming?
‘Get a computer to do what needs to be done, without telling it how to do it’
Provides a method for automatically creating a working computer program from a high-level problem statement of the problem
Iteratively transforms a population of computer programs into a new generation of programs via evolutionary process
What features does a GP have that makes it what it is?
It is an evolutionary algorithm containing the same algorithmic components, including:
Random generation of the initial population of possible solutions
Genetic crossover of two promising solutions to create new possible solutions
Mutation of promising solution to create new possible solutions
For reference, created solutions are actually new programs
How do you randomly generate a program?
Randomly generate a program that takes two or more arguments and uses basic arithmetic to return an answer.
Randomly select either a function or a terminal to represent our program
If a function was selected, recursively generate random programs to act as arguments
How do you create a tree for randomly generated programs?
Go from left to right, with each argument being set as a leaf to the root node. If the argument is a function, then put the operator as the root of that function, and the other parts as leaves below it.
How do you perform mutation within a tree for randomly generated programs?
Pick a random node
Anything associated with it i.e. below it, is removed/deleted.
Then, replace that area with the new argument’s contents
How do you perform crossover within a tree for randomly generated programs?
Pick two nodes.
Swap them between the trees. If it has a subtree, that comes along for the journey.