Coverage for moptipy / operators / intspace / op0_random.py: 94%
16 statements
« prev ^ index » next coverage.py v7.13.0, created at 2025-12-15 11:18 +0000
« prev ^ index » next coverage.py v7.13.0, created at 2025-12-15 11:18 +0000
1"""
2A nullary operator filling an integer list with random values.
4>>> from moptipy.utils.nputils import rand_generator
5>>> gen = rand_generator(12)
7>>> space = IntSpace(4, -2, 2)
8>>> op = Op0Random(space)
9>>> xx = space.create()
11>>> op.op0(gen, xx)
12>>> xx
13array([-1, 2, 2, 1], dtype=int8)
14>>> op.op0(gen, xx)
15>>> xx
16array([-2, -2, -1, -1], dtype=int8)
17>>> op.op0(gen, xx)
18>>> xx
19array([ 1, 0, -2, 2], dtype=int8)
21>>> space = IntSpace(5, 12000, 20000)
22>>> op = Op0Random(space)
23>>> xx = space.create()
25>>> op.op0(gen, xx)
26>>> xx
27array([15207, 19574, 18014, 12515, 14406], dtype=int16)
28>>> op.op0(gen, xx)
29>>> xx
30array([16080, 13596, 13434, 14148, 16655], dtype=int16)
31"""
34from typing import Final
36import numpy as np
37from numpy.random import Generator
38from pycommons.types import type_error
40from moptipy.api.operators import Op0
41from moptipy.spaces.intspace import IntSpace
44class Op0Random(Op0):
45 """Fill a bit string with random values."""
47 def __init__(self, space: IntSpace) -> None:
48 """
49 Create the Nullary Integer-Space operator.
51 :param space: the integer space
52 """
53 if not isinstance(space, IntSpace):
54 raise type_error(space, "space", IntSpace)
55 #: the inclusive lower bound
56 self.__lb: Final[int] = space.min_value
57 #: the exclusive upper bound
58 self.__ub: Final[int] = space.max_value + 1
60 def op0(self, random: Generator, dest: np.ndarray) -> None:
61 """
62 Fill the string `dest` with random values.
64 :param random: the random number generator
65 :param dest: the bit string to fill. Afterward, its contents will
66 be random.
67 """
68 np.copyto(dest, random.integers(
69 self.__lb, self.__ub, dest.shape, dest.dtype))
71 def __str__(self) -> str:
72 """
73 Get the name of this operator.
75 :return: "uniform"
76 """
77 return "uniform"