public LabeledGenome<LabelGene> merge(LabeledGenome<LabelGene> other) {
		if(size()!=other.size()){
			throw new IllegalArgumentException("Sizes of genomes mismatch");
		}
		int splitPoint = new Random().nextInt(this.size());
		double splitGeneLocation = this.get(splitPoint).getGeometry().getCentroid().getX();
		LabeledGenome<LabelGene> child = new LabeledGenome<LabelGene>(avoids);
		for(int geneIter=0; geneIter<size(); geneIter++){
			double geneLocation = this.get(geneIter).getGeometry().getCentroid().getX();
			if(geneLocation<splitGeneLocation){
				child.add(this.get(geneIter));
			} else {
				child.add(other.get(geneIter));
			}
		}
		return child;
	}