bilby.core.sampler.dynesty_utils.propose_differetial_evolution

bilby.core.sampler.dynesty_utils.propose_differetial_evolution(u, live, n, n_cluster, rstate, mix=0.5, scale=1)[source]

Propose a new point using ensemble differential evolution (ter Braak + (2006)).

uprop=u+γ(vavb)

We consider two choices for γ: weighted by mix.

  • γ=1: this is a mode-hopping mode for efficiently exploring multi-modal spaces

  • γΓ(γ;k=4,θ=κ4)

Here κ=2.38/2n unless specified by the user and we scale by a random draw from a Gamma distribution. The specific distribution was chosen somewhat arbitrarily to have mean and mode close to κ and give good acceptance and autocorrelation times on a subset of problems.

Parameters:
u: np.ndarray

The current point.

live: np.ndarray

The ensemble of live points to select v from.

n: int

The number of dimensions being explored

n_cluster: int

The number of dimensions to run the differential evolution over, the first n_cluster dimensions are used. The rest are randomly sampled from the prior.

rstate: np.random.RandomState

The random state to use to generate random numbers.

mix: float

The fraction of proposed points that should follow the specified scale rather than mode hopping. default=0.5

scale: float

The amount to scale the difference vector by. default = 2.38 / (2 * n_cluster)**0.5)

Returns:
u_prop: np.ndarray

The proposed point.