def _insertionMutation(self, vec):
        vecSize = len(vec)
        index1, insertionIndex = getValidIndexes(vecSize)
        indexVal = vec[index1]
        vec.pop(index1)
        vec.insert(insertionIndex, indexVal)

        return vec
Example #2
0
    def mutate(self, vec):
        vecSize = len(vec)
        # get two random indexes and exchange them
        index1, index2 = getValidIndexes(vecSize)

        temp = vec[index1]
        vec[index1] = vec[index2]
        vec[index2] = temp

        return vec
Example #3
0
    def mutate(self, vec):
        vecSize = len(vec)
        # get two random indexes and shuffle their range
        index1, index2 = getValidIndexes(vecSize)

        elementsToShuffle = vec[index1:index2 + 1]
        random.shuffle(elementsToShuffle)

        return np.concatenate(
            (vec[:index1], elementsToShuffle, vec[index2 + 1:]))
 def _swapMutation(self, vec):
     vecSize = len(vec)
     index1, index2 = getValidIndexes(vecSize)
     vec[index1], vec[index2] = vec[index2], vec[index1]
     return vec
 def makeNewChild(self, parent1, parent2):
     matingIndex1, matingIndex2 = getValidIndexes(len(parent1.getVec()))
     childVec = np.concatenate((parent1.getVec()[:matingIndex1],
                                parent2.getVec()[matingIndex1:matingIndex2],
                                parent1.getVec()[matingIndex2:]))
     return GeneticEntity(childVec)
Example #6
0
 def generateOneNeighbor(self, vec):
     index1, index2 = getValidIndexes(len(vec))
     neighbor = vec[:index1] + np.flip(
         vec[index1:index2]).tolist() + vec[index2:]
     return neighbor