sampling.design.generate_clustered_design

sampling.design.generate_clustered_design(
    bounds,
    n_design,
    n_clusters,
    seed=None,
)

Generates a clustered design.

Generates clusters of points using sklearn.datasets.make_blobs. Points are scaled to the provided bounds.

Parameters

Name Type Description Default
bounds Union[List[Tuple[float, float]], np.ndarray] Design space bounds. required
n_design int The number of points to generate. required
n_clusters int The number of clusters. required
seed Optional[Union[int, Generator]] Random seed or generator. None

Returns

Name Type Description
np.ndarray np.ndarray: A 2D array of shape (n_design, n_dim) with clustered points.

Examples

>>> import numpy as np
>>> from spotoptim.sampling.design import generate_clustered_design
>>> bounds = [(-5, 5), (0, 10)]
>>> X = generate_clustered_design(bounds, n_design=5, n_clusters=2, seed=42)
>>> X.shape
(5, 2)
>>> np.all((X >= [-5, 0]) & (X <= [5, 10]))
True