package jcgp.backend.population; /** * {@code MutableElement} declares the expected behaviour of any * part of a chromosome that is mutable, more specifically * nodes or outputs. Inputs are not mutable since they don't have * connections or functions. *

* This interface provides a way to deal with mutable elements * generically without having to specify whether they are nodes * or outputs. In this way a random mutable element can be picked and * dealt with more easily, facilitating mutations. * * @author Eduardo Pedroni * */ public interface MutableElement { /** * This method sets the indexed connection to the specified new connection. * Implementing classes may choose to ignore the given index (such as in the * case of outputs, which only have one connection). * * @param index the connection index to set. * @param newConnection the chromosome element to connect to. */ public void setConnection(int index, Connection newConnection); /** * Asserts if the specified element is a copy of the elements * this is called on.
* This method returns true if and only if: * *

* The relationship computed by this method is: * * @param element the mutable element to compare to. * @return true if {@code element} is a copy of this element. */ boolean copyOf(MutableElement element); }