diff --git a/slides/ce810-metrics.pres.tex b/slides/ce810-metrics.pres.tex new file mode 100644 index 0000000000000000000000000000000000000000..32ff39136c59957f3c1efdbcf97d3b830d79d3d9 --- /dev/null +++ b/slides/ce810-metrics.pres.tex @@ -0,0 +1,4 @@ +\input{shared/pres} +\input{shared/preamble} +\input{content/metrics} + diff --git a/slides/content/metrics.tex b/slides/content/metrics.tex new file mode 100644 index 0000000000000000000000000000000000000000..3515d7cc891d3af1a5bce245185bdbeed8f3c6fe --- /dev/null +++ b/slides/content/metrics.tex @@ -0,0 +1,130 @@ +\subtitle{Metrics} +\date{Tuesday, 22 May 2018} + +\tikzset{ + treenode/.style = {align=center, inner sep=0pt, text centered, + font=\sffamily}, + arn_n/.style = {treenode, circle, white, font=\sffamily\bfseries, draw=black, + fill=black, text width=1.5em},% arbre rouge noir, noeud noir + arn_r/.style = {treenode, circle, red, draw=red, + text width=1.5em, very thick},% arbre rouge noir, noeud rouge + arn_x/.style = {treenode, rectangle, draw=black, + minimum width=0.5em, minimum height=0.5em},% arbre rouge noir, nil + box/.style = {draw, align=center, text centered, rectangle, draw=black, minimum height=1.25cm, minimum width=2cm} +} + +\DeclareMathOperator*{\argmax}{arg\,max} + + +\begin{document} + + \begin{frame} + \titlepage + \end{frame} + + \begin{frame}{Metrics} + \begin{itemize}[<+->] + \item We talked about this last week... + \item Have a look at the evaluation slides + \item We also did this in the asteroids code. + \end{itemize} + \end{frame} + +\section{Evaluation} + +\begin{frame}{Basic} +\begin{itemize} + \item Look at AppMetrics + \item Add your parameters using addParameter + \item Write your fitness function + \item get the best and print it out +\end{itemize} +\end{frame} + + \begin{frame}{What we need} + \begin{itemize}[<+->] + \item AI agents (We've done this yesterday) + \item Some Parameters (EntityProp, EntityCost, etc...) + \item An evaluation function + \item Some maps? (One will do...) + \end{itemize} + \end{frame} + + \begin{frame}{AI Agents} + \begin{itemize}[<+->] + \item We did these yesterday. + \item We should load the AIFactory + \item Then use the factory in the evaluate + \item ai.buildAI("ProRuleRushRangedBlue", settings), + \end{itemize} + \end{frame} + + \begin{frame}{Some Parameters} + \begin{itemize}[<+->] + \item evo.addParameter(new EntityProp("red\_knight", "defRanged", 0, 10, 1)); + \item A min, max and step size + \item The entity and property + \end{itemize} + \end{frame} + + \begin{frame}{Evaluation Function} + \begin{itemize}[<+->] + \item Run the games + \item Collect some \textbf{metrics} + \item Report the game fitness + \item (offline) analyse the metrics... + \end{itemize} + \end{frame} + +\begin{frame}[fragile]{Basic} + \begin{minted}[breaklines,tabsize=2,fontsize=\footnotesize]{Java} +public Double evaluate(GameSettings settings) { +} + \end{minted} +\end{frame} + +\begin{frame}[fragile]{Basic} + \begin{minted}[breaklines,tabsize=2,fontsize=\footnotesize]{Java} +public Double evaluate(GameSettings settings) { + GameState start = map.buildState(settings); + int[] winCounts = new int[2]; + for (int i=0; i<10; i++) { + Controller[] controllers = new Controller[] { + ai.buildAI("ProRuleRushRangedBlue", settings), + ai.buildAI("ProRuleRushRed", settings) + }; + GameState state = new GameState(start); + GameMetrics metrics = runGame(state, settings, controllers); + + Integer winner = metrics.getWinner(); + if (winner != null) { + winCounts[winner]++; + } + } + + double score = winCounts[1] - winCounts[0]; + fitnessScores.put(settings, score); + return score; +} + \end{minted} +\end{frame} + +\section{Stats} +\begin{frame}[fragile]{Stats} + \begin{itemize} + \item Stats about the games + \item Stats about the turns + \item You can write files per game played - see the example + \item lots (and lots) of files... + \end{itemize} +\end{frame} + +\begin{frame}[fragile]{Graphs} + \begin{figure} + \includegraphics[width=\textwidth]{tbs-peices} + \caption{What can we learn from this?} + \end{figure} +\end{frame} + + +\end{document} diff --git a/slides/images/tbs-peices.png b/slides/images/tbs-peices.png new file mode 100644 index 0000000000000000000000000000000000000000..97b83b080fb4723229efc7902aa5a37adc4acd8b Binary files /dev/null and b/slides/images/tbs-peices.png differ