Example #1
0
 /** {@inheritDoc} */
 public Node mutate(Random rng, Probability mutationProbability, TreeFactory treeFactory) {
   if (mutationProbability.nextEvent(rng)) {
     return treeFactory.generateRandomCandidate(rng);
   } else {
     Node newLeft = left.mutate(rng, mutationProbability, treeFactory);
     Node newRight = right.mutate(rng, mutationProbability, treeFactory);
     if (newLeft != left && newRight != right) {
       return newInstance(newLeft, newRight);
     } else {
       // Tree has not changed.
       return this;
     }
   }
 }