From 4e5cdcde51d07e1d8b8dd05969440657cf30407d Mon Sep 17 00:00:00 2001 From: Martin Thoma Date: Wed, 27 Jul 2016 17:11:34 +0200 Subject: [PATCH] Fix pseudocode --- source-code/Pseudocode/sarsa/Makefile | 36 ++++++++++++++++++ source-code/Pseudocode/sarsa/README.md | 3 ++ source-code/Pseudocode/sarsa/sarsa.png | Bin 0 -> 42619 bytes source-code/Pseudocode/sarsa/sarsa.tex | 50 +++++++++++++++++++++++++ 4 files changed, 89 insertions(+) create mode 100644 source-code/Pseudocode/sarsa/Makefile create mode 100644 source-code/Pseudocode/sarsa/README.md create mode 100644 source-code/Pseudocode/sarsa/sarsa.png create mode 100644 source-code/Pseudocode/sarsa/sarsa.tex diff --git a/source-code/Pseudocode/sarsa/Makefile b/source-code/Pseudocode/sarsa/Makefile new file mode 100644 index 0000000..fa17354 --- /dev/null +++ b/source-code/Pseudocode/sarsa/Makefile @@ -0,0 +1,36 @@ +SOURCE = sarsa +DELAY = 80 +DENSITY = 300 +WIDTH = 512 + +make: + pdflatex $(SOURCE).tex -output-format=pdf + pdflatex $(SOURCE).tex -output-format=pdf + make clean + +clean: + rm -rf $(TARGET) *.class *.html *.log *.aux *.data *.gnuplot + +gif: + pdfcrop $(SOURCE).pdf + convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif + make clean + +png: + make + make svg + inkscape $(SOURCE).svg -w $(WIDTH) --export-png=$(SOURCE).png + +transparentGif: + convert $(SOURCE).pdf -transparent white result.gif + make clean + +svg: + make + #inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg + pdf2svg $(SOURCE).pdf $(SOURCE).svg + # Necessary, as pdf2svg does not always create valid svgs: + inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg + rsvg-convert -a -w $(WIDTH) -f svg $(SOURCE).svg -o $(SOURCE)2.svg + inkscape $(SOURCE)2.svg --export-plain-svg=$(SOURCE).svg + rm $(SOURCE)2.svg diff --git a/source-code/Pseudocode/sarsa/README.md b/source-code/Pseudocode/sarsa/README.md new file mode 100644 index 0000000..8296a6c --- /dev/null +++ b/source-code/Pseudocode/sarsa/README.md @@ -0,0 +1,3 @@ +Compiled example +---------------- +![Example](sarsa.png) diff --git a/source-code/Pseudocode/sarsa/sarsa.png b/source-code/Pseudocode/sarsa/sarsa.png new file mode 100644 index 0000000000000000000000000000000000000000..8f41064cee1bdc96d8852fefb9c8c71779e4317a GIT binary patch literal 42619 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

N#vbnYc-sg{% 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 literal 0 HcmV?d00001 diff --git a/source-code/Pseudocode/sarsa/sarsa.tex b/source-code/Pseudocode/sarsa/sarsa.tex new file mode 100644 index 0000000..9ee3a20 --- /dev/null +++ b/source-code/Pseudocode/sarsa/sarsa.tex @@ -0,0 +1,50 @@ +\documentclass{article} +\usepackage[pdftex,active,tightpage]{preview} +\setlength\PreviewBorder{2mm} + +\usepackage[utf8]{inputenc} % this is needed for umlauts +\usepackage[ngerman]{babel} % this is needed for umlauts +\usepackage[T1]{fontenc} % this is needed for correct output of umlauts in pdf +\usepackage{amssymb,amsmath,amsfonts} % nice math rendering +\usepackage{braket} % needed for \Set +\usepackage{caption} +\usepackage{algorithm} +\usepackage[noend]{algpseudocode} + +\DeclareCaptionFormat{myformat}{#3} +\captionsetup[algorithm]{format=myformat} + +\begin{document} +\begin{preview} + \begin{algorithm}[H] + \begin{algorithmic} + \Require + \Statex Sates $\mathcal{X} = \{1, \dots, n_x\}$ + \Statex Actions $\mathcal{A} = \{1, \dots, n_a\},\qquad A: \mathcal{X} \Rightarrow \mathcal{A}$ + \Statex Reward function $R: \mathcal{X} \times \mathcal{A} \rightarrow \mathbb{R}$ + \Statex Black-box (probabilistic) transition function $T: \mathcal{X} \times \mathcal{A} \rightarrow \mathcal{X}$ + \Statex Learning rate $\alpha \in [0, 1]$, typically $\alpha = 0.1$ + \Statex Discounting factor $\gamma \in [0, 1]$ + \Statex $\lambda \in [0, 1]$: Trade-off between TD and MC + \Procedure{SARSA}{$\mathcal{X}$, $A$, $R$, $T$, $\alpha$, $\gamma$, $\lambda$} + \State Initialize $Q: \mathcal{X} \times \mathcal{A} \rightarrow \mathbb{R}$ arbitrarily + \While{$Q$ is not converged} + \State Select $(s, a) \in \mathcal{X} \times \mathcal{A}$ arbitrarily + \While{$s$ is not terminal} + \State $r \gets R(s, a)$ \Comment{Receive the reward} + \State $s' \gets T(s, a)$ \Comment{Receive the new state} + \State Calculate $\pi$ based on $Q$ (e.g. epsilon-greedy) + \State $a' \gets \pi(s')$ + \State $Q(s, a) \gets (1 - \alpha ) \cdot Q(s, a) + \alpha \cdot (r + \gamma Q(s', a'))$ + \State $s \gets s'$ + \State $a \gets a'$ + \EndWhile + \EndWhile + \Return $Q$ + \EndProcedure + \end{algorithmic} + \caption{SARSA: Learn function $Q: \mathcal{X} \times \mathcal{A} \rightarrow \mathbb{R}$} + \label{alg:sarsa} + \end{algorithm} +\end{preview} +\end{document} \ No newline at end of file