Method
This commit is contained in:
parent
c6866453d7
commit
d29f74984b
@ -211,52 +211,54 @@ E_{(T)} = \sum_{abc} E^{abc} \text{, where }
|
|||||||
E^{abc} = \sum_{ijk} E_{ijk}^{abc}.
|
E^{abc} = \sum_{ijk} E_{ijk}^{abc}.
|
||||||
\end{equation}
|
\end{equation}
|
||||||
|
|
||||||
Monte Carlo sampling is employed by selecting samples $E_{abc}$.
|
Monte Carlo sampling is employed by selecting samples $E^{abc}$.
|
||||||
The principal advantage of this formulation is that the number of triplet combinations $(a,b,c)$, given by $N_v^3$, is sufficiently small to allow for all contributions $E_{abc}$ to be stored in memory.
|
The principal advantage of this formulation is that the number of triplet combinations $(a,b,c)$, given by $N_v^3$, is sufficiently small to allow for all contributions $E^{abc}$ to be stored in memory.
|
||||||
The first time a triplet $(a,b,c)$ is drawn, its corresponding value $E_{abc}$ is computed and then stored.
|
The first time a triplet $(a,b,c)$ is drawn, its corresponding value $E^{abc}$ is computed and then stored.
|
||||||
Subsequent drawings of the same triplet retrieve the value from memory. We refer to this technique as \emph{memoization}.
|
Subsequent drawings of the same triplet retrieve the value from memory. We refer to this technique as \emph{memoization}.
|
||||||
Thus, the computational expense of calculating the sample, which scales as $N_\text{o}^3 \times N_\text{v}$, is incurred only once, with all subsequent accesses being computationally trivial.
|
Thus, the computational expense of calculating the sample, which scales as $N_\text{o}^3 \times N_\text{v}$, is incurred only once, with all subsequent accesses being computationally trivial.
|
||||||
Consequently, employing a sufficient number of Monte Carlo samples to ensure that each contribution is selected at least once results in a total computational cost that is only negligibly higher than that of an exact computation.
|
Consequently, employing a sufficient number of Monte Carlo samples to ensure that each contribution is selected at least once results in a total computational cost that is only negligibly higher than that of an exact computation.
|
||||||
|
|
||||||
|
|
||||||
To reduce the variance of the samples, the samples are drawn using the
|
To reduce the variance, the samples are drawn using the probability
|
||||||
probability
|
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
P(a,b,c) = \frac{1}{\mathcal{N}} \frac{1}{\bar{\epsilon}_{ijk} - \epsilon_a - \epsilon_b - \epsilon_c}
|
P^{abc} = \frac{1}{\mathcal{N}} \frac{1}{|\epsilon_a + \epsilon_b + \epsilon_c|}
|
||||||
\end{equation}
|
\end{equation}
|
||||||
where $\mathcal{N}$ normalizes the sum such that $\sum P(a,b,c) = 1$. Here, $\bar{\epsilon}_{ijk}$ represents the average energy of the occupied orbitals, calculated as follows:
|
where $\mathcal{N}$ normalizes the sum such that $\sum_{abc} P^{abc} = 1$.
|
||||||
|
The perturbative contribution is then evaluated as an average over $M$ samples
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
\bar{\epsilon}_{ijk} = \frac{3}{N_\text{o}} \sum_{i=1}^{N_\text{o}} \epsilon_i.
|
E_{(T)} = \left\langle \frac{E^{abc}}{P^{abc}} \right \rangle_{P^{abc}} =
|
||||||
|
\lim_{M \to \infty} \sum_{abc} \frac{n^{abc}}{M} \frac{E^{abc}}{P^{abc}}.
|
||||||
\end{equation}
|
\end{equation}
|
||||||
The perturbative contribution is then computed by
|
where $n^{abc}$ is the number of times the triplet $(a,b,c)$ was drawn with probability $P^{abc}$.
|
||||||
\begin{equation}
|
|
||||||
E_{(T)} = \mathcal{N} \sum_{abc} P(a,b,c) \, E^{abc} \,
|
|
||||||
(\bar{\epsilon}_{ijk} - \epsilon_a - \epsilon_b - \epsilon_c).
|
|
||||||
\end{equation}
|
|
||||||
This approach effectively reduces the statistical error bars by approximately a factor of two for the same computational expense due to two primary reasons: i) the estimator exhibits reduced fluctuations, ii) some triplet combinations are more likely to be selected than others, enhancing the efficiency of memoization.
|
|
||||||
|
|
||||||
We employ the inverse transform sampling technique to select samples, where an array of pairs $\qty(P(a,b,c), (a,b,c))$ is stored.
|
This approach effectively reduces the statistical error bars by approximately a factor of two for the same computational expense due to two primary reasons: i) the estimator exhibits reduced fluctuations, ii) triplet combinations with low-energy orbitals are significantly more likely to be selected than others, enhancing the efficiency of memoization.
|
||||||
To further reduce the variance of the samples, this array is sorted in descending order based on $P(a,b,c)$ and subsequently partitioned into buckets, $B$.
|
|
||||||
Each bucket is designed such that the sum $\sum_{(a,b,c) \in B} P(a,b,c)$ within it is as uniform
|
We employ the inverse transform sampling technique to select samples, where an array of pairs $\qty(P^{abc}, (a,b,c))$ is stored.
|
||||||
|
To further reduce the variance of the samples, this array is sorted in descending order based on $P^{abc}$ and subsequently partitioned into buckets, $B$.
|
||||||
|
Each bucket is designed such that the sum $\sum_{(a,b,c) \in B} P^{abc}$ within it is as uniform
|
||||||
as possible across all buckets.
|
as possible across all buckets.
|
||||||
As each bucket is equiprobable, samples are defined as combinations of triplets, with one triplet drawn from each bucket.
|
As each bucket is equiprobable, samples are defined as combinations of triplets, with one triplet drawn from each bucket.
|
||||||
Should the values of $E_{abc}$ be skewed, this advanced refinement significantly diminishes the variance.
|
Should the values of $E^{abc}$ be skewed, this advanced refinement significantly diminishes the variance.
|
||||||
|
|
||||||
|
|
||||||
The total perturbative contribution is computed as the aggregate of contributions from various buckets:
|
The total perturbative contribution is computed as the aggregate of contributions from various buckets:
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
E_{(T)} = \sum_B E_B = \sum_B\sum_{(a,b,c) \in B} E_{abc}.
|
E_{(T)} = \sum_B E_B = \sum_B\sum_{(a,b,c) \in B} E^{abc}.
|
||||||
\end{equation}
|
\end{equation}
|
||||||
Once every triplet within a bucket $B$ has been drawn at least once, the contribution $E_B$ can be determined.
|
Once every triplet within a bucket $B$ has been drawn at least once, the contribution $E_B$ can be determined.
|
||||||
At this juncture, there is no longer a necessity to evaluate \(E_B\) stochastically, and the buckets can be categorized into stochastic ($\mathcal{S}$) and deterministic ($\mathcal{D}$) groups:
|
At this juncture, there is no longer a necessity to evaluate \(E_B\) stochastically, and the buckets can be categorized into stochastic ($\mathcal{S}$) and deterministic ($\mathcal{D}$) groups:
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
E_{(T)} = \sum_{B \in \mathcal{D}} E_B + \frac{1}{|\mathcal{S}|} \sum_{B \in \mathcal{S}}
|
E_{(T)} = \sum_{B \in \mathcal{D}} E_B + \frac{1}{|\mathcal{S}|} \sum_{B \in \mathcal{S}}
|
||||||
\left \langle E^B_{abc} \times \frac{- \epsilon_a - \epsilon_b - \epsilon_c}{\mathcal{N}} \right \rangle_{P(a,b,c), (a,b,c) \in B}.
|
\left \langle \frac{E^B_{abc}}{P^{abc}} \right \rangle_{P^{abc}}.
|
||||||
\end{equation}
|
\end{equation}
|
||||||
Not all buckets are of equal size; the number of triplets per bucket decreases with the bucket's index. Consequently, the initial buckets transition into the deterministic set first, gradually reducing the stochastic contribution. When every triplet has been drawn, the exact value of $E_{(T)}$ is obtained, devoid of statistical error.
|
Not all buckets are of equal size; the number of triplets per bucket decreases with the bucket's index. Consequently, the initial buckets transition into the deterministic set first, gradually reducing the stochastic contribution. When every triplet has been drawn, the exact value of $E_{(T)}$ is obtained, devoid of statistical error.
|
||||||
To accelerate the completion of the buckets, each Monte Carlo iteration triggers the computation of the first non-computed triplet. This ensures that after $N$ drawings, the
|
To accelerate the completion of the buckets, each Monte Carlo iteration triggers the computation of the first non-computed triplet. This ensures that after $N$ drawings, the
|
||||||
exact contribution from each bucket can be obtained.
|
exact contribution from each bucket can be obtained.
|
||||||
|
|
||||||
|
The computational time required to generate a random number is negligible compared to the time needed to compute a contribution, $E^{abc}$.
|
||||||
|
Therefore, it is possible to obtain the exact contribution, characterized by zero statistical error, within a time frame equivalent to that required by a standard deterministic algorithm. This proposed algorithm offers the additional advantage of allowing the calculation to be terminated at any point prior to completion, with a statistical error.
|
||||||
|
|
||||||
|
|
||||||
%=================================================================%
|
%=================================================================%
|
||||||
\subsection{Implementation Details}
|
\subsection{Implementation Details}
|
||||||
\label{sec:implementation}
|
\label{sec:implementation}
|
||||||
|
Loading…
Reference in New Issue
Block a user