private void initRouteFromGene(Gene gene){
		
		//init to ordered route
		for(int i = 0;i<route.length;i++){
			route[i] = i;
		}
		
		int lastAllele = travelingSalesman.n;
		
		//apply transpositions
		
		for(int i = 0;i<allelesCount;i++){
			//differeing strategies to deal with superfluous alleles - modulo n favours some numbers, 
			//but presumably so would any other scheme
			int allele = gene.getAllele(i)%travelingSalesman.n;
			
			if(i > 0){
				int tmpCity = route[allele];
				route[allele] = route[lastAllele];
				route[lastAllele] = tmpCity;
			}
			
			lastAllele = allele;
		}
		
	}