I'm writing a computer simulation code to model a system of non-spherically symmetric molecules, meaning that their state are described by both angular and translational components.

In typical Monte Carlo simulations with only translational motion, it's common to adjust the maximum translation displacement distance until about 50% of the trial moves are accepted. This technique ensures that the simulation explores the configuration space efficiently without getting stuck in local minima or moving too erratically.

However, in my system, I need to update both translational and angular positions. Is there a standard or simple algorithm that can guide me to make a reasonable choice for both the maximum displacement distance and the maximum rotation angle, simultaneously?

  • $\begingroup$ Just to be absolutely clear are (parts of) the molecules modelled as rigid bodies, or are they totally flexible? $\endgroup$
    – Ian Bush
    Aug 16 at 18:56
  • $\begingroup$ Yes, the molecules are modeled as rigid bodies. $\endgroup$ Aug 17 at 10:55

1 Answer 1


A valid Metropolis Monte Carlo simulation requires you to calculate the relative probability of proposing a forward move to a reverse move -- that is the probability that a move from A to B would be proposed, divided by the probability that a move from B to A would be proposed.

You may not have thought about that before but that's because spatial Monte Carlo is straightforward: if the proposal distribution is spatially symmetric (a move 1 unit to the right will be proposed as often as a move 1 unit to the left), then this ratio is simply 1 by construction and we never have to worry about multiplying by it.

With any symmetric scheme for proposing angular moves (rotating 20 degrees left is proposed as often as rotating 20 degrees right) the same is true (the forward-reverse ratio is 1), so you are free to tune the angular proposal scheme any way you like as long as it remains symmetric.

To maintain the total acceptance ratio at 50%, then, you have two options:

  1. Set parameters so that of all translational moves proposed, 50% are accepted, and of all rotational moves proposed, 50% are accepted. Then you can independently optimise how often you propose a translational move or a rotational move (for best mixing) and know that the total acceptance ratio will remain around 50%.
  2. If a particular category of moves is very difficult to accept then you will just have to sample it less often. For example, if rotational moves are only accepted 20% of the time at best, then you might tune translational moves to be accepted 60% of the time, and then propose translational moves 80% of the time to achieve a total acceptance ratio of 60% × 80% (trans) + 20% × 20% (rot) which is approximately 50%.

Finally, it is always worth considering whether you should just reuse someone else's software -- such as GOMC.

  • $\begingroup$ Thank you for your answer. So, is the first phenomenon you are describing known as 'detailed balance'? I've read that it is easy to introduce systemic bias when using an angular sampling scheme. Do you have any comments on the specific angles for which you can use the angular sampling scheme described above? I've also read somewhere that you cannot simply add or subtract angles, especially if you are using Euler angles to describe the rotation of your molecules. I might be misunderstanding something. $\endgroup$ Aug 17 at 11:06
  • $\begingroup$ This is not my area of expertise, so I don't have much more information for you, sadly. :) $\endgroup$ Aug 19 at 5:13

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .