| @@ 83-97 (lines=15) @@ | ||
| 80 | ||
| 81 | if ukwargs: logger.info('Unused arguments: %s' % (ukwargs)) |
|
| 82 | ||
| 83 | def repair(self, x, task): |
|
| 84 | r"""Repair solution to search space. |
|
| 85 | ||
| 86 | Args: |
|
| 87 | x (numpy.ndarray): Solution to fix. |
|
| 88 | task (Task): Optimization task. |
|
| 89 | ||
| 90 | Returns: |
|
| 91 | numpy.ndarray: fixed solution. |
|
| 92 | """ |
|
| 93 | ir = where(x > task.Upper) |
|
| 94 | x[ir] = task.Lower[ir] + x[ir] % task.bRange[ir] |
|
| 95 | ir = where(x < task.Lower) |
|
| 96 | x[ir] = task.Lower[ir] + x[ir] % task.bRange[ir] |
|
| 97 | return x |
|
| 98 | ||
| 99 | def levy(self, D): |
|
| 100 | r"""Levy function. |
|
| @@ 244-258 (lines=15) @@ | ||
| 241 | """ |
|
| 242 | return self.Mapping(x + self.rand(task.D) * self.normal(1, 1, task.D), task) |
|
| 243 | ||
| 244 | def Mapping(self, x, task): |
|
| 245 | r"""Fix value to bounds.. |
|
| 246 | ||
| 247 | Args: |
|
| 248 | x (numpy.ndarray): Individual to fix. |
|
| 249 | task (Task): Optimization task. |
|
| 250 | ||
| 251 | Returns: |
|
| 252 | numpy.ndarray: Individual in search range. |
|
| 253 | """ |
|
| 254 | ir = where(x > task.Upper) |
|
| 255 | x[ir] = task.Lower[ir] + x[ir] % task.bRange[ir] |
|
| 256 | ir = where(x < task.Lower) |
|
| 257 | x[ir] = task.Lower[ir] + x[ir] % task.bRange[ir] |
|
| 258 | return x |
|
| 259 | ||
| 260 | def R(self, x, FW): |
|
| 261 | r"""Calculate ranges. |
|