private Result calculateAES(Result result)
	{
		ArrayList<Integer> dataPoints = new ArrayList<>();
		float AES = 0f;
		float AES_stdev = 0f;
		int N = 0;

		for (int run = 0; run < rawGenerationData.size(); run++)
		{
			for (int generation = 0; generation < rawGenerationData.get(run).size(); generation++)
			{
				for (int cell = 0; cell < rawGenerationData.get(run).get(generation).size(); cell++)
				{
					NetworkCell current = rawGenerationData.get(run).get(generation).get(cell);
					if(optimumCheck(current))
					{
						AES += rawGenerationData.get(run).size();
						dataPoints.add(rawGenerationData.get(run).size());
						N++;
					}
				}
			}
		}
		result.AES = AES / N;

		for (int i = 0; i < dataPoints.size(); i++)
		{
			int dataPoint = dataPoints.get(i);
			AES_stdev += Math.pow((dataPoint - result.AES), 2);
		}
		result.AES_stdev = (float) (Math.sqrt(AES_stdev / N));

		return result;
	}