Source code for moptipy.operators.vectors.op0_uniform
"""A nullary operator filling a vector with uniformly distribute values."""
from typing import Final
import numpy as np
from numpy.random import Generator
from pycommons.types import type_error
from moptipy.api.operators import Op0
from moptipy.spaces.vectorspace import VectorSpace
from moptipy.utils.logger import KeyValueLogSection
[docs]
class Op0Uniform(Op0):
"""Fill a vector with uniformly distributed random values."""
def __init__(self, space: VectorSpace) -> None:
"""
Initialize the operator.
:param space: the vector space
"""
super().__init__()
if not isinstance(space, VectorSpace):
raise type_error(space, "space", VectorSpace)
#: store the space
self.space: Final[VectorSpace] = space
def __str__(self) -> str:
"""
Get the name of this operator.
:returns: the name of this space
"""
return "uniform"
[docs]
def op0(self, random: Generator, dest: np.ndarray) -> None:
"""
Fill the string `dest` with random values.
:param random: the random number generator
:param dest: the vector to be filled. Afterwards it contains uniformly
distributed random values
"""
sp: Final[VectorSpace] = self.space
np.copyto(dest, random.uniform(
sp.lower_bound, sp.upper_bound, sp.dimension))
[docs]
def log_parameters_to(self, logger: KeyValueLogSection) -> None:
"""
Log the parameters of this operator to the given logger.
:param logger: the logger for the parameters
"""
super().log_parameters_to(logger)
self.space.log_bounds(logger)