# Bumps documentation

## diffev - Differential evolution MCMC stepper

`de_step` | Generates offspring using METROPOLIS HASTINGS monte-carlo markov chain

Differential evolution MCMC stepper.

bumps.dream.diffev.de_step(Nchain, pop, CR, max_pairs=2, eps=0.05, snooker_rate=0.1, noise=1e-06, scale=1.0)

  Generates offspring using METROPOLIS HASTINGS monte-carlo markov chain

  Nchain is the number of simultaneous changes that are running.

  pop is an array of shape [Npop x Nvar] providing the active points used to generate the next proposal for each chain. This may be larger than the Nchains if the caller is using ancestor generations for active population. The current population is assumed to be the first Nchain rows of pip..

  CR is an array of [Ncrossover x 2] crossover ratios with weights. The crossover ratio is the probability of selecting a particular dimension when generating the difference vector. The weights are used to select the crossover ratio. The weights are adjusted dynamically during the fit based on the acceptance rate of points generated with each crossover ratio.

  max_pairs determines the maximum number of pairs which contribute to the differential evolution step. The number of pairs is chosen at random, with the difference vectors between the pairs averaged when creating the DE step.

  eps determines the jitter added to the DE step.

  snooker_rate determines the probability of using the snooker stepper. Otherwise use DE stepper 80% of the time, or apply the difference between pairs the other 20% of the time.

  scale=1 scales the difference vector (constant, not stochastic)

  noise=1e-6 adds random noise to the non-zero components of the difference vector. This noise is relative rather than absolute to allow for parameter values far from 1.0. Noise is also scaled by scale.