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)