Source code for cbx.utils.particle_init
import numpy as np
[docs]
def init_particles(shape=(1,1,1), x_min=-1.0, x_max = 1.0, delta=1.0, method="uniform"):
r"""Initialize particles
Parameters
----------
N : int, optional
Number of particles. The default is 100.
d : int, optional
Dimension of the particles. The default is 2.
x_min : float, optional
Lower bound for the uniform distribution. The default is 0.0.
x_max : float, optional
Upper bound for the uniform distribution. The default is 1.0.
delta : float, optional
Standard deviation for the normal distribution. The default is 1.0.
method : str, optional
Method for initializing the particles. The default is "uniform".
Possible values: "uniform", "normal"
Returns
-------
x : numpy.ndarray
Array of particles of shape (N, d)
"""
if method == "uniform":
x = np.random.uniform(x_min, x_max, shape)
elif method == "normal":
if len(shape) == 3:
M, N, d = shape
elif len(shape) == 2:
N, d = shape
M = 1
else:
raise RuntimeError('Normal initialization only supported for 2D or 3D shapes!')
x = np.random.multivariate_normal(np.zeros((d,)), delta * np.eye(d), (M, N))
else:
raise RuntimeError('Unknown method for init_particles specified!')
return x