Source code for moptipy.operators.bitstrings.op1_flip1

"""A unary operator flipping exactly one bit."""
from typing import Final

import numpy as np
from numpy.random import Generator

from moptipy.api.operators import Op1


[docs] class Op1Flip1(Op1): """A unary search operation that flips exactly one bit."""
[docs] def op1(self, random: Generator, dest: np.ndarray, x: np.ndarray) -> None: """ Copy `x` into `dest` and flip exactly one bit. :param self: the self pointer :param random: the random number generator :param dest: the destination array to receive the new point :param x: the existing point in the search space """ np.copyto(dest, x) # copy source to destination idx: Final[int] = random.integers(len(x)) # get bit index dest[idx] = not dest[idx] # flip bit
def __str__(self) -> str: """ Get the name of this unary operator. :return: "flip1" """ return "flip1"