DREAM1
Markov Chain Monte Carlo acceleration by Differential Evolution
DREAM1
is a FORTRAN90 library which
is an older implementation of the DREAM algorithm for accelerating
Markov Chain Monte Carlo (MCMC) convergence using differential evolution,
by Guannan Zhang.
Using the DREAM1 library to solve a problem requires:
-
compiling a main program, for example, the DREAM1_test.FOR file;
-
linking the main program with the DREAM1 and RNGLIB libraries;
-
supplying two text files that define the input parameters and the
prior probability density function, such as the examples
given below.
A more recent version of the algorithm, with a simplified interface
involving 5 user functions, is available as DREAM.
Licensing:
The computer code and data files described and made available on this
web page are distributed under
the GNU LGPL license.
Languages:
DREAM1 is available in
a C version and
a C++ version and
a FORTRAN90 version.
Related Data and Programs:
DREAM,
a FORTRAN90 program which
implements the DREAM algorithm for accelerating
Markov Chain Monte Carlo (MCMC)
convergence using differential evolution,
using five user functions to define the problem, by Guannan Zhang.
DREAM0
a FORTRAN90 library which
is the original implementation of the DREAM algorithm for accelerating
Markov Chain Monte Carlo (MCMC) convergence using differential evolution,
by Guannan Zhang.
RANLIB,
a FORTRAN90 library which
produces random samples from Probability Density Functions (PDF's),
including Beta, Chi-square Exponential, F, Gamma, Multivariate normal,
Noncentral chi-square, Noncentral F, Univariate normal,
random permutations, Real uniform, Binomial, Negative Binomial,
Multinomial, Poisson and Integer uniform,
by Barry Brown and James Lovato.
RNGLIB,
a FORTRAN90 library 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;
modifications 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:
Examples and Tests:
Input files:
-
input.txt,
an input file, containing parameter values, read by INPUT_READ.
-
prior.txt,
an input file, defining the prior density functions for
the parameters, read by PRIOR_READ.
Output files:
-
chain001.txt,
an output file, containing the sample values for chain 1, written by CHAIN_WRITE.
-
chain002.txt,
an output file, containing the sample values for chain 2, written by CHAIN_WRITE.
-
chain003.txt,
an output file, containing the sample values for chain 3, written by CHAIN_WRITE.
-
chain004.txt,
an output file, containing the sample values for chain 4, written by CHAIN_WRITE.
-
chain005.txt,
an output file, containing the sample values for chain 5, written by CHAIN_WRITE.
-
chain006.txt,
an output file, containing the sample values for chain 6, written by CHAIN_WRITE.
-
chain007.txt,
an output file, containing the sample values for chain 7, written by CHAIN_WRITE.
-
chain008.txt,
an output file, containing the sample values for chain 8, written by CHAIN_WRITE.
-
chain009.txt,
an output file, containing the sample values for chain 9, written by CHAIN_WRITE.
-
chain010.txt,
an output file, containing the sample values for chain 10, written by CHAIN_WRITE.
-
gr.txt,
an output file, the Gelman-Rubin statistic file, created by GR_WRITE.
-
restart_write.txt,
an output file, containing restart information, written by RESTART_WRITE.
List of Routines:
-
CHAIN_INIT starts Markov chains from a prior distribution.
-
CHAIN_INIT_PRINT prints the initial values for Markov chains.
-
CHAIN_OUTLIERS identifies and modifies outlier chains during burn-in.
-
CHAIN_WRITE writes samples of each chain to separate files.
-
CR_DIS_UPDATE updates the CR distance.
-
CR_INDEX_CHOOSE chooses a CR value.
-
CR_INIT initializes the crossover probability values.
-
CR_PROB_UPDATE updates the CR probabilities.
-
DIFF_COMPUTE computes the differential evolution.
-
DREAM_ALGM gets a candidate parameter sample.
-
FILENAME_INC increments a partially numeric filename.
-
GET_UNIT returns a free FORTRAN unit number.
-
GR_COMPUTE computes the Gelman Rubin statistics R used to check convergence.
-
GR_INIT initializes Gelman-Rubin variables.
-
GR_WRITE writes Gelman-Rubin R statistics into a file.
-
I4_BINOMIAL_SAMPLE generates a binomial random deviate.
-
I4VEC_MULTINOMIAL_SAMPLE generates a multinomial random deviate.
-
INPUT_PRINT prints the data from the input file.
-
INPUT_READ reads the data from the input file.
-
INPUT_SIZE reads the parameter size variable from the input file.
-
JUMPRATE_CHOOSE chooses a jump rate from the jump rate table.
-
JUMPRATE_TABLE_INIT initializes the jump rate table.
-
JUMPRATE_TABLE_PRINT prints the jump rate table.
-
MNOR_INIT initializes information for multivariate normal prior densities.
-
MNOR_PROCESS sets data for the generation of multivariate normal deviates.
-
MNOR_READ reads a file for multivariate normal prior densities.
-
OB_READ reads observational data from a file.
-
PRIOR_DENSITY evaluates the prior density function.
-
PRIOR_PRINT prints information about the prior density.
-
PRIOR_READ reads information about the prior density.
-
PRIOR_SAMPLE samples from the prior distribution.
-
R8_BETA_PDF evaluates the PDF of a beta distribution.
-
R8_BETA_SAMPLE generates a beta random deviate.
-
R8_CHI_PDF evaluates the PDF of a chi-squared distribution.
-
R8_CHI_SAMPLE generates a Chi-Square random deviate.
-
R8_EXPONENTIAL_PDF evaluates the PDF of an exponential distribution.
-
R8_EXPONENTIAL_SAMPLE samples the exponential PDF.
-
R8_EXPONENTIAL_01_SAMPLE samples the standard exponential PDF.
-
R8_GAMMA_LOG evaluates the logarithm of the gamma function.
-
R8_GAMMA_PDF evaluates the PDF of a gamma distribution.
-
R8_GAMMA_SAMPLE generates a Gamma random deviate.
-
R8_GAMMA_01_SAMPLE samples the standard Gamma distribution.
-
R8_INVCHI_PDF evaluates the PDF of an inverse chi-squared distribution.
-
R8_INVGAM_PDF evaluates the PDF of an inverse gamma distribution.
-
R8_MNOR_PDF evaluates the PDF of a multivariate normal distribution.
-
R8_NORMAL_PDF evaluates the PDF of a normal distribution.
-
R8_NORMAL_SAMPLE generates a normal random deviate.
-
R8_NORMAL_01_SAMPLE returns a unit pseudonormal R8.
-
R8_ROUND_I4 sets an R8 to the nearest integral value, returning an I4
-
R8_SCINVCHI_PDF: PDF for a scaled inverse chi-squared distribution.
-
R8_UNIFORM_PDF evaluates the PDF of a uniform distribution.
-
R8_UNIFORM_SAMPLE generates a uniform random deviate.
-
R8_UNIFORM_01_SAMPLE generates a uniform random deviate from [0,1].
-
R8MAT_POFA factors a real symmetric positive definite matrix.
-
R8VEC_COPY copies an R8VEC.
-
R8VEC_HEAP_D reorders an R8VEC into an descending heap.
-
R8VEC_MNOR_SAMPLE generates a multivariate normal deviate.
-
R8VEC_SORT_HEAP_A ascending sorts an R8VEC using heap sort.
-
RESTART_READ reads parameter sample data from a restart file.
-
RESTART_WRITE writes a restart file.
-
SAMPLE_CANDIDATE generates candidate parameter samples.
-
SAMPLE_LIMITS enforces limits on a sample variable.
-
STD_COMPUTE computes the current standard deviations, for each parameter.
-
TIMESTAMP prints the current YMDHMS date as a time stamp.
You can go up one level to
the FORTRAN90 source codes.
Last revised on 30 April 2013.