3.1 Depthwise Selection Strategy
The first modification focuses on the strategy for se-
lecting the nodes to be mutated. In the standard
SNGP, the node to be mutated is chosen at random.
This means that all function nodes have the same
probability of selection irrespectively of (1) how well
they are performing and (2) how well the trees of
which they are a part are performing. This is not in
line with the evolutionary paradigm where the well fit
individuals should have higher chance to take part in
the process of an evolution of the population.
One way to narrow this situation is to select nodes
according to their fitness. However, this would pre-
fer just the root nodes of trees with high fitness while
neglecting the nodes at the deeper levels of such well-
performing trees which themselves have rather poor
fitness. In fact, imposing high selection pressure on
the root nodes might be counter-productive in the end
as the mutations applied on the root nodes are less
likely to bring an improvement than mutations ap-
plied on the deeper structures of the trees.
We propose a selection strategy that takes into ac-
count the quality of the mutated trees, so that better
performing trees are preferred, as well as the depth of
the mutated nodes so that deeper nodes of the trees
are preferred to the shallow ones. The selection pro-
cedure has four steps:
1. A function node n is chosen at random.
2. A tree t with the best fitness out of all trees that
use the node n is chosen.
3. All nodes of the tree t are collected in a set S. Each
node is assigned a score equal to its depth in the
tree t.
4. One node is chosen from the set S using a binary
tournament selection considering the score values
in the higher the better manner.
3.2 Organization of the Population
The second modification aims at improving the explo-
ration capabilities of the SNGP algorithm. Two oper-
ators for placing a compact version of the tree rooted
in the best performing node to the beginning or to the
end of the population are proposed.
moveLeft Operator. Let us first describe the idea
behind and the realization of the operator that places
the compact version of the best tree to the beginning
of the population. The motivation for this operator,
denoted in this work as moveLeft operator, is that
well-performing nodes (and the whole tree structure
rooted in this node) can represent a suitable building
block for constructing even better trees when used as
a successor of other nodes in the population. Since
the chance of any node of being selected as a succes-
sor by other nodes is higher if the node is more to
the left in the population and vice versa, it might be
beneficial to store the well performing nodes at lower
positions in the population. Thus, the operator takes
the best tree, T
best
, and puts its compact version to the
very beginning of the population. The operator works
as follows:
1. Start in the best performing node and traverse
its tree, T
best
, in the breadth-first manner so that
nodes with the lowest index i are processed first.
Put the nodes of the tree into a list of nodes, L, in
the order reversed to the order in which they were
processed.
2. Set all successor and predecessor links within L
so that the structure represents the same tree as
the original tree T
best
.
3. Place the tree stored in L to the beginning of the
population, i.e. the first node of L being at the first
function node position of the population.
4. Set the successor and predecessor links within the
original tree T
best
so that the tree retains the same
functionality as it had before the action.
5. Update the successor and predecessor links of the
other nodes in the population so that as many orig-
inal links as possible are preserved while the func-
tionality of the compact tree remains intact.
Note that after the application of the T
best
opera-
tion the population contains two versions of the best
tree, the original one and the compact one. It is made
sure that all nodes of the original tree have properly
set their successors sets. If for example some succes-
sors of a node of the original best tree gets affected
by the T
best
operation (i.e. the successor falls into the
portion of the population newly occupied by the com-
pact version of the tree), the successor of the respected
node is redirected to the new version of the successor.
Moreover, some links have to be added to the list of
predecessors of nodes of the compact tree in order to
ensure a feasibility of other nodes in the population.
moveRight Operator. Similarly, an operator that
places the compact version of the best tree to the end
of the population is proposed. The motivation for this
operator, denoted in this work as moveRight operator,
is that a performance of some well-performing tree
can be further improved by mutations applied to the
nodes on deeper levels of the tree more likely than by
mutations applied to the root node or shallow nodes of
the tree. In order to increase the number of possible
structural changes to the deeper nodes of the best tree
the compact version of the tree is placed to the end of
the population. The operator works similarly to the
ECTA 2015 - 7th International Conference on Evolutionary Computation Theory and Applications
246