docs: def rankingEval(self):
  		'''
  		Sorting the pop. base on the fitnessEval result
  		'''
  		fitnessAll = numpy.zeros(self.length)
  		fitnessNorm = numpy.zeros(self.length)
  
  		for i in range(self.length):
  			self.Ind[i].fitnessEval()
  			fitnessAll[i] = self.Ind[i].fitness
  
  		maxFitness = fitnessAll.max()
  		for i in range(self.length):
  			fitnessNorm[i] = (maxFitness - fitnessAll[i]) / maxFitness
  		fitnessSorted = fitnessNorm.argsort()
  
  		# Compute the selection probabilities of each individual
  		probability = numpy.zeros(self.length)
  		S = 2.0
  		for i in range(self.length):
  			probability[fitnessSorted[i]] = ((2-S)/self.length) + (2*i*(S-1))/(self.length*(self.length-1))
  		self.rankingComputed = 1
  		self.fitness = 	fitnessAll
  
  		return [fitnessAll, fitnessSorted[::-1], probability]