Skip to content
Snippets Groups Projects
Commit 1d7b59a1 authored by Piers Williams's avatar Piers Williams
Browse files

First draft of slides on AI

parent 7b23b8ee
No related branches found
No related tags found
No related merge requests found
\input{shared/handout}
\input{shared/preamble}
\input{content/ai}
\input{shared/notes}
\input{shared/preamble}
\input{content/ai}
\input{shared/pres}
\input{shared/preamble}
\input{content/ai}
\subtitle{Artificial Intelligence}
\date{Monday, 21 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}{Artificial Intelligence}
\begin{itemize}
\item Production Rule Agents
\item Monte-Carlo Tree Search
\item Genetic Algorithms
\item Neural Networks
\end{itemize}
\end{frame}
\begin{frame}[fragile]{Production Rule Agents}
\begin{minted}[breaklines,tabsize=2,fontsize=\footnotesize]{Java}
@FunctionalInterface
public interface Rule
{
default boolean canFire(int playerID, GameState state)
{
return execute(playerID, state) != null;
}
Action execute(int playerID, GameState state);
}
\end{minted}
\end{frame}
\begin{frame}{Production Rule Agents}
\begin{tikzpicture}[]
\node[state,initial] (0) {\tiny Pop next rule};
\node[state] (1) [above right=of 0] {\tiny Check if fires};
\node[state,accepting] (1y) [above =of 1]{\tiny Return action};
\node[state] (2) [below right=of 1] {\tiny Rule Remaining};
\node[state, accepting] (3) [right= of 2] {\tiny Return null};
\path[->]
(0) edge [bend left] node [ above] {} (1)
(1) edge node [left] {\tiny Yes} (1y)
(1) edge [bend left] node [ below] {\tiny No} (2)
(2) edge [bend left] node [ below] {\tiny Yes} (0)
(2) edge [bend left] node [ below] {\tiny No} (3);
\end{tikzpicture}
\end{frame}
\begin{frame}{Production Rule Agents}
\begin{center}
\includegraphics[scale=0.175]{hanabiBuilder}
\end{center}
\begin{block}{Exercise}
\href{http://hanabi.fosslab.uk/builder.html}{Try it out!}
\note{
Do live demo -
First Agent
\begin{enumerate}
\item Play If Certain
\item Tell Randomly
\item Discard Randomly
\end{enumerate}
Second Agent
\begin{enumerate}
\item Play Probably Safe Card: 0.8
\item Tell Randomly
\item Discard Randomly
\end{enumerate}
Place Discard at top of order and run. Order of rules important
}
\end{block}
\end{frame}
\begin{frame}[fragile]{Monte-Carlo Tree Search}
\begin{center}
\begin{tikzpicture}[->,>=stealth',level/.style={sibling distance = 5cm/#1,
level distance = 1.5cm},scale=1,every node/.style={transform shape}]
\node [arn_n] {0}
child{
node [arn_r] (c1) {0}
child{ node [arn_n] (c) {0} edge from parent node[above left] {Tell 1}}
child{ node [arn_n] (d) {1} edge from parent node[above right] {Play 1}}
edge from parent node[above left] {Tell 1}
}
child{ node [arn_r] {0}
child{ node [arn_n] (a) {0} edge from parent node[above left] {Tell 1}}
child{ node [arn_n] (b) {1} edge from parent node [above right] {Play 1}
}
edge from parent node [above right]{Discard 1}
}
;
\path (a) -- (b) node [midway] {$\cdots$};
\path (c) -- (d) node [midway] {$\cdots$};
\end{tikzpicture}
\end{center}
\end{frame}
\begin{frame}{Monte-Carlo Tree Search}
\begin{itemize}
\item Selection
\begin{itemize}
\item $\argmax_i f(i) = \frac{w_i}{n_i} + c\sqrt{\frac{\ln N_i}{n_i}} $
\end{itemize}
\item Expansion
\item Simulation
\item Back-propagation
\end{itemize}
\end{frame}
\begin{frame}{Genetic Algorithms}
\begin{tikzpicture}
\node[box](init) at (-1, 0){Initial \\ Population};
\node[box](decode) at (2, 0){Decode \\ Population};
\node[box](fitness) at (5, 0){Calculate \\ Fitness};
\node[box](selection) at (8, 0){Selection};
\node[box](cross) at (8, -2.5){Crossover};
\node[box](mutate) at (8, -5){Mutation};
\node[box](newPop) at (2, -5){New Population};
\path[->]
(init) edge [] node [] {} (decode)
(decode) edge [] node [] {} (fitness)
(fitness) edge [] node [] {} (selection)
(selection) edge [] node [] {} (cross)
(cross) edge [] node [] {} (mutate)
(mutate) edge [] node [] {} (newPop)
(newPop) edge [] node [] {} (decode)
;
\end{tikzpicture}
\end{frame}
\end{document}
slides/images/hanabiBuilder.png

114 KiB

......@@ -7,7 +7,7 @@
\usepackage{tikz}
\usetikzlibrary{calc,trees,positioning,arrows,chains,shapes.geometric,%
decorations.pathreplacing,decorations.pathmorphing,shapes,%
matrix,shapes.symbols}
matrix,shapes.symbols,automata,positioning}
\usepackage{graphicx}
\graphicspath{{images/}}
......@@ -17,7 +17,7 @@
\usepackage{luatex85}
\usepackage{verbatim}
\usepackage{minted}
\usepackage{amsmath}
\usepackage{tabularx}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment