I am working on a project in which I am trying to implement the "Evolving Virtual Creatures" idea, written by Karl Sims.
The problem is that in every tutorial I have read, they build the individuals from integers or booleans, like this:
pop.subpop.0.species = ec.vector.BitVectorSpecies
pop.subpop.0.species.ind = ec.vector.BitVectorIndividual
But what if I have a Class named "Node", which is way more complicated than these ones? There is no such ec.vector.BitVectorNode. In the ECJ Tutorial page (http://cs.gmu.edu/~eclab/projects/ecj/docs/), there's a Tutorial named "Post-Tutorial Discussion" in which the following is written:
Arbitrary Representations It's fairly easy to make arbitrary representations with ECJ. Just subclass Individual and add in your own representation. You may need to make your own BreedingPipelines which know how to cross over or mutate your representation.
My class Node extends Individual, but I have no idea how to proceed or what changes do I have to apply to the common code to create a population (like the code in the Tutorials 1 and 2, for example)
This is the declaration of its attributes:
public class Node extends Individual
{
/** Properties */
private static final long serialVersionUID = -4771047292470201612L;
private double length;
private double width;
private double height;
private int recLimit;
private Joint joint;
private Set<Sensor> setSensors = new HashSet<Sensor>();
private Set<Neuron> setNeurons = new HashSet<Neuron>();
private Set<Effector> setEffectors = new HashSet<Effector>();
private Set<Connection> setConnections = new HashSet<Connection>();
//And then the methods
Any help will be very appreciated.