我最近在第二版中看到了强化学习:简介由 Sutton 和 Barto 提出,这是一种展示伪算法的有吸引力的方法。以下是示例图像。
我认为环境已经完蛋了彩色盒子包,我想我应该能够做出类似的东西。不过,我喜欢通过算法2e包。有没有办法将两者混合在一起?理想的情况是让背景颜色、框和标题与图像以及 algorithm2e 的算法环境的内部结构相同。
这是迄今为止我所做工作的代码:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[ruled,longend]{algorithm2e}
\usepackage{textgreek}
\usepackage{amssymb}
\begin{document}
\begin{algorithm}
Algorithm parameters: step size $\alpha \in (0, 1]$, small $epsilon > 0$\;
Initialize $Q(s, a)$, for all $s \in \mathcal{S}^+, a \in \mathcal{A}(s)$, arbitrarily except that $Q(\mathrm{terminal}, \cdot) = 0$\;
\ForEach{episode}{
Initialize S\;
\ForEach{step of episode}{
Choose $A$ from $S$ using policy derived from $Q$ (e.g., \textepsilon-greedy)\;
Take action $A$, observe $R$, $S'$\;
$Q(S, A) \leftarrow Q(S, A) + \alpha [R + \gamma \max_a Q(S', a) - Q(S, A)]$\;
$S \leftarrow S'$\;
}
}
\caption{Q-learning (off-policy TD control) for estimating $\pi \approx \pi_*$}
\end{algorithm}
\end{document}
结果如下:
基本上,这只是算法部分。我不知道如何开始改变它的外观,因为在文档中,只有很少的命令可以改变视觉效果,而且似乎没有一个命令有用。
答案1
我错过了 algorithm2e 手册中的部分内容,其中说明该选项H
使环境不可浮动,因此可以将其放入 tcolorbox 环境中。
这是更新后的代码:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[longend]{algorithm2e}
\usepackage{textgreek}
\usepackage{amssymb}
\usepackage{tcolorbox}
\begin{document}
\begin{tcolorbox}[fonttitle=\bfseries, title=Q-learning (off-policy TD control) for estimating $\pi \approx \pi_*$]
\begin{algorithm}[H]
Algorithm parameters: step size $\alpha \in (0, 1]$, small $epsilon > 0$\;
Initialize $Q(s, a)$, for all $s \in \mathcal{S}^+, a \in \mathcal{A}(s)$, arbitrarily except that $Q(\mathrm{terminal}, \cdot) = 0$\;
\ForEach{episode}{
Initialize S\;
\ForEach{step of episode}{
Choose $A$ from $S$ using policy derived from $Q$ (e.g., \textepsilon-greedy)\;
Take action $A$, observe $R$, $S'$\;
$Q(S, A) \leftarrow Q(S, A) + \alpha [R + \gamma \max_a Q(S', a) - Q(S, A)]$\;
$S \leftarrow S'$\;
}
}
\end{algorithm}
\end{tcolorbox}
\end{document}
这是视觉效果:
通常我不会发布自答问题。这是一个真正的问题,但我在发布五分钟后找到了答案。因为它可能对其他人有帮助,所以我把它留在这里。
答案2
这更像是一条长评论,而不是 gvgramazio 已经提供的答案。
我只是建议将tcolorbox+algoritm
环境集成到新myalgorithm
环境中。使用before upper
和after upper
选项,algorithm
可以轻松地将环境集成到 tcolorbox 中。新环境包括标题作为第二个参数。第一个参数是可选的,可以帮助自定义框:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[longend]{algorithm2e}
\usepackage{textgreek}
\usepackage{amssymb}
\usepackage{tcolorbox}
\newtcolorbox{myalgorithm}[2][]{%
fonttitle=\bfseries,
title=#2,
#1,
before upper={\begin{algorithm}[H]},
after upper={\end{algorithm}}
}
\begin{document}
\begin{myalgorithm}{Q-learning (off-policy TD control) for estimating $\pi \approx \pi_*$}
Algorithm parameters: step size $\alpha \in (0, 1]$, small $epsilon > 0$\;
Initialize $Q(s, a)$, for all $s \in \mathcal{S}^+, a \in \mathcal{A}(s)$, arbitrarily except that $Q(\mathrm{terminal}, \cdot) = 0$\;
\ForEach{episode}{
Initialize S\;
\ForEach{step of episode}{
Choose $A$ from $S$ using policy derived from $Q$ (e.g., \textepsilon-greedy)\;
Take action $A$, observe $R$, $S'$\;
$Q(S, A) \leftarrow Q(S, A) + \alpha [R + \gamma \max_a Q(S', a) - Q(S, A)]$\;
$S \leftarrow S'$\;
}
}
\end{myalgorithm}
\begin{myalgorithm}[sharp corners, colback=cyan!15]{Q-learning (off-policy TD control) for estimating $\pi \approx \pi_*$}
Algorithm parameters: step size $\alpha \in (0, 1]$, small $epsilon > 0$\;
Initialize $Q(s, a)$, for all $s \in \mathcal{S}^+, a \in \mathcal{A}(s)$, arbitrarily except that $Q(\mathrm{terminal}, \cdot) = 0$\;
\ForEach{episode}{
Initialize S\;
\ForEach{step of episode}{
Choose $A$ from $S$ using policy derived from $Q$ (e.g., \textepsilon-greedy)\;
Take action $A$, observe $R$, $S'$\;
$Q(S, A) \leftarrow Q(S, A) + \alpha [R + \gamma \max_a Q(S', a) - Q(S, A)]$\;
$S \leftarrow S'$\;
}
}
\end{myalgorithm}
\end{document}