Code Duplication    Length = 16-16 lines in 2 locations

NiaPy/algorithms/basic/ga.py 2 locations

@@ 152-167 (lines=16) @@
149
	"""
150
	return fmin(fmax(rnd.normal(pop[ic], mr * task.bRange), task.Lower), task.Upper)
151
152
def CreepMutation(pop, ic, mr, task, rnd=rand):
153
	r"""Creep mutation method.
154
155
	Args:
156
		pop (numpy.ndarray[Individual]): Current population.
157
		ic (int): Index of current individual.
158
		mr (float): Mutation probability.
159
		task (Task): Optimization task.
160
		rnd (mtrand.RandomState): Random generator.
161
162
	Returns:
163
		numpy.ndarray: New genotype.
164
	"""
165
	ic, j = rnd.randint(len(pop)), rnd.randint(task.D)
166
	nx = [rnd.uniform(task.Lower[i], task.Upper[i]) if rnd.rand() < mr or i == j else pop[ic][i] for i in range(task.D)]
167
	return asarray(nx)
168
169
class GeneticAlgorithm(Algorithm):
170
	r"""Implementation of Genetic Algorithm.
@@ 120-135 (lines=16) @@
117
	x = alpha * pop[ic] + (1 - alpha) * pop[io]
118
	return x
119
120
def UniformMutation(pop, ic, mr, task, rnd=rand):
121
	r"""Uniform mutation method.
122
123
	Args:
124
		pop (numpy.ndarray[Individual]): Current population.
125
		ic (int): Index of current individual.
126
		mr (float): Mutation probability.
127
		task (Task): Optimization task.
128
		rnd (mtrand.RandomState): Random generator.
129
130
	Returns:
131
		numpy.ndarray: New genotype.
132
	"""
133
	j = rnd.randint(task.D)
134
	nx = [rnd.uniform(task.Lower[i], task.Upper[i]) if rnd.rand() < mr or i == j else pop[ic][i] for i in range(task.D)]
135
	return asarray(nx)
136
137
def MutationUros(pop, ic, mr, task, rnd=rand):
138
	r"""Mutation method made by Uros Mlakar.