dream
dream,
an Octave code which
implements the DREAM algorithm for accelerating
Markov Chain Monte Carlo (MCMC) convergence using differential evolution,
by Guannan Zhang.
dream() requires user input in the form of five functions:
-
problem_size(), defines the sizes of problem parameters;
-
problem_value(), defines the value of problem parameters;
-
prior_density(), evaluates the prior distribution;
-
prior_sample(), samples the prior distribution;
-
sample_likelihood(), evaluates the log likelihood function.
Examples of such user input are listed below.
dream() requires access to the
pdflib() library, which can evaluate a variety of Probability
Density Functions (PDF) and produce samples from them.
The user may wish to invoke this library when constructing
some of the user functions.
dream() requires access to the
rnglib() library, in order to generate random numbers.
dream() was originally developed by Guannan Zhang, of
Oak Ridge National Laboratory (ORNL); it has been incorporated into
the DAKOTA package of Sandia National Laboratory, and forms
part of the ORNL package known as TASMANIAN.
Web Link:
A version of dream() is available in
https://tasmanian.ornl.gov,
the TASMANIAN library, available from Oak Ridge National Laboratory.
Licensing:
The computer code and data files described and made available on this
web page are distributed under
the MIT license
Languages:
dream is available in
a C version and
a C++ version and
a Fortran90 version and
a MATLAB versionand
an Octave version.
Related Data and Programs:
dream_test
pdflib,
an Octave library which
evaluates Probability Density Functions (PDF's)
and produces random samples from them,
including beta, binomial, chi, exponential, gamma, inverse chi,
inverse gamma, multinomial, normal, scaled inverse chi, and uniform.
rnglib,
an Octave code which
implements a random number generator (RNG) with splitting facilities,
allowing multiple independent streams to be computed,
by L'Ecuyer and Cote.
Author:
Original FORTRAN90 version by Guannan Zhang;
This version by John Burkardt.
Reference:
-
Pierre LEcuyer, Serge Cote,
Implementing a Random Number Package with Splitting Facilities,
ACM Transactions on Mathematical Software,
Volume 17, Number 1, March 1991, pages 98-111.
-
Jasper Vrugt, CJF ter Braak, CGH Diks, Bruce Robinson, James Hyman,
Dave Higdon,
Accelerating Markov Chain Monte Carlo Simulation by Differential
Evolution with Self-Adaptive Randomized Subspace Sampling,
International Journal of Nonlinear Sciences and Numerical
Simulation,
Volume 10, Number 3, March 2009, pages 271-288.
Source Code:
-
chain_init.m,
starts Markov chains from a prior distribution.
-
chain_init_print.m,
prints the initial values for Markov chains.
-
chain_outliers.m,
identifies and modifies outlier chains during burn-in.
-
chain_write.m,
writes samples of each chain to separate files.
-
cr_disupdate.m,
updates the CR distance.
-
cr_index_choose.m,
chooses a CR value.
-
cr_init.m,
initializes the crossover probability values.
-
cr_prob_update.m,
updates the CR probabilities.
-
diff_compute.m,
computes the differential evolution.
-
dream.m,
the main program.
-
dream_algm.m,
gets a candidate parameter sample.
-
filename_inc.m,
increments a partially numeric filename.
-
gr_compute.m,
computes the Gelman Rubin statistics R used to check convergence.
-
gr_init.m,
initializes Gelman-Rubin variables.
-
gr_write.m,
writes the Gelman-Rubin R statistics into a file.
-
i4mat_print.m,
prints an I4MAT.
-
i4mat_print_some.m,
prints some of an I4MAT.
-
i4vec_transpose_print.m,
prints an I4VEC "transposed".
-
input_print.m,
prints the data from the input file.
-
jumprate_choose.m,
chooses a jump rate from the jump rate table.
-
jumprate_table_init.m,
initializes the jump rate table.
-
jumprate_table_init.m,
prints the jump rate table.
-
r8vec_transpose_print.m,
prints an R8VEC "transposed".
-
restart.m,
reads parameter sample data from a restart file.
-
restart_write.m,
writes a restart file.
-
sample_candidate.m,
generates candidate parameter samples.
-
sample_limits.m,
enforces limits on a sample variable.
-
std_compute.m,
computes the current standard deviations, for each parameter.
Last revised on 09 January 2019.