def mutation(cls, indiv):
newInd = indiv.duplicate()
nbMute = int(random.random()*(len(newInd.__x)-1))+1
toMute = []
for i, x in enumerate(indiv.__x):
if len(toMute) < nbMute:
toMute.append(i)
else:
iMin = 0
for im, i2 in enumerate(toMute):
if abs(indiv.__x[i2]) < abs(indiv.__x[toMute[iMin]]):
iMin = im
if abs(x) > abs(indiv.__x[toMute[iMin]]):
toMute[iMin] = i
for i in toMute:
newInd.__x[i] = random.uniform(cls.__BOUNDS[0], cls.__BOUNDS[1])
return newInd
评论列表
文章目录