\documentclass{book}
\usepackage{algorithm}
\usepackage{algorithmic}
\usepackage{amsthm,amssymb,amsmath,mathtools}
\renewcommand{\algorithmicforall}{\textbf{for each}}
\renewcommand{\algorithmicensure}{\textbf{input}}
\usepackage{xepersian}
\settextfont{Persian Modern}
\setdigitfont{Persian Modern}

\begin{document}

\subsection{شبه کد ازدحام گربه‌ها}

\begin{algorithm}
\caption{شبه کد ازدحام گربه‌ها}
{\latin{
\begin{algorithmic}
\STATE Population $ \leftarrow 0$;
\FOR { $k=1$ to PopSize}
\STATE $C_k velocity  \leftarrow  $   Random Velocity();
\STATE $C_k position \leftarrow $ Random Position();
\STATE $C_k lbest \leftarrow C_k position $ ;
\STATE Population $\leftarrow C_k$
\ENDFOR
\STATE  $C_{gbest} \leftarrow 0$;
\WHILE{Stop Condition}
\STATE SearchPopulation, TrackPopulation $\leftarrow$ SetCatsPopModes(Population);
\STATE Evaluate Population(population);
\STATE $C_{gbest} \leftarrow $ GetBestSolution(Population);
\FORALL {$C_k \in$SearchPopulation}
\STATE $j \leftarrow$ SMP;
\IF{SPC=true}
\STATE $j \leftarrow j-1$
\ENDIF
\STATE CopySet $\leftarrow 0$
\STATE CopyPopulation $\leftarrow $ MakePositionCopies($C_k position,j$)
\FORALL {X$\in $CopyPopulation}
\STATE X$\leftarrow$UpdatePosition(X,CDC,SRD);
\ENDFOR
\STATE EvaluatePopulation(CopyPopulation);
\STATE F$S_{min} \leftarrow$GetWorstSolution(CopyPopulation); 
\STATE F$S_{max} \leftarrow$GetBestSolution(CopyPopulation); 
\STATE NormalizeFittness(CopyPopulation,F$S_{min}$,F$S_{max}$);
\STATE $C_k \leftarrow$SelectPosition(CopyPopulation);
\FORALL{$C_k \in $TrackPopulation}
\STATE $C_k velocity \leftarrow$ UpdateVelocity($C_k velocity,C_k lbest,c_1)$;
\STATE $C_k position \leftarrow$ UpdatePosition($C_k position,C_k velocity)$;
\IF{Fitness($C_k position$)$\geq$Fitness($C_k lbest$)}
\STATE $C_k lbest \leftarrow C_k position$
\ENDIF
\ENDFOR
\ENDFOR
\ENDWHILE
\STATE EvaluatePopulation(Population);
\STATE $S_{best} \leftarrow$GetBestSolution(Population);
\RETURN S$-best$;
\end{algorithmic}
}}
\end{algorithm}

\end{document}