Files
papers/lux-fpc-consensus/sections/04-adaptive-threshold-mechanism.tex
zeekay 4a753bb639 papers: reorganize into per-paper dirs, add Antje Worring as co-author
Restructured from flat .tex/.pdf files into per-paper subdirectories.
Added Antje Worring as co-author on all papers.
Synced PDFs to pdfs/ for download site.
2026-04-18 21:50:07 -07:00

87 lines
2.5 KiB
TeX

\section{Adaptive Threshold Mechanism}
\label{sec:adaptive}
The key innovation in FPC is the adaptive threshold function that prevents metastability while ensuring convergence.
\subsection{Sigmoid Cooling Function}
The threshold evolves according to a sigmoid cooling schedule:
\begin{equation}
\theta(r) = \theta_{\min} + \frac{\theta_{\max} - \theta_{\min}}{1 + e^{-r/\tau}}
\label{eq:sigmoid}
\end{equation}
where $\tau = \frac{\text{totalRounds}}{4}$ controls the transition rate.
\begin{figure}[h]
\centering
\begin{tikzpicture}
\begin{axis}[
xlabel={Round $r$},
ylabel={Threshold $\theta(r)$},
xmin=0, xmax=10,
ymin=0.45, ymax=0.85,
grid=major,
width=10cm,
height=6cm,
legend pos=south east,
]
\addplot[blue, thick, smooth] {0.5 + 0.3/(1 + exp(-4*x/10))};
\addlegendentry{$\theta(r)$ with $\tau=2.5$}
\addplot[red, dashed, thick] {0.5};
\addlegendentry{$\theta_{\min} = 0.5$}
\addplot[green, dashed, thick] {0.8};
\addlegendentry{$\theta_{\max} = 0.8$}
\end{axis}
\end{tikzpicture}
\caption{Sigmoid cooling function for adaptive threshold}
\label{fig:sigmoid}
\end{figure}
\subsection{Phase-Shift Dynamics}
The protocol exhibits three distinct phases:
\begin{enumerate}
\item \textbf{Exploration Phase} ($r < \tau$): $\theta \approx 0.5$, neutral voting to discover majority
\item \textbf{Transition Phase} ($\tau \leq r < 2\tau$): Rapid increase in threshold
\item \textbf{Exploitation Phase} ($r \geq 2\tau$): $\theta \to 0.8$, lock in decision
\end{enumerate}
\begin{lemma}
The phase-shift function prevents metastability by ensuring $\theta(r) \to \theta_{\max}$ as $r \to \infty$.
\end{lemma}
\begin{proof}
$$\lim_{r \to \infty} \frac{1}{1 + e^{-r/\tau}} = 1$$
Therefore:
$$\lim_{r \to \infty} \theta(r) = \theta_{\min} + (\theta_{\max} - \theta_{\min}) \cdot 1 = \theta_{\max} > 0.5 + \text{margin}$$
\end{proof}
\subsection{Temperature Modulation}
To enable adaptive exploration, we introduce temperature-based noise in early rounds:
\begin{lstlisting}[language=Go, caption=Temperature-modulated threshold computation]
func computeThreshold(round int, temperature float64) float64 {
tau := float64(maxRounds) / 4.0
sigmoid := 1.0 / (1.0 + math.Exp(-float64(round)/tau))
exploration := temperature * 0.1
threshold := thetaMin + (thetaMax-thetaMin)*sigmoid
if round < maxRounds/3 {
noise := (rand.Float64() - 0.5) * exploration
threshold += noise
}
return math.Max(0.51, math.Min(0.99, threshold))
}
\end{lstlisting}