private void initiateCandidateSolutions() {
		int columns = objectiveFunction.getVariables();
		position = new double[numberOfParticles][columns];
		double random = upperLimit - lowerLimit;
		for(int i = 0; i < numberOfParticles; i++){
			for(int k = 0; k < objectiveFunction.getVariables(); k++){
				double d = lowerLimit + (Math.random() * random);
				position[i][k] = d;
			}
		}
		personalBest = position.clone();
		fitness = new HashMap <Integer, Double>();
		setFitness();
		velocities = new double[numberOfParticles][columns];
		for(int i = 0; i < numberOfParticles; i++){
			for(int k = 0; k < columns; k++){
				velocities[i][k] = 0;
			}
		}
		velocityUpdate.setVelocities(velocities);
	}