dream_test, a C++ code which calls dream() to implement the DREAM algorithm for accelerating Markov Chain Monte Carlo (MCMC) convergence using differential evolution.
The computer code and data files described and made available on this web page are distributed under the MIT license
dream, a C++ code 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.
PROBLEM0 is a small sample problem, in 10 dimensions, with a density that is the maximum of two gaussians centered at (-5,-5,...,-5) and (5,5,...,5).
PROBLEM1 is based on the first example in the Vrugt reference. The Vrugt version involves 100 variables, with a multidimensional normal distribution with specified mean vector and covariance matrix. So far, I have simply set up the user routines, with just 5 variables, and created a small stand-alone main program to test it. An important issue was to find a simple and efficient way of handling the covariance. We need to evaluate the matrix, compute its Cholesky factor, find its determinant, just one time, and then provide this information to any function that needs it, quickly and simply. In this version of the code, I opted to define a "Covariance" structure, making it an "extern" variable so the main program could access it.
PROBLEM1C is a version of PROBLEM1 that uses a class to store the covariance information, instead of a structure. I didn't like this approach, since it seemed like, every time I needed some information, I had to call a function and provide an array to store a copy of the information, rather than simply accessing the information directly.
PROBLEM2 is based on the second example in the Vrugt reference. The Vrugt version involves 10 variables, with a "twisted" Gaussian density function.