Hi everyone, I am new to ECJ and was hoping someone could help.

 

I would like to perform a number of mutation schemes. The first one is “traditional mutation”:

 

1)       (Traditional mutation): select a random node and remove it (along with all its children) and replace it by a randomly generated subtree and subtree root.

 

The other two schemes I would like to implement are based on “point-mutation”. Both point-mutation schemes would start out by selecting a node and generate a random node (e.g. symbol1) to replace it. Symbol1 would be checked to see whether it is of the same arity as the node. If it is, then the node would be replaced by symbol1. If they are not of the same arity, then we would either:

 

2)      Pick another symbol until we find one of the same arity; OR

3)      Remove the node and replace it with a new subtree using symbol1 as the root.

 

I can see that (2) would be equivalent to using MutateOneNodePipeline. I however fail to identify what class/method to use to implement (1) and (3).

 

Any help would be much appreciated!

 

Cheers,

Peter