11

I am trying to write a pseudo code in MiKTeX. I have used \usepackage{algorithm} \usepackage{algorithmic} but I get:

Undefined control sequence' for every structure (\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}
12

You're loading algorithmic, but using the syntax of 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}

It doesn't make much sense using equation inside an algorithm, especially in the argument of \If. Note that \WHILE and \ENDWHILE should be \While and \EndWhile.

enter image description here

  • Works perfectly now, thank you. I used equation when trying to get rid of the errors. – Alexandru Cimpanu Mar 22 '14 at 16:11
  • The above code is generating \caption outside float. \caption, at the 5th line. – Guru Swaroop Jul 2 '16 at 5:57
  • @GuruSwaroop I tried it again and it runs without problems. – egreg Jul 2 '16 at 7:15
  • @erreg Can you help me with this issue : tex.stackexchange.com/questions/317611/… – Guru Swaroop Jul 2 '16 at 7:23
  • @GuruSwaroop I get no error with that code either. – egreg Jul 2 '16 at 7:24

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.