@Override public ExprTree mutateExprTree(ExprTree ptree, ExprTreeSchema schema, IRandGen randgen) { // Copy of expr ExprTree stree = ptree.copy(); // Node selection int selectIndex = randgen.choose(0, ptree.size()); // Mutated node IPrimitive oldBlock = stree.getBlock(selectIndex); Class<?> rtype = oldBlock.returnType(); int arity = oldBlock.argumentTypes().length; IPrimitive newBlock = schema.getAnyBlock(rtype, randgen, arity); stree.setBlock(newBlock, selectIndex); // Return result return stree; }
@Override protected void createParents() { parents = new ArrayList<IIndividual>(); // Parent genotype ExprTree genotype = new ExprTree(); genotype.addBlock(new Add()); genotype.addBlock(new X()); genotype.addBlock(new Sub()); genotype.addBlock(new Mul()); genotype.addBlock(new Add()); genotype.addBlock(new X()); genotype.addBlock(new Y()); genotype.addBlock(new Y()); genotype.addBlock(new Z()); // Add individual to the parents set parents.add(new ExprTreeIndividual(genotype)); }
@Override protected void createExpected() { expected = new ArrayList<IIndividual>(); // Mutated individual genotype ExprTree genotype = new ExprTree(); genotype.addBlock(new Add()); genotype.addBlock(new X()); genotype.addBlock(new Add()); genotype.addBlock(new Sub()); genotype.addBlock(new X()); genotype.addBlock(new Y()); genotype.addBlock(new Z()); // Add individual to expected set expected.add(new ExprTreeIndividual(genotype)); }