@@ -124,3 +124,32 @@ As for all approximate importance sampling techniques, the Rosenbluth method run

## Pruned-enriched Rosenbluth method (PERM)

### Description of the method

To overcome this imbalance in weights, [Grassberger](https://doi.org/10.1103/PhysRevE.56.3682) introduced a pruning and enriching steps to the Rosenbluth method to improve balance.

In particular, after adding a subunit to a polymer such that the current length is $L'$, the following two steps are performed for every polymer $k$:

1.*Pruning*: If the weight $w_k^{(L')} < W_-^{(L')}$$, one of the following two actions is performed. Which of the two is performed is chosen randomly with equal probability (i.e. (a) with probability $1/2$ and (b) with probability $1/2$)

a. the polymer $k$ is discarded.

That means the current polymer length $L'$ is discarded and not used to grow further. However, the previous lengths of the polymer $k$ are still used for the averages for length $<L'$.

b. The weight $w_k^{(L')}$ is doubled: $w_k^{(L'), \text{new}} = 2 w_k^{(L')}$.

This new weight is used to compute the average for length $L'$ and used to compute the weight of the polymer when grown further: e.g. if in the next step there are $m_{k, L'+1}$ possibilities to place the subunit, $w_k^{(L'+1)} = m_{k, L'+1}\, w_k^{(L'), \text{new}}$, etc.

2.*Enrichment*: If the weight $w_k^{(L')} > W_+^{(L')}$, the polymer is copied, i.e. a second copy of this polymer is added for length $L'$. The original and the copy are assigned half of the original weight, these new weights and used for all computations of averages of length $L'$ and larger.

### Why does PERM work?

The pruning and enrichment steps are designed such that, regardless of the values of $W_-^{(L')}$ and $W_+^{(L')}$, *the weighted average (2) does not change on average*: copying the polymer halfs the weight, and discarding half of a set of polymers doubles the weight of the other half. Hence, the pruning and enriching steps do not change the results, showing the correctness of the approach.

Obviously, PERM aims to improve on the Rosenbluth method by decreasing the number of polymers with low weight (that don't contribute much to the average although they are as expensive in computing time), and at the same time enhancing the number of promising polymers. The degree to which this is done is controlled by $W_-^{(L')}$ and $W_+^{(L')}$.

When choosing these values, it is important to realize that there is a balance. Pruning and enriching too little gives little improvement over Rosenbluth. But doing it too aggressively also is problematic! Then most polymers in the simulation are generated from a few original specimens, so that all of them become highly correlated, increasing the error in the simulation result again (we then loose the advantage of Rosenbluth that guaranteed statistically independent polymers in our sampling).

where $\bar{W}^{(L')}$ is the average weight of the polymers at length $L'$. He

mentions $c_+/c_- \approx 10$ being a good choice, but claims that the method is not very sensitive to the exact choice.

### Calculating the error of the computed mean

With PERM, we are undoubtably introducing correlations into the system. Unfortunately, there does not seem an easy way to account for this when computing the error of the average.

If pruning and enriching is not overdone, most of the polymers will still be uncorrelated. From a practical perspective it thus seems to be justified to use the [methods for estimating the error of the average computed with the Rosenbluth method](#how-to-compute-the-error-of-a-weighted-average)