You can cut the minimal example down to
\documentclass{article}
\usepackage[hebrew,english]{babel}
\usepackage{algorithmic}
\begin{document}
\begin{algorithmic}[1]
\STATE{A line which should be numbered.}
\end{algorithmic}
\end{document}
i.e. the algorithm
package is nothing to do with this. The fundamental problem seems to be that the hebrew
option for babel
redefines \@arabic
such that it is not expandable. That makes some internal testing fail, and so no number is printed. Restoring the original definition sorts this out
\documentclass{article}
\usepackage[hebrew,english]{babel}
\usepackage{algorithmic}
\begin{document}
\makeatletter
\def\@arabic#1{\number#1}
\makeatother
\begin{algorithmic}[1]
\STATE{A line which should be numbered.}
\end{algorithmic}
\end{document}
Whether this will be okay in the real case, I don't know (I'm sure that there is a reason for the change).