Noise types

Isotropic noise

By default, Consensus-Based Optimisation uses so-called isotropic noise (option noise = :IsotropicNoise), given by

\[\mathrm{d}x_t^i = \cdots + \sqrt{2\sigma^2} \left\| x_t^i - c_\alpha(x_t) \right\| \mathrm{d}B_t^i,\]

where $B_t^i$ are independent Brownian motions in $D$ dimensions. The intensity of the noise depends on the distance of each particle to the consensus point, $\left\| x_t^i - c_\alpha(x_t) \right\|$.

Full example
using ConsensusBasedX
f(x) = ConsensusBasedX.Ackley(x, shift = 1)
config = (; D = 2, noise = :IsotropicNoise)
minimise(f, config)

Anisotropic noise

ConsensusBasedX.jl also offers anisotropic noise, given by

\[\mathrm{d}x_t^i = \cdots + \sqrt{2\sigma^2} \operatorname*{diag} \left( x_t^i - c_\alpha(x_t) \right) \mathrm{d}B_t^i,\]

The intensity of the noise now varies along each dimension. This can be selected with the option noise = :AnisotropicNoise.

Full example
using ConsensusBasedX
f(x) = ConsensusBasedX.Ackley(x, shift = 1)
config = (; D = 2, noise = :AnisotropicNoise)
minimise(f, config)