\setcounter{AlgoLine}{0}
\DontPrintSemicolon
	\KwIn{Set $E$ of elements constituting a solution; fitness function $f$ to minimize, parameters \textcolor{myevidence}{$I_{max}, \tau_b$} and improvement method  \textcolor{myevidence}{$a(\cdot)$}}
	\KwResult{Solution $s^*$}
	$f^* \leftarrow \infty$\\
	$\tau_c \leftarrow 1$\\
	\For {$\forall e \in E$}
	{ $\tau_e \leftarrow \tau_c$}
	\For{$I_{max}$ iterations}
	{Initialize $s$ to a partial, trivial solution\\ 
		$R \leftarrow E$\tcp*[r]{Elements that can be added to $s$}
		\While {$R \neq \varnothing$}
		{Randomly choose $e \in R$ with a probability proportionnal to $\tau_e$\\
			$s \leftarrow s \cup e$\\
			From $R$, remove the elements that cannot be added any more to $s$\\
		}
		$s' \leftarrow a(s)$\tcp*[r]{Find the local optimum $s'$ associated with $s$}
		\If(manage over-learning){$s' = s^*$}
		{$\tau_c \leftarrow \tau_c+1$\tcp*[r]{More weight to the newly constructed solutions}
			\For(Erase all trails){$\forall e \in E$}
			{ $\tau_e \leftarrow \tau_c$}
		}
		\If(manage best solution improvement){$f^* > f(s')$}
		{$f^* \leftarrow f(s')$\\
			$s^* \leftarrow s'$\tcp*[r]{Update best solution}
			$\tau_c \leftarrow 1$\tcp*[r]{Give minimum weight to the newly constructed solutions}
			\For(Erase all trails){$\forall e \in E$}
			{ $\tau_e \leftarrow \tau_c$}
		}
		\For(reinforce the trails associated with the current solution){$\forall e \in s'$}
		{$\tau_e \leftarrow \tau_e + \tau_c$}
		\For(reinforce the trails associated with the best solution){$\forall e \in s^*$}
		{$\tau_e \leftarrow \tau_e + \tau_b$}
	}
