|
@@ 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. |