private static void variedEdgeRecombinationCrossoverForRoutes(Individual child, Individual parent1, Individual parent2)
	{
		int coin;

		for(int period=0;period<problemInstance.periodCount;period++)
		{			 
			// Step 1. Assign client to vehicle
			// Step 2. Create Neighbour/Adjacency List
			// Step 3. Create Route For Each Vehicle
			
			//assignedVehicle[c] => v means, client c is under vehicle v .... if no assigned vehicle v=-1
			int[] assignedVehicle = new int[problemInstance.customerCount];
			for(int i=0;i<problemInstance.customerCount;i++) assignedVehicle[i] = -1;
			
			//numberOfCustomerServed[v] -> n means, vehicle v serves n clients
			int[] numberOfCustomerServed = new int[problemInstance.vehicleCount];
			
			
			ArrayList<ArrayList<Integer>> adjacencyList = new ArrayList<ArrayList<Integer>>();
			
			for(int client =0;client<problemInstance.customerCount;client++)
			{
				adjacencyList.add(new ArrayList<Integer>());
			}
			
			ArrayList<ArrayList<Integer>> vehicleAdjacencyList = new ArrayList<ArrayList<Integer>>();
			
			for(int vehicle =0;vehicle<problemInstance.vehicleCount;vehicle++)
			{
				vehicleAdjacencyList.add(new ArrayList<Integer>());
			}
			
			
			
			assignClientToVehicle(child,parent1,parent2,assignedVehicle, numberOfCustomerServed,period);
			createAdjacencyList(adjacencyList, vehicleAdjacencyList, period, assignedVehicle,child,parent1,parent2);
			
			boolean print=false;	
			if(print)
			{
				problemInstance.out.println("Vehicle assignment : period : "+period);
				for(int client=0;client<problemInstance.customerCount;client++)
					problemInstance.out.print("[ "+client+" -> "+assignedVehicle[client]+" ] ");
				problemInstance.out.println("");
			
				problemInstance.out.println("Neighbour List : Period : "+period);
				for(int client=0;client<problemInstance.customerCount;client++)
				{				
					problemInstance.out.print("Neigbours of "+client+" : ");
					for(int i=0;i< adjacencyList.get(client).size();i++)
						problemInstance.out.print(adjacencyList.get(client).get(i)+" ");
					problemInstance.out.println("");
					
				}		
						
			}
			
			for(int vehicle=0;vehicle<problemInstance.vehicleCount;vehicle++)
			{
				createRoute(parent1, parent2, child, adjacencyList, vehicleAdjacencyList,numberOfCustomerServed,vehicle, period, assignedVehicle);
			}
			

		}
	}