def _insertionMutation(self, vec): vecSize = len(vec) index1, insertionIndex = getValidIndexes(vecSize) indexVal = vec[index1] vec.pop(index1) vec.insert(insertionIndex, indexVal) return vec
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
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)
def generateOneNeighbor(self, vec): index1, index2 = getValidIndexes(len(vec)) neighbor = vec[:index1] + np.flip( vec[index1:index2]).tolist() + vec[index2:] return neighbor