Files
LithosAnanake/docs/formal/scraps/experiments/02-experiments/factorial-doe/index.tex
T

85 lines
3.3 KiB
TeX

%% SCRAP: experiments/02-experiments/factorial-doe/index
%% SOURCE: docs/working/experiments/02-experiments/factorial-doe/index.md
%% STATUS: CURRENT
%% FITS: experiments/ch-factorial
%% EDITORIAL: lifted — prose rewritten to press voice
\section{Complete $2^6$ Factorial DoE — Documentation Map}
\label{sec:factorial-doe-index}
The $2^6$ factorial experiment is documented across four artefacts: a quick-start
reference, a full design guide, an analysis workflow, and the run script itself.
\subsection{Document Overview}
\begin{center}
\begin{tabular}{lp{8cm}}
\toprule
Artefact & Purpose \\
\midrule
Quick-start reference & Three command options (validation, standard, high-precision),
time estimates, and basic troubleshooting. Read time: 5~minutes. \\
Design guide & Full design rationale, six-loop definitions, configuration
naming, expected interaction patterns, and troubleshooting. Read time:
20--30~minutes. \\
Analysis workflow & End-to-end pipeline: data collection, transfer, statistical
analysis (main effects, interactions), optimal-configuration search, and
reporting. Python code examples included. Read time: 15--20~minutes. \\
Run script & Executable script generating all 64 configurations, rebuilding
for each, randomising 1{,}920+ runs, and writing metrics to CSV. \\
\bottomrule
\end{tabular}
\end{center}
\subsection{Key Concepts}
\paragraph{64 configurations.}
Each configuration is a unique binary string $L_1 L_2 L_3 L_4 L_5 L_6$ where
each digit is 0 (off) or 1 (on). The space spans from \texttt{000000} (all loops
off; pure FORTH-79 baseline) to \texttt{111111} (all loops enabled).
\paragraph{Randomised execution.}
All $64 \times 30 = 1{,}920$ scheduled runs are interleaved in a single randomised
matrix before collection begins. Grouping runs by configuration would introduce
thermal ramp and temporal ordering bias; randomisation eliminates both.
\paragraph{Separation of collection and analysis.}
Data collection and statistical analysis are strictly separated phases. No
configuration adjustments are made mid-collection; doing so would introduce
confirmation bias. The CSV is analysed only after all runs are complete.
\subsection{Execution Timeline}
\begin{center}
\begin{tabular}{lll}
\toprule
Phase & Activity & Duration \\
\midrule
Preparation & Choose option, launch script & 5--10~min \\
Collection & 64 builds + 1{,}920 randomised runs & 30~min -- 12~hr \\
Transfer & Copy CSV to analysis environment & 5~min \\
Analysis & Main effects, interactions, optimal search & 1--2~hr \\
Reporting & Summary, visualisations, recommendations & 1--2~hr \\
\bottomrule
\end{tabular}
\end{center}
\subsection{Design Philosophy}
The factorial design was chosen over three alternatives:
\begin{itemize}
\item \textbf{Incremental tuning} (\texttt{000000} $\to$ \texttt{100000} $\to$
\texttt{110000} $\to \cdots$) misses interaction effects between loops.
\item \textbf{Dynamic toggle without rebuild} introduces state contamination
across configurations.
\item \textbf{Partial (fractional) factorial} aliases higher-order interaction
terms, obscuring synergies and suppressions.
\end{itemize}
The complete $2^6$ factorial is the minimal design that separates all main
effects and all two-way interactions without aliasing.
%% TODO(bob): confirm canonical script path run_factorial_doe.sh in published repo