aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--doc/tex/biber.bib146
-rw-r--r--doc/tex/imago.tex8
-rw-r--r--doc/tex/implementation.tex2
-rw-r--r--doc/tex/planning.tex78
-rw-r--r--doc/tex/results.tex4
-rw-r--r--doc/tex/systemDesign.tex4
7 files changed, 157 insertions, 87 deletions
diff --git a/.gitignore b/.gitignore
index 0a4eeda..1fd18b7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,8 +1,10 @@
*.sgf
# images
+img/
*.png
*.jpg
+*.svg
*.xcf
# doc
diff --git a/doc/tex/biber.bib b/doc/tex/biber.bib
index d0a714e..324c0ad 100644
--- a/doc/tex/biber.bib
+++ b/doc/tex/biber.bib
@@ -7,27 +7,35 @@
}
@online{gtp,
- author = {Gunnar Farnebäck},
- title = {GTP --- Go Text Protocol},
- date = {2002},
- urldate = {2021},
- url = {https://www.lysator.liu.se/~gunnar/gtp}
+ author = {Gunnar Farnebäck},
+ title = {GTP --- Go Text Protocol},
+ date = {2002},
+ urldate = {2021},
+ url = {https://www.lysator.liu.se/~gunnar/gtp}
}
@online{sgf,
- author = {Arno Hollosi},
- title = {SGF File Format FF[4]},
- date = {2021},
- urldate = {2022},
- url = {https://www.red-bean.com/sgf}
+ author = {Arno Hollosi},
+ title = {SGF File Format FF[4]},
+ date = {2021},
+ urldate = {2022},
+ url = {https://www.red-bean.com/sgf}
+}
+
+@online{alphaGo,
+ author = {DeepMind},
+ title = {AlphaGo},
+ date = {2022},
+ urldate = {2022},
+ url = {https://www.deepmind.com/research/highlighted-research/alphago}
}
@online{katago,
- author = {David J Wu ("lightvector")},
- title = {KataGo},
- date = {2021},
- urldate = {2021},
- url = {https://github.com/lightvector/KataGo}
+ author = {David J Wu ("lightvector")},
+ title = {KataGo},
+ date = {2021},
+ urldate = {2021},
+ url = {https://github.com/lightvector/KataGo}
}
@online{gnugo,
@@ -39,17 +47,17 @@
}
@online{sabaki,
- author = {Yichuan Shen},
- title = {Sabaki --- An elegant Go board and SGF editor for a more civilized age.},
- date = {2019},
- urldate = {2021},
- url = {https://sabaki.yichuanshen.de}
+ author = {Yichuan Shen},
+ title = {Sabaki --- An elegant Go board and SGF editor for a more civilized age.},
+ date = {2019},
+ urldate = {2021},
+ url = {https://sabaki.yichuanshen.de}
}
@online{keras,
- title = {Keras: the Python deep learning API},
- urldate = {2022},
- url = {https://keras.io}
+ title = {Keras: the Python deep learning API},
+ urldate = {2022},
+ url = {https://keras.io}
}
@online{sl_go,
@@ -68,89 +76,89 @@
}
@online{python_unittest,
- title = {unittest --- Unit testing framework},
- urldate = {2021},
- url = {https://docs.python.org/3/library/unittest.html}
+ title = {unittest --- Unit testing framework},
+ urldate = {2021},
+ url = {https://docs.python.org/3/library/unittest.html}
}
@online{python_coverage,
- title = {Coverage.py},
- urldate = {2021},
- url = {https://coverage.readthedocs.io}
+ title = {Coverage.py},
+ urldate = {2021},
+ url = {https://coverage.readthedocs.io}
}
@online{matplotlib_heatmaps,
- title = {Creating annotated heatmaps — Matplotlib 3.5.2 documentation},
- urldate = {2022},
- url = {https://matplotlib.org/stable/gallery/images_contours_and_fields/image_annotated_heatmap.html}
+ title = {Creating annotated heatmaps — Matplotlib 3.5.2 documentation},
+ urldate = {2022},
+ url = {https://matplotlib.org/stable/gallery/images_contours_and_fields/image_annotated_heatmap.html}
}
@online{python,
- title = {Welcome to Python.org},
- urldate = {2022},
- url = {https://www.python.org}
+ title = {Welcome to Python.org},
+ urldate = {2022},
+ url = {https://www.python.org}
}
@online{numpy,
- title = {NumPy},
- urldate = {2022},
- url = {https://numpy.org}
+ title = {NumPy},
+ urldate = {2022},
+ url = {https://numpy.org}
}
@online{matplotlib,
- title = {Matplotlib — Visualization with Python},
- urldate = {2022},
- url = {https://matplotlib.org}
+ title = {Matplotlib — Visualization with Python},
+ urldate = {2022},
+ url = {https://matplotlib.org}
}
@online{ply,
- title = {PLY (Python Lex-Yacc)},
- urldate = {2022},
- url = {http://www.dabeaz.com/ply}
+ title = {PLY (Python Lex-Yacc)},
+ urldate = {2022},
+ url = {http://www.dabeaz.com/ply}
}
@online{vim,
- title = {welcome home : vim online},
- urldate = {2022},
- url = {https://www.vim.org}
+ title = {welcome home : vim online},
+ urldate = {2022},
+ url = {https://www.vim.org}
}
@online{neovim,
- title = {Home - Neovim},
- urldate = {2022},
- url = {http://neovim.io}
+ title = {Home - Neovim},
+ urldate = {2022},
+ url = {http://neovim.io}
}
@online{latex,
- title = {LaTeX - A document preparation system},
- urldate = {2022},
- url = {https://www.latex-project.org}
+ title = {LaTeX - A document preparation system},
+ urldate = {2022},
+ url = {https://www.latex-project.org}
}
@online{puml,
- title = {Open-source tool that uses simple textual descriptions to draw beautiful UML diagrams.},
- urldate = {2022},
- url = {https://plantuml.com}
+ title = {Open-source tool that uses simple textual descriptions to draw beautiful UML diagrams.},
+ urldate = {2022},
+ url = {https://plantuml.com}
}
@online{sl_sword,
- title = {9x9 Tengen Openings at Sensei's Library},
- urldate = {2022},
- url = {https://senseis.xmp.net/?9x9TengenOpenings}
+ title = {9x9 Tengen Openings at Sensei's Library},
+ urldate = {2022},
+ url = {https://senseis.xmp.net/?9x9TengenOpenings}
}
@online{ogsLifeAndDeath,
- author = {sunspark},
- title = {Cho Chikun's Encyclopedia of Life and Death - Elementary: 1 / 900},
- date = {2016},
- urldate = {2022},
- url = {https://online-go.com/puzzle/2824}
+ author = {sunspark},
+ title = {Cho Chikun's Encyclopedia of Life and Death - Elementary: 1 / 900},
+ date = {2016},
+ urldate = {2022},
+ url = {https://online-go.com/puzzle/2824}
}
@online{fsf_free,
- author = {Free Software Foundation},
- title = {What is Free Software? - GNU Project - Free Software Foundation},
- date = {2022},
- urldate = {2022},
- url = {https://www.gnu.org/philosophy/free-sw.html}
+ author = {Free Software Foundation},
+ title = {What is Free Software? - GNU Project - Free Software Foundation},
+ date = {2022},
+ urldate = {2022},
+ url = {https://www.gnu.org/philosophy/free-sw.html}
}
diff --git a/doc/tex/imago.tex b/doc/tex/imago.tex
index d80c19a..fbf0291 100644
--- a/doc/tex/imago.tex
+++ b/doc/tex/imago.tex
@@ -31,12 +31,12 @@
\newcommand{\program}{Imago}
\newcommand{\fref}[1]{Fig.~\ref{#1}}
-\newcommand{\flist}[1]{Listing~\ref{#1}}
+\newcommand{\lref}[1]{Listing~\ref{#1}}
%\newcommand{\uurl}[1]{\underline{\url{#1}}}
\newcommand{\acronim}[2]
{
- \iftoggle{#1}
+ \iftoggle{#1}
{#1}
{#1 (#2)\toggletrue{#1}}
}
@@ -172,8 +172,8 @@ inclusion to use this template is included here.
\input{tex/implementation.tex}
\clearpage
-\input{tex/results.tex}
-\clearpage
+%\input{tex/results.tex}
+%\clearpage
\input{tex/conclusions.tex}
\clearpage
diff --git a/doc/tex/implementation.tex b/doc/tex/implementation.tex
index 24a231c..ffb2802 100644
--- a/doc/tex/implementation.tex
+++ b/doc/tex/implementation.tex
@@ -113,7 +113,7 @@ updates them if they already exist but their source files are newer than them.
It has been used to generate this text from \LaTeX{} and PlantUML source files.
The contents of the Makefile with which this document has been compiled are
-shown in \flist{code:makefile}.
+shown in \lref{code:makefile}.
\begin{listing}[h]
\inputminted{make}{Makefile}
diff --git a/doc/tex/planning.tex b/doc/tex/planning.tex
index 269645a..1450e8a 100644
--- a/doc/tex/planning.tex
+++ b/doc/tex/planning.tex
@@ -48,7 +48,9 @@ responsibilities other than this project. Taking this into account, a sensible
initial assumption is that he will be able to work 3 hours a day, Monday to
Friday. Gantt diagrams for the planned working schedule are shown as
\fref{fig:planningWorkPlanGame} and
-\fref{fig:planningWorkPlanEngine}.
+\fref{fig:planningWorkPlanEngine}. This planning predicts 6 months of
+development, from November 2020 to April 2021. With the planned schedule of 3
+hours a day on weekdays this amounts to 375 hours.
\begin{figure}[h]
\begin{center}
@@ -70,30 +72,61 @@ Friday. Gantt diagrams for the planned working schedule are shown as
\subsubsection{Existing Engines}
-\paragraph{AlphaGo}
+\begin{figure}[h]
+ \begin{center}
+ \includegraphics[width=0.5\textwidth]{img/Alphago_logo_Reversed.jpg}
+ \caption{AlphaGo logo. By Google DeepMind - Google DeepMind AlphaGo
+ Logo, Public Domain,
+ https://commons.wikimedia.org/w/index.php?curid=47169369
+ }\label{fig:alphaGoLogo}
+ \end{center}
+\end{figure}
+
+\paragraph{AlphaGo \cite{alphaGo}}
A Go play and analysis engine developed by DeepMind Technologies, a company
owned by Google. It revolutionized the world of Go in 2015 and 2016 when it
respectively became the first AI to win against a professional Go player and
then won against Lee Sedol, a Korean player of the highest professional rank and
one of the strongest players in the world at the time. Its source code is
-closed, but a paper written by the team has been
-published on Nature \cite{natureAlphaGo2016}.
+closed, but a paper written by the team has been published on Nature
+\cite{natureAlphaGo2016}. The logo of the project is shown on
+\fref{fig:alphaGoLogo}.
The unprecedented success of AlphaGo served as inspiration for many AI projects,
including this one.
+\begin{figure}[h]
+ \begin{center}
+ \includegraphics[width=0.5\textwidth]{img/katago.png}
+ \caption{KataGo logo.
+ https://katagotraining.org/static/images/katago.png
+ }\label{fig:kataGoLogo}
+ \end{center}
+\end{figure}
+
\paragraph{KataGo \cite{katago}}
An open source project based on the AlphaGo paper that also achieved superhuman
strength of play. The availability of its implementation and documentation
-presents a great resource for this project.
+presents a great resource for this project. The logo of the project is shown on
+\fref{fig:kataGoLogo}.
+
+\begin{figure}[h]
+ \begin{center}
+ \includegraphics[width=0.5\textwidth]{img/gnuGoLogo.jpg}
+ \caption{GnuGo logo.
+ https://www.gnu.org/software/gnugo/logo-36.jpg
+ }\label{fig:gnuGoLogo}
+ \end{center}
+\end{figure}
\paragraph{GnuGo \cite{gnugo}}
A software capable of playing Go part of the GNU project. Although not a strong
engine anymore, it is interesting for historic reasons as the free software
-engine for which the GTP protocol was first defined.
+engine for which the GTP protocol was first defined. The logo of the project is shown on
+\fref{fig:gnuGoLogo}.
\subsubsection{Existing Standards}
@@ -113,19 +146,46 @@ allows for variants, comments and other metadata. It was devised for Go but it
supports other games with similar turn-based structure. Many popular playing
tools use it. By supporting SGF vast existing collections of games, such as
those played on online Go servers, can be used to train the decision algorithms
-based on neural networks.
+based on neural networks. An example of a SGF file can be seen on
+\lref{lst:sgfExample}.
+
+\begin{listing}[h]
+ \inputminted[breakafter=\]]{text}{listings/sgfExample.sgf}
+ \caption{SGF example. Describes a tsumego (Go problem) setup and two
+ variants, one commented as "Correct" and other commented as "Incorrect".}
+ \label{lst:sgfExample}
+\end{listing}
+
+\begin{figure}[h]
+ \begin{center}
+ \includegraphics[width=0.5\textwidth]{img/sabaki.jpg}
+ \caption{Sabaki screenshot.
+ https://sabaki.yichuanshen.de/img/screenshot.png
+ }\label{fig:sabaki}
+ \end{center}
+\end{figure}
\subsubsection{Sabaki \cite{sabaki}}
Sabaki is a Go board software compatible with GTP engines. It can serve as a GUI
for the engine developed in this project and as an example of the advantages of
-following a standardized protocol.
+following a standardized protocol. Part of its graphical interface is shown on
+\fref{fig:sabaki}.
+
+\begin{figure}[h]
+ \begin{center}
+ \includegraphics[width=0.5\textwidth]{img/kerasLogo.jpg}
+ \caption{Keras logo.
+ https://keras.io/img/logo.png
+ }\label{fig:kerasLogo}
+ \end{center}
+\end{figure}
\subsubsection{Keras \cite{keras}}
Keras is a deep learning API for Python allowing for the high-level definition
of neural networks. This permits easily testing and comparing different network
-layouts.
+layouts. The logo of the project is shown on \fref{fig:kerasLogo}.
\subsection{Technological Infrastructure}
diff --git a/doc/tex/results.tex b/doc/tex/results.tex
index 3cd682f..e37c0b2 100644
--- a/doc/tex/results.tex
+++ b/doc/tex/results.tex
@@ -134,8 +134,8 @@ as with batches of 10 games an epoch of training could be completed in one
minute, in three minutes batches of 20 games, and in up to an hour with batches
of 100 games.
-The outputs from this training process can be seen on \flist{code:denseTraining}
-and \flist{code:convTraining} for the dense network and the convolutional
+The outputs from this training process can be seen on \lref{code:denseTraining}
+and \lref{code:convTraining} for the dense network and the convolutional
network respectively.
\begin{listing}[h]
diff --git a/doc/tex/systemDesign.tex b/doc/tex/systemDesign.tex
index 7975276..f54032f 100644
--- a/doc/tex/systemDesign.tex
+++ b/doc/tex/systemDesign.tex
@@ -224,7 +224,7 @@ been selected so each node can have as input each of the vertices of the board.
A flatten layer acts then to make the output one-dimensional, and a final dense
layer provides the vector containing the likelihood of each possible move.
-The design of this network is shown in \flist{code:denseModel} and
+The design of this network is shown in \lref{code:denseModel} and
\fref{fig:denseNN} as provided by Keras' summary and plot\_model functions
respectively.
@@ -249,7 +249,7 @@ of being trained to recognize patterns on the board. A flatten layer acts then
to make the output one-dimensional, and a final dense layer provides the vector
containing the likelihood of each possible move.
-The design of this network is shown in \flist{code:convModel} and
+The design of this network is shown in \lref{code:convModel} and
\fref{fig:convNN} as provided by Keras' summary and plot\_model functions
respectively.