For any state variable $s_t$ (such as an evolution path or a covariance matrix component), the update follows this linear recursive form:
$$s_t = (1 - c)s_{t-1} + c \cdot x_t$$
Where:
To see the underlying structure, we can expand (unroll) the recursion. By substituting the expression for $s_{t-1}$ into the equation for $s_t$, we get:$$s_t = c x_t + (1-c)[c x_{t-1} + (1-c)s_{t-2}]$$$$s_t = c x_t + c(1-c)x_{t-1} + (1-c)^2 s_{t-2}$$If we continue this back to the initial state $s_0$, the formula becomes a weighted sum:$$s_t = c \sum_{i=0}^{t-1} (1-c)^i x_{t-i} + (1-c)^t s_0$$
The weight of each past observation $x_{t-i}$ is $c(1-c)^i$. Since $(1-c)$ is less than 1, these weights decay exponentially (with exponent $i$) as the information gets older. Because the constant base $(1-c)$ is between 0 and 1, the contribution of each generation shrinks by a fixed percentage for every step we look back in time. This ensures that while the algorithm "remembers" the past, it prioritizes recent discoveries and naturally "forgets" outdated information.
The "time horizon" $\tau$ represents the average age of the data influencing the current state. We calculate this by taking the weighted average of the age $i$:$$\tau = \sum_{i=0}^{\infty} i \cdot c(1-c)^i$$Using the geometric series identity $\sum_{i=0}^{\infty} i r^i = \frac{r}{(1-r)^2}$ where $r = (1-c)$:$$\tau = c \cdot \frac{(1-c)}{(1-(1-c))^2} = c \cdot \frac{1-c}{c^2} = \frac{1-c}{c}$$For the small learning rates typically used in optimization ($c \ll 1$), we approximate the horizon as:$$\tau \approx \frac{1}{c}$$
Comparison of Memory Horizons: