private void evaluateCells()
	{
		double lowest = 0; // lowest cell fitness
		double highest = 0; // highest cell fitness
		boolean firstTime = true; // the first element in the list

		// Evaluate each cell noting the lowest and highest fitnesses in the
		// network

		for (NetworkCell cell : cellList)
		{
			cell.evaluate();

			// If this is the first cell to be evaluated then its fitness
			// becomes
			// both the lowest and highest seen sofar, Else check cell's fitness
			// against the current highest and lowest and change accordingly

			if(firstTime)
			{
				lowest = cell.getFitness();
				highest = cell.getFitness();
				firstTime = false;
			}
			else
			{
				if(cell.getFitness() > highest)
					highest = cell.getFitness();

				if(cell.getFitness() < lowest)
					lowest = cell.getFitness();
			}
		}

		// Normalise fitness for each cell based on the lowest and highest
		// fitnesses
		// in the network

		for (NetworkCell cell : cellList)
			cell.setFitnessNorm(lowest, highest);
	}