polarcbo.dynamic.EMCBO

class polarcbo.dynamic.EMCBO(x, V, noise, beta=1.0, tau=0.01, lamda=1.0, sigma=0.1, num_components=1.0, lower_thresh=0.0)[source]

Bases: ParticleDynamic

EMCBO class

This class implements the EM CBO algorithm. The algorithm is described in detail in [1]. The algorithm is a variant of the CBO algorithm that uses a Gaussian mixture model to approximate the distribution of the particles. The algorithm is initialized with a set of particles and a set of weights. The weights are used to initialize the Gaussian mixture model. The algorithm then proceeds to update the particles according to the following rule:

\[x_{k+1} = x_k - \lambda \tau \nabla \log p(x_k) + \sigma \mathcal{N}(0,I)\]

where \(\lambda\) is the learning rate, \(\tau\) is the time step, \(\sigma\) is the noise parameter and \(\mathcal{N}(0,I)\) is a zero-mean isotropic Gaussian distribution.

Parameters:
  • x (array_like) – The initial positions of the particles. For a system of \(J\) particles, the i-th row of this array x[i,:] represents the position \(x_i\) of the i-th particle.

  • V (obejective) – The objective function \(V(x)\) of the system.

  • beta (float, optional) – The heat parameter \(\beta\) of the system. The default is 1.0.

  • tau (float, optional) – The time constant \(\tau\) of the noise model. The default is 0.01.

  • lamda (float, optional) – The learning rate \(\lambda\) of the algorithm. The default is 1.0.

  • sigma (float, optional) – The noise parameter \(\sigma\) of the algorithm. The default is 0.1.

  • num_components (int, optional) – The number of components of the Gaussian mixture model. The default is 1.

  • lower_thresh (float, optional) – The lower threshold of the covariance matrix of the Gaussian mixture model. The default is 0.0.

References

set_logp()[source]

Set the log probability of the particles

Return type:

None.

compute_mean()[source]

Compute the mean of the particles

Returns:

m_beta – The mean of the particles.

Return type:

array_like

step(time=0.0)[source]

Perform a single step of the algorithm

Parameters:

time (float, optional) – The current time of the algorithm. The default is 0.0.

Return type:

None.