我正在嘗試在 MiKTeX 中編寫偽代碼。我已經使用過\usepackage{algorithm}
\usepackage{algorithmic}
,但我得到:
每個結構的未定義控制序列(\State、\While、\For、\If)。
\begin{algorithm}
\caption{PSO}
\label{pseudoPSO}
\begin{algorithmic}[1]
\State Initialize a population of particles with random values positions and velocities from \textit{D} dimensions in the search space
\WHILE{Termination condition not reached}
\For{ Each particle \textit{i}}
\State Adapt velocity of the particle using Equation \ref{eq:1}
\State Update the position of the particle using Equation \ref{eq:2}
\State Evaluate the fitness {$f(\overrightarrow{X}_i)$}
\If{\begin{equation}f(\overrightarrow{X}_i)<f(\overrightarrow{P}_i)\end {equation}
\begin{equation}\overrightarrow{P}_i \gets \overrightarrow{X}_i\end{equation}
\EndIf
\If{\begin{equation}f(\overrightarrow{X}_i)<f(\overrightarrow{P}_g)\end{equation}
\begin{equation}\overrightarrow{P}_g \gets \overrightarrow{X}_i\end{equation}
\EndIf
\EndFor
\ENDWHILE
\end{algorithmic}
\end{algorithm}
答案1
您正在加載algorithmic
,但使用 的語法algpseudocode
。
\documentclass{article}
\usepackage{algorithm,algpseudocode}
\begin{document}
\begin{algorithm}
\caption{PSO}
\label{pseudoPSO}
\begin{algorithmic}[1]
\State Initialize a population of particles with random values positions
and velocities from \textit{D} dimensions in the search space
\While{Termination condition not reached}
\For{Each particle $i$}
\State Adapt velocity of the particle using Equation \ref{eq:1}
\State Update the position of the particle using Equation \ref{eq:2}
\State Evaluate the fitness {$f(\overrightarrow{X}_i)$}
\If{$f(\overrightarrow{X}_i)<f(\overrightarrow{P}_i)$}
\State $\overrightarrow{P}_i \gets \overrightarrow{X}_i$
\EndIf
\If{$f(\overrightarrow{X}_i)<f(\overrightarrow{P}_g)$}
\State $\overrightarrow{P}_g \gets \overrightarrow{X}_i$
\EndIf
\EndFor
\EndWhile
\end{algorithmic}
\end{algorithm}
\end{document}
equation
在演算法內部使用沒有太大意義,特別是在 的參數中\If
。請注意,\WHILE
和\ENDWHILE
應該是\While
和\EndWhile
。