private static ArrayList<TestingParameters> createTestingParams(int nrRuns, boolean withExperimentalVariation)
	{
		ArrayList<TestingParameters> list = new ArrayList<TestingParameters>();

		// our variation parameters
		int[] list_affMeasure = { 0, 1, 2 };
		int[] list_generators = { 0, 1, 2 };
		ArrayList<OptimisationFunction> list_functions = new ArrayList<>();
		list_functions.add(new MultiFunction());
		list_functions.add(new RootsFunction());
		//list_functions.add(new SchafferFunction());

		// setting function dependent parameters
		int[] list_numDims = { 2, 2, 2 };
		double[][] list_lowerBounds = { { -2.0, -2.0 }, { -2.0, -2.0 }, { -10.0, -10.0 } };
		double[][] list_upperBounds = { { 2.0, 2.0 }, { 2.0, 2.0 }, { 10.0, 10.0 } };

		// all the for-loops for iterating through these

		for (int i_affMeasure = 0; i_affMeasure < list_affMeasure.length; i_affMeasure++)
		{
			for (int i_generator = 0; i_generator < list_generators.length; i_generator++)
			{
				for (int i_function = 0; i_function < list_functions.size(); i_function++)
				{
					TestingParameters params = new TestingParameters();
					params.maxNrRuns = nrRuns;
					params.affinityMeasure = list_affMeasure[i_affMeasure];
					params.generatorType = list_generators[i_generator];
					switch (params.generatorType)
					{
						case TestingParameters.GENERATOR_HISTOGRAM:
							params.cellGenerator = HistogramCellGenerator.getInstance();
						break;
						case TestingParameters.GENERATOR_DISTANCE:
							params.cellGenerator = DistanceCellGenerator.getInstance();
						break;
						case TestingParameters.GENERATOR_RANDOM:
							params.cellGenerator = RandomCellGenerator.getInstance();
						break;
						default:
							System.out.println("Main.createTestingParameters() - ERROR: Unkown Cell Generator type.");
							System.exit(-1);
						break;
					}

					params.optimisationFunction = list_functions.get(i_function);
					params.numDims = list_numDims[i_function];
					params.lowerBounds = list_lowerBounds[i_function];
					params.upperBounds = list_upperBounds[i_function];

					// Do with experimental variation
					if(withExperimentalVariation)
						list.addAll(variateExperimentalSettings(params));
					else
					{
						params.name = createName(params);
						list.add(params);
					}
				}
			}
		}

		return list;
	}