Modified and moved around figures
This commit is contained in:
parent
611836430a
commit
fdf112c6d9
@ -280,42 +280,6 @@ more arithmetic operations are necessary in each iteration.
|
||||
\end{itemize}
|
||||
|
||||
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
|
||||
\begin{tikzpicture}
|
||||
\begin{axis}[
|
||||
grid=both,
|
||||
xlabel={$E_b / N_0$}, ylabel={\acs{FER}},
|
||||
ymode=log,
|
||||
width=0.6\textwidth,
|
||||
height=0.45\textwidth,
|
||||
legend style={at={(0.5,-0.7)},anchor=south},
|
||||
]
|
||||
\addplot[RedOrange, line width=1pt, mark=*]
|
||||
table [col sep=comma, x=SNR, y=FER,
|
||||
discard if gt={SNR}{2.2},
|
||||
]
|
||||
{res/admm/fer_paper_margulis.csv};
|
||||
\addlegendentry{Barman et al.}
|
||||
\addplot[NavyBlue, densely dashed, line width=1pt, mark=triangle]
|
||||
table [col sep=comma, x=SNR, y=FER,]
|
||||
{/home/andreas/git/ba_sw/scripts/admm/sim_results/ber_margulis264013203.csv};
|
||||
\addlegendentry{Own results}
|
||||
\end{axis}
|
||||
\end{tikzpicture}
|
||||
|
||||
\caption{Comparison of datapoints from Barman et al. with own simulation results%
|
||||
\protect\footnotemark{}}
|
||||
\label{fig:admm:results}
|
||||
\end{figure}%
|
||||
%
|
||||
\footnotetext{``Margulis'' \ac{LDPC} code with $n = 2640$, $k = 1320$
|
||||
\cite[\text{Margulis2640.1320.3}]{mackay_enc}; $K=200, \mu = 3.3, \rho=1.9,
|
||||
\epsilon_{\text{pri}} = 10^{-5}, \epsilon_{\text{dual}} = 10^{-5}$
|
||||
}%
|
||||
%
|
||||
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
|
||||
@ -339,22 +303,9 @@ more arithmetic operations are necessary in each iteration.
|
||||
table [x=SNR, y=FER, col sep=comma, discard if not={mu}{3.0}]
|
||||
%{res/hybrid/2d_ber_fer_dfr_963965.csv};
|
||||
{res/admm/ber_2d_963965.csv};
|
||||
|
||||
% \addplot[NavyBlue, mark=*, solid]
|
||||
% table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.01}]
|
||||
% {res/proximal/2d_ber_fer_dfr_963965.csv};
|
||||
% \addplot[RoyalPurple, mark=triangle, densely dashed]
|
||||
% table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.01}]
|
||||
% %{res/hybrid/2d_ber_fer_dfr_963965.csv};
|
||||
% {res/hybrid/2d_ber_fer_dfr_963965.csv};
|
||||
%
|
||||
% \addplot[RedOrange, mark=*, solid]
|
||||
% table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.05}]
|
||||
% {res/proximal/2d_ber_fer_dfr_963965.csv};
|
||||
% \addplot[red, mark=triangle, densely dashed]
|
||||
% table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.05}]
|
||||
% %{res/hybrid/2d_ber_fer_dfr_963965.csv};
|
||||
% {res/hybrid/2d_ber_fer_dfr_963965.csv};
|
||||
\addplot[PineGreen, line width=1pt, mark=triangle]
|
||||
table [col sep=comma, x=SNR, y=FER,]
|
||||
{res/generic/fer_ml_9633965.csv};
|
||||
\end{axis}
|
||||
\end{tikzpicture}
|
||||
|
||||
@ -404,12 +355,19 @@ more arithmetic operations are necessary in each iteration.
|
||||
]
|
||||
|
||||
\addplot[RedOrange, mark=*, solid]
|
||||
table [x=SNR, y=FER, col sep=comma, discard if not={gamma}{0.05}]
|
||||
table [x=SNR, y=FER, col sep=comma,
|
||||
discard if not={gamma}{0.05},
|
||||
discard if gt={SNR}{5.5}]
|
||||
{res/proximal/2d_ber_fer_dfr_20433484.csv};
|
||||
\addplot[NavyBlue, mark=triangle, densely dashed]
|
||||
table [x=SNR, y=FER, col sep=comma, discard if not={mu}{3.0}]
|
||||
%{res/hybrid/2d_ber_fer_dfr_963965.csv};
|
||||
table [x=SNR, y=FER, col sep=comma,
|
||||
discard if not={mu}{3.0},
|
||||
discard if gt={SNR}{5.5}]
|
||||
{res/admm/ber_2d_20433484.csv};
|
||||
\addplot[PineGreen, line width=1pt, mark=triangle]
|
||||
table [col sep=comma, x=SNR, y=FER,
|
||||
discard if gt={SNR}{5.5}]
|
||||
{res/generic/fer_ml_20433484.csv};
|
||||
\end{axis}
|
||||
\end{tikzpicture}
|
||||
|
||||
@ -514,8 +472,11 @@ more arithmetic operations are necessary in each iteration.
|
||||
\addlegendimage{RedOrange, mark=*, solid}
|
||||
\addlegendentry{Proximal decoding}
|
||||
|
||||
\addlegendimage{NavyBlue, mark=triange, densely dashed}
|
||||
\addlegendimage{NavyBlue, mark=triangle, densely dashed}
|
||||
\addlegendentry{\acs{LP} decoding using \acs{ADMM}}
|
||||
|
||||
\addlegendimage{PineGreen, mark=triangle*, solid}
|
||||
\addlegendentry{\acs{ML} decoding}
|
||||
\end{axis}
|
||||
\end{tikzpicture}
|
||||
\end{subfigure}
|
||||
@ -533,16 +494,17 @@ more arithmetic operations are necessary in each iteration.
|
||||
xlabel={$n$}, ylabel={Time per frame (s)},
|
||||
width=0.6\textwidth,
|
||||
height=0.45\textwidth,
|
||||
legend style={at={(0.5,-0.42)},anchor=south},
|
||||
legend cell align={left},]
|
||||
|
||||
\addplot[RedOrange, only marks, mark=*]
|
||||
table [col sep=comma, x=n, y=spf]
|
||||
% \addlegendentry{Proximal decoding}
|
||||
{res/proximal/fps_vs_n.csv};
|
||||
\addplot[NavyBlue, only marks, mark=triangle*]
|
||||
\addlegendentry{Proximal decoding}
|
||||
\addplot[PineGreen, only marks, mark=triangle*]
|
||||
table [col sep=comma, x=n, y=spf]
|
||||
{res/admm/fps_vs_n.csv};
|
||||
% \addlegendentry{\acs{LP} decoding using \acs{ADMM}}
|
||||
\addlegendentry{\acs{LP} decoding using \acs{ADMM}}
|
||||
\end{axis}
|
||||
\end{tikzpicture}
|
||||
|
||||
|
||||
@ -1,7 +1,16 @@
|
||||
\chapter{\acs{LP} Decoding using \acs{ADMM}}%
|
||||
\label{chapter:lp_dec_using_admm}
|
||||
|
||||
TODO
|
||||
This chapter is concerned with \ac{LP} decoding - the reformulation of the
|
||||
decoding problem as a linear program.
|
||||
More specifically, the \ac{LP} decoding problem is solved using \ac{ADMM}.
|
||||
First, the general field of \ac{LP} decoding is introduced.
|
||||
The application of \ac{ADMM} to the decoding problem is explained.
|
||||
Some notable implementation details are mentioned.
|
||||
Finally, the behavior of the algorithm is examined based on simulation
|
||||
results.
|
||||
|
||||
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
@ -677,6 +686,8 @@ handled at the same time.
|
||||
This can also be understood by interpreting the decoding process as a message-passing
|
||||
algorithm \cite[Sec. III. D.]{original_admm}, \cite[Sec. II. B.]{efficient_lp_dec_admm},
|
||||
depicted in algorithm \ref{alg:admm}.
|
||||
\todo{How are the variables being initialized?}
|
||||
\todo{Overrelaxation}
|
||||
|
||||
\begin{genericAlgorithm}[caption={\ac{LP} decoding using \ac{ADMM} interpreted
|
||||
as a message passing algorithm\protect\footnotemark{}}, label={alg:admm},
|
||||
@ -699,6 +710,7 @@ while $\sum_{j\in\mathcal{J}} \lVert \boldsymbol{T}_j\tilde{\boldsymbol{c}} - \b
|
||||
\Big) - \frac{\gamma_i}{\mu} \right)$
|
||||
end for
|
||||
end while
|
||||
return $\tilde{\boldsymbol{c}}$
|
||||
\end{genericAlgorithm}
|
||||
%
|
||||
\footnotetext{$\epsilon_{\text{pri}} > 0$ and $\epsilon_{\text{dual}} > 0$
|
||||
@ -787,8 +799,212 @@ the $\tilde{\boldsymbol{c}}$ update can then be rewritten as%
|
||||
.\end{align*}
|
||||
%
|
||||
|
||||
This modified version of the decoding process is depicted in algorithm \ref{alg:admm:mod}.
|
||||
|
||||
\begin{genericAlgorithm}[caption={\ac{LP} decoding using \ac{ADMM} algorithm with rewritten
|
||||
update steps}, label={alg:admm:mod},
|
||||
basicstyle=\fontsize{11}{16}\selectfont
|
||||
]
|
||||
Initialize $\tilde{\boldsymbol{c}}, \boldsymbol{z}_{[1:m]}$ and $\boldsymbol{u}_{[1:m]}$
|
||||
while $\sum_{j\in\mathcal{J}} \lVert \boldsymbol{T}_j\tilde{\boldsymbol{c}}
|
||||
- \boldsymbol{z}_j \rVert_2 \ge \epsilon_{\text{pri}}$ or $\sum_{j\in\mathcal{J}}
|
||||
\lVert \boldsymbol{z}^\prime_j - \boldsymbol{z}_j \rVert_2 \ge \epsilon_{\text{dual}}$ do
|
||||
$\boldsymbol{s} \leftarrow \boldsymbol{0}$
|
||||
for $j$ in $\mathcal{J}$ do
|
||||
$\boldsymbol{z}_j \leftarrow \Pi_{\mathcal{P}_{d_j}}\left(
|
||||
\boldsymbol{T}_j\tilde{\boldsymbol{c}} + \boldsymbol{u}_j \right)$
|
||||
$\boldsymbol{u}_j \leftarrow \boldsymbol{u}_j
|
||||
+ \boldsymbol{T}_j\tilde{\boldsymbol{c}}
|
||||
- \boldsymbol{z}_j$
|
||||
$\boldsymbol{s} \leftarrow \boldsymbol{s} + \boldsymbol{T}_j
|
||||
\left( \boldsymbol{z}_j - \boldsymbol{u}_j \right) $
|
||||
end for
|
||||
for $i$ in $\mathcal{I}$ do
|
||||
$\tilde{\boldsymbol{c}} \leftarrow \boldsymbol{D}^{\circ -1} \circ
|
||||
\left( \boldsymbol{s} - \frac{1}{\mu}\boldsymbol{\gamma} \right) $
|
||||
end for
|
||||
end while
|
||||
return $\tilde{\boldsymbol{c}}$
|
||||
\end{genericAlgorithm}
|
||||
|
||||
\todo{Projection onto $[0, 1]^n$?}
|
||||
\todo{Variable initialization}
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\section{Results}%
|
||||
\label{sec:lp:Results}
|
||||
|
||||
|
||||
%\begin{figure}[H]
|
||||
% \centering
|
||||
%
|
||||
% \begin{tikzpicture}
|
||||
% \begin{axis}[
|
||||
% colormap/viridis,
|
||||
% xlabel={$E_b / N_0$}, ylabel={$\mu$}, zlabel={\acs{BER}},
|
||||
% view={75}{30},
|
||||
% zmode=log,
|
||||
% ]
|
||||
% \addplot3[
|
||||
% surf,
|
||||
% mesh/rows=14, mesh/cols=18
|
||||
% ]
|
||||
% table [col sep=comma, x=SNR, y=mu, z=BER]
|
||||
% {res/admm/ber_2d_20433484.csv};
|
||||
% \end{axis}
|
||||
% \end{tikzpicture}
|
||||
%\end{figure}
|
||||
%
|
||||
%\begin{figure}[H]
|
||||
% \centering
|
||||
%
|
||||
% \begin{tikzpicture}
|
||||
% \begin{axis}[
|
||||
% colormap/viridis,
|
||||
% xlabel={$E_b / N_0 2$}, ylabel={$\mu$}, zlabel={\acs{BER}},
|
||||
% view={75}{30},
|
||||
% zmode=log,
|
||||
% ]
|
||||
% \addplot3[
|
||||
% surf,
|
||||
% mesh/rows=14, mesh/cols=18
|
||||
% ]
|
||||
% table [col sep=comma, x=SNR, y=mu, z=BER]
|
||||
% {/home/andreas/git/ba_sw/scripts/admm/sim_results/ber_2d_20433484.csv};
|
||||
% \end{axis}
|
||||
% \end{tikzpicture}
|
||||
%\end{figure}
|
||||
|
||||
|
||||
\textbf{Game Plan}
|
||||
|
||||
\begin{enumerate}
|
||||
\item Determine parameters
|
||||
\item Make non-regular admm implementation use indexing instead of matrix vector
|
||||
multiplication and simulate the pegreg, bch and 204.55.187 codes (parameter choice)
|
||||
\item Computational performance
|
||||
\item Comparison of proximal and admm (decoding performance and computational performance)
|
||||
\item Find different codewords
|
||||
\item Examine weird behavior when c is allowed to be negative
|
||||
\item BP as comparison
|
||||
\item Combination of proximal and BP
|
||||
\end{enumerate}
|
||||
|
||||
|
||||
\begin{itemize}
|
||||
\item Choice of Parameters (Take decomposition paper as guide)
|
||||
\begin{itemize}
|
||||
\item mu
|
||||
\item K
|
||||
\item rho
|
||||
\item epsilon pri / epslion dual
|
||||
\end{itemize}
|
||||
\item Weird behavior when allowing c to take on negative values
|
||||
\begin{itemize}
|
||||
\item Double check the behavior is directly linked to allowing negative values
|
||||
\item Maybe something to do with pseudocodewords when not rounding?
|
||||
\item Not sure if behavior appears due to all zeros assumption not being satisfied
|
||||
\end{itemize}
|
||||
\item Decoding Performance
|
||||
\begin{itemize}
|
||||
\item FER and BER similar
|
||||
\item DFR and FER pratically identical -> FER may be due to DFR
|
||||
\item Compare to BP
|
||||
\end{itemize}
|
||||
\item Convergence Behavior
|
||||
\begin{itemize}
|
||||
\item Plot average error
|
||||
\item Find out if converging to pseudocodeword or not converging.
|
||||
How does pseudocodeword and not pseudocodeword relate to rounding and clipping?
|
||||
\end{itemize}
|
||||
\item Computational Performance
|
||||
\begin{itemize}
|
||||
\item Linear? Difficult to verify due to difference in adjustments
|
||||
in the implementation for different codes
|
||||
\end{itemize}
|
||||
|
||||
\end{itemize}
|
||||
|
||||
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
|
||||
\begin{tikzpicture}
|
||||
\begin{axis}[
|
||||
grid=both,
|
||||
xlabel={$E_b / N_0 \left( \text{dB} \right) $}, ylabel={\acs{FER}},
|
||||
ymode=log,
|
||||
width=0.6\textwidth,
|
||||
height=0.45\textwidth,
|
||||
legend style={at={(0.5,-0.57)},anchor=south},
|
||||
]
|
||||
\addplot[RedOrange, line width=1pt, mark=*]
|
||||
table [col sep=comma, x=SNR, y=FER,
|
||||
discard if gt={SNR}{2.2},
|
||||
]
|
||||
{res/admm/fer_paper_margulis.csv};
|
||||
\addlegendentry{\acs{ADMM} (Barman et al.)}
|
||||
\addplot[NavyBlue, densely dashed, line width=1pt, mark=triangle]
|
||||
table [col sep=comma, x=SNR, y=FER,]
|
||||
{res/admm/ber_margulis264013203.csv};
|
||||
\addlegendentry{\acs{ADMM} (Own results)}
|
||||
\addplot[RoyalPurple, line width=1pt, mark=triangle]
|
||||
table [col sep=comma, x=SNR, y=FER, discard if gt={SNR}{2.2},]
|
||||
{res/generic/fer_bp_mackay_margulis.csv};
|
||||
\addlegendentry{\acs{BP} (Barman et al.)}
|
||||
\end{axis}
|
||||
\end{tikzpicture}
|
||||
|
||||
\caption{Comparison of datapoints from Barman et al. with own simulation results%
|
||||
\protect\footnotemark{}}
|
||||
\label{fig:admm:results}
|
||||
\end{figure}%
|
||||
%
|
||||
\footnotetext{``Margulis'' \ac{LDPC} code with $n = 2640$, $k = 1320$
|
||||
\cite[\text{Margulis2640.1320.3}]{mackay_enc}; $K=200, \mu = 3.3, \rho=1.9,
|
||||
\epsilon_{\text{pri}} = 10^{-5}, \epsilon_{\text{dual}} = 10^{-5}$
|
||||
}%
|
||||
%
|
||||
|
||||
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
|
||||
\begin{tikzpicture}
|
||||
\begin{axis}[
|
||||
grid=both,
|
||||
xlabel={$\mu$}, ylabel={\acs{FER}},
|
||||
ymode=log,
|
||||
width=0.6\textwidth,
|
||||
height=0.45\textwidth,
|
||||
legend style={at={(0.5,-0.55)},anchor=south},
|
||||
]
|
||||
\addplot[ForestGreen, densely dashed, mark=*]
|
||||
table [col sep=comma, x=mu, y=FER,
|
||||
discard if not={SNR}{2.0},]
|
||||
{res/admm/ber_2d_20433484.csv};
|
||||
\addlegendentry{$E_b / N_0 = \SI{2}{dB}$}
|
||||
\addplot[RedOrange, densely dashed, mark=*]
|
||||
table [col sep=comma, x=mu, y=FER,
|
||||
discard if not={SNR}{3.0},]
|
||||
{res/admm/ber_2d_20433484.csv};
|
||||
\addlegendentry{$E_b / N_0 = \SI{3}{dB}$}
|
||||
\addplot[NavyBlue, densely dashed, mark=*]
|
||||
table [col sep=comma, x=mu, y=FER,
|
||||
discard if not={SNR}{4.0},]
|
||||
{res/admm/ber_2d_20433484.csv};
|
||||
\addlegendentry{$E_b / N_0 = \SI{4}{dB}$}
|
||||
\end{axis}
|
||||
\end{tikzpicture}
|
||||
|
||||
\caption{Visualization of the relationship between the decoding performance%
|
||||
\protect\footnotemark{}and the parameter $\mu$}
|
||||
\label{fig:admm:results}
|
||||
\end{figure}%
|
||||
%
|
||||
\footnotetext{(3,6) regular \ac{LDPC} code with $n = 204$, $k = 102$
|
||||
\cite[\text{204.33.484}]{mackay_enc}; $K=200, \rho=1, \epsilon_\text{pri} = 10^{-5},
|
||||
\epsilon_\text{dual} = 10^{-5}$
|
||||
}%
|
||||
%
|
||||
|
||||
9
latex/thesis/res/generic/fer_bp_mackay_margulis.csv
Normal file
9
latex/thesis/res/generic/fer_bp_mackay_margulis.csv
Normal file
@ -0,0 +1,9 @@
|
||||
,SNR,FER
|
||||
0,0.9868766404199476,0.7914135529980044
|
||||
1,1.288713910761155,0.2149640062907639
|
||||
2,1.435695538057743,0.1346395694171198
|
||||
3,1.5826771653543306,0.0261816550874433
|
||||
4,1.8687664041994752,0.0010584575370171914
|
||||
5,2.144356955380577,1.2426236719115031e-05
|
||||
6,2.280839895013123,1.618074630152863e-06
|
||||
7,2.406824146981627,7.255504808245653e-07
|
||||
|
10
latex/thesis/res/generic/fer_ml_20433484.csv
Normal file
10
latex/thesis/res/generic/fer_ml_20433484.csv
Normal file
@ -0,0 +1,10 @@
|
||||
SNR,FER,num_errors,num_iterations
|
||||
1.00,1.193e-01,100,838
|
||||
1.50,4.002e-02,100,2499
|
||||
2.00,6.572e-03,100,15216
|
||||
2.50,6.019e-04,100,166127
|
||||
3.00,7.677e-05,100,1302564
|
||||
3.50,1.562e-05,100,6401819
|
||||
4.00,4.406e-06,100,22694922
|
||||
4.50,1.103e-06,100,90621994
|
||||
5.00,2.800e-07,28,100000000
|
||||
|
12
latex/thesis/res/generic/fer_ml_9633965.csv
Normal file
12
latex/thesis/res/generic/fer_ml_9633965.csv
Normal file
@ -0,0 +1,12 @@
|
||||
SNR,FER,num_errors,num_iterations
|
||||
1.00,1.724e-01,100,580
|
||||
1.50,6.752e-02,100,1481
|
||||
2.00,2.565e-02,100,3898
|
||||
2.50,9.100e-03,100,10989
|
||||
3.00,2.386e-03,100,41914
|
||||
3.50,6.214e-04,100,160939
|
||||
4.00,1.797e-04,100,556583
|
||||
4.50,4.750e-05,100,2105114
|
||||
5.00,1.802e-05,100,5549579
|
||||
5.50,4.103e-06,100,24374790
|
||||
6.00,9.400e-07,94,100000000
|
||||
|
Loading…
Reference in New Issue
Block a user