From 5cd1cf7ec3fa11e7137b1a82eaa64baa877e80b4 Mon Sep 17 00:00:00 2001 From: InigoGutierrez Date: Thu, 25 Aug 2022 20:44:27 +0200 Subject: Changed "planification" (does not exist) to "planning". --- doc/Makefile | 4 +- doc/diagrams/planificationWorkPlanEngine.puml | 46 ------- doc/diagrams/planificationWorkPlanGame.puml | 30 ----- doc/diagrams/planningWorkPlanEngine.puml | 46 +++++++ doc/diagrams/planningWorkPlanGame.puml | 30 +++++ doc/tex/imago.tex | 2 +- doc/tex/planification.tex | 171 -------------------------- doc/tex/planning.tex | 171 ++++++++++++++++++++++++++ 8 files changed, 250 insertions(+), 250 deletions(-) delete mode 100644 doc/diagrams/planificationWorkPlanEngine.puml delete mode 100644 doc/diagrams/planificationWorkPlanGame.puml create mode 100644 doc/diagrams/planningWorkPlanEngine.puml create mode 100644 doc/diagrams/planningWorkPlanGame.puml delete mode 100644 doc/tex/planification.tex create mode 100644 doc/tex/planning.tex diff --git a/doc/Makefile b/doc/Makefile index 284000e..8d37476 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -3,9 +3,9 @@ docName = imago outputFolder = out -texFiles = tex/$(docName).tex tex/introduction.tex tex/planification.tex tex/systemAnalysis.tex tex/systemDesign.tex tex/implementation.tex tex/results.tex tex/conclusions.tex tex/biber.bib +texFiles = tex/$(docName).tex tex/introduction.tex tex/planning.tex tex/systemAnalysis.tex tex/systemDesign.tex tex/implementation.tex tex/results.tex tex/conclusions.tex tex/biber.bib -diagramImgs = diagrams/planificationWorkPlanEngine.png diagrams/planificationWorkPlanGame.png diagrams/useCases.png diagrams/analysisClasses.png diagrams/useCase_generateAMove.png diagrams/useCase_useAsBackend.png diagrams/useCase_playAMatch.png diagrams/interfaces.png diagrams/gameModule.png diagrams/engineModule.png diagrams/trainingModule.png diagrams/modules.png diagrams/fullClasses.png +diagramImgs = diagrams/planningWorkPlanEngine.png diagrams/planningWorkPlanGame.png diagrams/useCases.png diagrams/analysisClasses.png diagrams/useCase_generateAMove.png diagrams/useCase_useAsBackend.png diagrams/useCase_playAMatch.png diagrams/interfaces.png diagrams/gameModule.png diagrams/engineModule.png diagrams/trainingModule.png diagrams/modules.png diagrams/fullClasses.png imgs = img/imago.jpg img/models/denseModel.png img/models/convModel.png diff --git a/doc/diagrams/planificationWorkPlanEngine.puml b/doc/diagrams/planificationWorkPlanEngine.puml deleted file mode 100644 index 9caad40..0000000 --- a/doc/diagrams/planificationWorkPlanEngine.puml +++ /dev/null @@ -1,46 +0,0 @@ -@startgantt - -!include skinparams.puml -!include skinparamsGantt.puml - -printscale weekly -Saturday are closed -Sunday are closed - -Project starts 2021-01-11 - --- Preliminary research -- -[Previous works research] as [PWR] lasts 1 week -[Algorithms research] as [AR] lasts 2 weeks - --- Engine Implementation -- -[Engine modelling] as [EM] lasts 1 week -[Engine implementation] as [EI] lasts 4 weeks - --- Algorithms Implementations -- -[Monte Carlo implementation] as [MCI] lasts 4 weeks -[Neural networks research] as [NNR] lasts 2 weeks -[Neural networks implementation] as [NNI] lasts 3 weeks - --- Testing -- -[Engine unit testing] as [EUT] lasts 4 weeks -[System testing] as [ST] lasts 1 week - --- Analysis -- -[Algorithms comparison] as [AC] lasts 2 weeks - -[PWR] -> [AR] -[AR] -> [EM] - -[EM] -> [MCI] -[EM] -> [EI] -[EM] -> [EUT] - -[MCI] -> [NNR] -[NNR] -> [NNI] - -[NNI] -> [ST] - -[ST] -> [AC] - -@endgantt diff --git a/doc/diagrams/planificationWorkPlanGame.puml b/doc/diagrams/planificationWorkPlanGame.puml deleted file mode 100644 index ffaf72c..0000000 --- a/doc/diagrams/planificationWorkPlanGame.puml +++ /dev/null @@ -1,30 +0,0 @@ -@startgantt - -!include skinparams.puml -!include skinparamsGantt.puml - -printscale weekly zoom 2 -Saturday are closed -Sunday are closed - -Project starts 2020-11-02 - --- Preliminary research -- -[Previous works research] as [PWR] lasts 1 week - --- Game Implementation -- -[Domain modelling] as [DM] lasts 1 week -[Domain implementation] as [DI] lasts 6 weeks - --- Testing -- -[Unit testing] as [UT] lasts 6 weeks -[System testing] as [ST] lasts 1 week - -[PWR] -> [DM] - -[DM] -> [DI] -[DM] -> [UT] - -[DI] -> [ST] - -@endgantt diff --git a/doc/diagrams/planningWorkPlanEngine.puml b/doc/diagrams/planningWorkPlanEngine.puml new file mode 100644 index 0000000..9caad40 --- /dev/null +++ b/doc/diagrams/planningWorkPlanEngine.puml @@ -0,0 +1,46 @@ +@startgantt + +!include skinparams.puml +!include skinparamsGantt.puml + +printscale weekly +Saturday are closed +Sunday are closed + +Project starts 2021-01-11 + +-- Preliminary research -- +[Previous works research] as [PWR] lasts 1 week +[Algorithms research] as [AR] lasts 2 weeks + +-- Engine Implementation -- +[Engine modelling] as [EM] lasts 1 week +[Engine implementation] as [EI] lasts 4 weeks + +-- Algorithms Implementations -- +[Monte Carlo implementation] as [MCI] lasts 4 weeks +[Neural networks research] as [NNR] lasts 2 weeks +[Neural networks implementation] as [NNI] lasts 3 weeks + +-- Testing -- +[Engine unit testing] as [EUT] lasts 4 weeks +[System testing] as [ST] lasts 1 week + +-- Analysis -- +[Algorithms comparison] as [AC] lasts 2 weeks + +[PWR] -> [AR] +[AR] -> [EM] + +[EM] -> [MCI] +[EM] -> [EI] +[EM] -> [EUT] + +[MCI] -> [NNR] +[NNR] -> [NNI] + +[NNI] -> [ST] + +[ST] -> [AC] + +@endgantt diff --git a/doc/diagrams/planningWorkPlanGame.puml b/doc/diagrams/planningWorkPlanGame.puml new file mode 100644 index 0000000..ffaf72c --- /dev/null +++ b/doc/diagrams/planningWorkPlanGame.puml @@ -0,0 +1,30 @@ +@startgantt + +!include skinparams.puml +!include skinparamsGantt.puml + +printscale weekly zoom 2 +Saturday are closed +Sunday are closed + +Project starts 2020-11-02 + +-- Preliminary research -- +[Previous works research] as [PWR] lasts 1 week + +-- Game Implementation -- +[Domain modelling] as [DM] lasts 1 week +[Domain implementation] as [DI] lasts 6 weeks + +-- Testing -- +[Unit testing] as [UT] lasts 6 weeks +[System testing] as [ST] lasts 1 week + +[PWR] -> [DM] + +[DM] -> [DI] +[DM] -> [UT] + +[DI] -> [ST] + +@endgantt diff --git a/doc/tex/imago.tex b/doc/tex/imago.tex index 5f0b781..c2a5319 100644 --- a/doc/tex/imago.tex +++ b/doc/tex/imago.tex @@ -160,7 +160,7 @@ inclusion to use this template is included here. \input{tex/introduction.tex} \clearpage -\input{tex/planification.tex} +\input{tex/planning.tex} \clearpage \input{tex/systemAnalysis.tex} diff --git a/doc/tex/planification.tex b/doc/tex/planification.tex deleted file mode 100644 index 9112f45..0000000 --- a/doc/tex/planification.tex +++ /dev/null @@ -1,171 +0,0 @@ -\section{Planification} - -This section explains the aim of the project, its reach, the existing work it is -based on and an initial planification. - -\subsection{Project Stages} - -The project will be organized in several stages based on the different -components and needs. - -\subsubsection{Game Implementation} - -The rules of the game must be implemented, ideally in a way they can be tested -by direct human play. This system will at its bare minimum represent the -Japanese Go rules (area scoring, no superko rule, no suicide moves). - -\subsubsection{Engine Implementation} - -The key of this project is to create some kind of system able to generate strong -moves based on any given board configuration: this will be such system. It will -implement an existing protocol so it can be used with other compatible tools. It -has to be able to receive game updates and configuration and to output moves for -either player. It should also be modular enough so different algorithms can be -selected and tested against each other as an experimental search for the best of -them. - -\subsubsection{Artificial Intelligence Algorithms} - -Different algorithms for the engine to use should be implemented and tested. The -results of this development and testing process should be presented as part of -the final version of the project. - -\subsection{Logistics} - -The project will be developed by Íñigo Gutiérrez Fernández, student of the -Computer Software Engineering Degree at the University of Oviedo, with -supervision from Vicente García Díaz, Associate Professor in the Department of -Computer Science at the University of Oviedo. - -The used material consists of a development and testing machine owned by the -student with specifications stated later on the project plan. - -\subsection{Work Plan} - -The sole developer will be the student, who is currently working as a Junior -Software Engineer on a 35 hour per week schedule and with no university -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:planificationWorkPlanGame} and -\fref{fig:planificationWorkPlanEngine}. - -\begin{figure}[h] - \begin{center} - \includegraphics[width=\textwidth]{diagrams/planificationWorkPlanGame.png} - \caption{Initial work plan for implementing the game. - }\label{fig:planificationWorkPlanGame} - \end{center} -\end{figure} - -\begin{figure}[h] - \begin{center} - \includegraphics[width=\textwidth]{diagrams/planificationWorkPlanEngine.png} - \caption{Initial work plan for implementing the engine and algorithms. - }\label{fig:planificationWorkPlanEngine} - \end{center} -\end{figure} - -\subsection{Previous Works} - -\subsubsection{Existing Engines} - -\paragraph{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\cite{natureAlphaGo2016} written by the team and -published on Nature is available on -https://storage.googleapis.com/deepmind-media/alphago/AlphaGoNaturePaper.pdf. - -The unprecedented success of AlphaGo served as inspiration for many AI projects, -including this one. - -\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. - -\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. - -\subsubsection{Existing Standards} - -\paragraph{GTP\cite{gtp}} - -GTP (\textit{Go Text Protocol}) is a text based protocol for -communication with computer Go programs. It is the protocol used by GNU Go and -the more modern and powerful KataGo. By supporting GTP the engine developed for -this project can be used with existing GUIs and other programs, making it easier -to use it with the tools users are already familiar with. - -\paragraph{SGF\cite{sgf}} - -SGF (\textit{Smart Go Format} or, in a more general context, \textit{Smart Game -Format}) is a text format widely used for storing records of Go matches which -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. - -\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. - -\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. - -\subsection{Technological Infrastructure} - -\subsubsection{Programming Language}\label{sec:programmingLanguage} - -The resulting product of this project will be one or more pieces of software -able to be run locally on a personal computer. The programming language of -choice is Python\cite{python}, for various reasons: - -\begin{itemize} - - \item It has established a reputation on scientific fields and more - specifically on AI research and development. - \item Interpreters are available for many platforms, which allows the most - people possible to access the product. - \item Although not very deeply, it has been used by the developer student - during its degree including in AI and game theory contexts. - -\end{itemize} - -\subsubsection{Interface} - -Both the game and the engine will offer a text interface. For the game this -allows for quick human testing. For the engine it is mandated by the protocol, -since GTP is a text based protocol for programs using text interfaces. -Independent programs compatible with this interface can be used as a GUI. - -There is also the need of an interface with SGF files so existing games can be -processed by the trainer. - -Both the engine and the trainer will need to interface with the files storing -the neural network models. - -The systems' interfaces are shown in \fref{fig:interfaces}. - -\begin{figure}[h] - \begin{center} - \includegraphics[width=\textwidth]{diagrams/interfaces.png} - \caption{Interfaces of the three components of the project.} - \label{fig:interfaces} - \end{center} -\end{figure} diff --git a/doc/tex/planning.tex b/doc/tex/planning.tex new file mode 100644 index 0000000..7f619f5 --- /dev/null +++ b/doc/tex/planning.tex @@ -0,0 +1,171 @@ +\section{Planning} + +This section explains the aim of the project, its reach, the existing work it is +based on and an initial planning. + +\subsection{Project Stages} + +The project will be organized in several stages based on the different +components and needs. + +\subsubsection{Game Implementation} + +The rules of the game must be implemented, ideally in a way they can be tested +by direct human play. This system will at its bare minimum represent the +Japanese Go rules (area scoring, no superko rule, no suicide moves). + +\subsubsection{Engine Implementation} + +The key of this project is to create some kind of system able to generate strong +moves based on any given board configuration: this will be such system. It will +implement an existing protocol so it can be used with other compatible tools. It +has to be able to receive game updates and configuration and to output moves for +either player. It should also be modular enough so different algorithms can be +selected and tested against each other as an experimental search for the best of +them. + +\subsubsection{Artificial Intelligence Algorithms} + +Different algorithms for the engine to use should be implemented and tested. The +results of this development and testing process should be presented as part of +the final version of the project. + +\subsection{Logistics} + +The project will be developed by Íñigo Gutiérrez Fernández, student of the +Computer Software Engineering Degree at the University of Oviedo, with +supervision from Vicente García Díaz, Associate Professor in the Department of +Computer Science at the University of Oviedo. + +The used material consists of a development and testing machine owned by the +student with specifications stated later on the project plan. + +\subsection{Work Plan} + +The sole developer will be the student, who is currently working as a Junior +Software Engineer on a 35 hour per week schedule and with no university +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}. + +\begin{figure}[h] + \begin{center} + \includegraphics[width=\textwidth]{diagrams/planningWorkPlanGame.png} + \caption{Initial work plan for implementing the game. + }\label{fig:planningWorkPlanGame} + \end{center} +\end{figure} + +\begin{figure}[h] + \begin{center} + \includegraphics[width=\textwidth]{diagrams/planningWorkPlanEngine.png} + \caption{Initial work plan for implementing the engine and algorithms. + }\label{fig:planningWorkPlanEngine} + \end{center} +\end{figure} + +\subsection{Previous Works} + +\subsubsection{Existing Engines} + +\paragraph{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\cite{natureAlphaGo2016} written by the team and +published on Nature is available on +https://storage.googleapis.com/deepmind-media/alphago/AlphaGoNaturePaper.pdf. + +The unprecedented success of AlphaGo served as inspiration for many AI projects, +including this one. + +\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. + +\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. + +\subsubsection{Existing Standards} + +\paragraph{GTP\cite{gtp}} + +GTP (\textit{Go Text Protocol}) is a text based protocol for +communication with computer Go programs. It is the protocol used by GNU Go and +the more modern and powerful KataGo. By supporting GTP the engine developed for +this project can be used with existing GUIs and other programs, making it easier +to use it with the tools users are already familiar with. + +\paragraph{SGF\cite{sgf}} + +SGF (\textit{Smart Go Format} or, in a more general context, \textit{Smart Game +Format}) is a text format widely used for storing records of Go matches which +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. + +\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. + +\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. + +\subsection{Technological Infrastructure} + +\subsubsection{Programming Language}\label{sec:programmingLanguage} + +The resulting product of this project will be one or more pieces of software +able to be run locally on a personal computer. The programming language of +choice is Python\cite{python}, for various reasons: + +\begin{itemize} + + \item It has established a reputation on scientific fields and more + specifically on AI research and development. + \item Interpreters are available for many platforms, which allows the most + people possible to access the product. + \item Although not very deeply, it has been used by the developer student + during its degree including in AI and game theory contexts. + +\end{itemize} + +\subsubsection{Interface} + +Both the game and the engine will offer a text interface. For the game this +allows for quick human testing. For the engine it is mandated by the protocol, +since GTP is a text based protocol for programs using text interfaces. +Independent programs compatible with this interface can be used as a GUI. + +There is also the need of an interface with SGF files so existing games can be +processed by the trainer. + +Both the engine and the trainer will need to interface with the files storing +the neural network models. + +The systems' interfaces are shown in \fref{fig:interfaces}. + +\begin{figure}[h] + \begin{center} + \includegraphics[width=\textwidth]{diagrams/interfaces.png} + \caption{Interfaces of the three components of the project.} + \label{fig:interfaces} + \end{center} +\end{figure} -- cgit v1.2.1