如何在 tcolorbox 环境中使用 algorithm2e 包编写伪算法?

如何在 tcolorbox 环境中使用 algorithm2e 包编写伪算法?

我最近在第二版中看到了强化学习:简介由 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}  

结果如下:

算法2

基本上,这只是算法部分。我不知道如何开始改变它的外观,因为在文档中,只有很少的命令可以改变视觉效果,而且似乎没有一个命令有用。

答案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}

这是视觉效果:

算法3


通常我不会发布自答问题。这是一个真正的问题,但我在发布五分钟后找到了答案。因为它可能对其他人有帮助,所以我把它留在这里。

答案2

这更像是一条长评论,而不是 gvgramazio 已经提供的答案。

我只是建议将tcolorbox+algoritm环境集成到新myalgorithm环境中。使用before upperafter 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}

在此处输入图片描述

相关内容