Open davidkleiven opened 6 years ago
To implement this one could create a new class
class ParallelTempering(object):
that takes minimum temperature, maximum temperature, number of temperature and a reference Montecarlo object as arguments. It makes copies of this Montecarlo and holds a list of such Montecarlo objects, one at each temperature.
We should support automatic assignment of temperature (given a temperature range). One option is maybe iteratively solving Eq. (5) of the paper by Earl et al. starting from the highest temperature. When finding the temperatures, one can just do a very quick scan with not too many MC step to get an approximate value for the average energy.
A first version has been implemented. Not tested with MPI.
Improve exploration of the configurational space via parallel tempering. A good introduction
essentially the system can exchange replica between different temperatures. If a user anyways are interested in a range of temperatures, this approach should improve the accuracy without increasing the computational effort.