aboutsummaryrefslogtreecommitdiff
path: root/doc/tex/implementation.tex
diff options
context:
space:
mode:
Diffstat (limited to 'doc/tex/implementation.tex')
-rw-r--r--doc/tex/implementation.tex66
1 files changed, 66 insertions, 0 deletions
diff --git a/doc/tex/implementation.tex b/doc/tex/implementation.tex
index 297ba0e..40dfb93 100644
--- a/doc/tex/implementation.tex
+++ b/doc/tex/implementation.tex
@@ -1,5 +1,71 @@
\section{Implementation}
+\subsection{Development environment}
+
+\subsubsection{Language}
+
+The programming language of choice is Python\cite{python}. The rationale behind
+this decision has been stated on Section \ref{sec:programmingLanguage}. It also
+allows easy use of the Keras library for implementing neural networks.
+
+Various python libraries have been used to easy the development process or
+assist in the analysis of results. These are:
+
+\paragraph{Keras/Tensorflow\cite{keras}}
+
+Tensorflow is a platform for machine learning which provides a diverse range of
+tools, one of which is a python library for machine learning.
+
+Keras is a high-level API for Tensorflow allowing for the easy definition of
+neural networks. It permits easily testing and comparing different network
+layouts.
+
+\paragraph{NumPy\cite{numpy}}
+
+NumPy is a scientific package for python providing a lot of mathematical tools.
+The most interesting for this project are its capabilities to create and
+transform matrices.
+
+\paragraph{Matplotlib\cite{matplotlib}}
+
+Matplotlib is a python library for creating graphs and other visualizations. It
+is used to show the likelihood of moves the neural networks of the project
+create from a board configuration.
+
+\paragraph{PLY\cite{ply}}
+
+PLY is a tool for generating compilers in Python. It is an implementation of the
+lex and yacc utilities, allowing to create lexers and parsers. It is used in the
+project to create the SGF parser which transform SGF files to internal
+representations of Go matches.
+
+\paragraph{Other utility libraries}
+
+These are some utility libraries commonly used for frequent programming tasks:
+
+\begin{itemize}
+ \item \textbf{sys}, to stop the execution of the program or access system info such
+ as primitives maximum values.
+ \item \textbf{os}, to interact with files.
+ \item \textbf{re}, to check strings with regular expressions.
+ \item \textbf{random}, to get random values, for example to obtain a random
+ item from a list.
+ \item \textbf{copy}, to obtain deep copies of multidimensional arrays.
+\end{itemize}
+
+\subsubsection{Development tools}
+
+\paragraph{Neovim\cite{neovim}}
+
+\begin{itemize}
+
+ \item Extensions
+ \item Extensions
+
+\end{itemize}
+
+% Old stuff starts here
+
\subsection{Engine}
An implementation of GTP, that is, the piece of software which offers the GTP