def findPowersRR(self, objectiveFunction="averageThr", sgaGenerations = 100, numberOfThreads = 11, numOfIndividuals = 10, evolveTimes = 10, method="global", x_arg=None, y_arg=None, expectedSignalLoss_arg=None):
        if method == "local":
            if x_arg == None:
                x = self.parent.constraintAreaMaxX/2
            else:
                x = x_arg
            if y_arg == None:
                y = self.parent.constraintAreaMaxY/2
            else:
                y = y_arg
            if expectedSignalLoss_arg == None:
                maxDistance = min(self.parent.constraintAreaMaxX/2, self.parent.constraintAreaMaxY/2)
            else:
                maxDistance = returnDistanceFromSNR(expectedSignalLoss_arg)
            localBsVector = []
            for bs in self.parent.bs:
                if math.sqrt((bs.x - x)**2 + (bs.y - y)**2) < maxDistance:
                    row = []
                    row.append(int(bs.ID))
                    row.append(math.sqrt((bs.x - x)**2 + (bs.y - y)**2))
                    localBsVector.append(row)
            localBsVector = np.asarray(localBsVector)
        if objectiveFunction == "averageThr":
            if method == "local":
                localListBS = []
                for i in range(len(localBsVector)):
                    localListBS.append(localBsVector[i,0])
                prob = pg.problem(local_maximalThroughputProblemRR(dim=len(localBsVector), networkInstance=self.parent, lowerTxLimit=self.parent.minTxPower, upperTxLimit=self.parent.maxTxPower, localListBS=localListBS))