I just discovered a nice gallery of pgf examples. This is a figure from Rumelhart and McClelland 1986 showing the structure of their model of parallel distributed processing. I am posting this example there, and here as well. First of all the picture:
parallel distributed processing

And next the latex code: (notice the foreach loops – very cool!!!)

\documentclass[12pt]{article}
\usepackage{tikz}
\usetikzlibrary{arrows}
\begin{document}
\begin{figure*}[htbp]
\centering
\begin{tikzpicture}[scale=.8,cap=round]
% Styles
\tikzstyle{information text}=[text badly centered]
% The graphic
\begin{scope}
\pgfsetarrowsend{stealth'}
\pgfsetlinewidth{1pt}
\draw (1,.9) -- (1,1.8)
node[below=.9cm,text width=3cm,style=information text]
{\small Phonological representation of root form };
\draw (5,-.2) -- (5,.8)
node[below=.9cm,text width=3cm, style=information text]
{ \small Wickelfeature representation of root form };
\draw (11,-.2) -- (11,.8)
node[below=.9cm,text width=3cm, style=information text]
{ \small Wickelfeature representation of past tense };
\draw (16,0.9) -- (16,1.8)
node[below=.9cm,text width=3cm, style=information text]
{ \small Phonological representation of past tense };
\end{scope}
\draw (3,6)
node[text width=3cm, style=information text]
{ \small Fixed Encoding Network };
\draw (8,6)
node[text width=4cm, style=information text]
{ \small Pattern Associator Modifiable Connections };
\draw (13.5,6)
node[text width=3cm, style=information text]
{ \small Decoding/Binding Network };
% draw the nodes
\foreach \x in {1,16}
\foreach \y in {2,3,4} {
\draw (\x,\y) circle (0.1cm);
}
\foreach \x in {5,11}
\foreach \y in {1,2,3,4,5} {
\draw (\x,\y) circle (0.1cm);
}
% we add the lines for the nodes starting in y 2,3, and 4
\foreach \xa / \xb in {1.1 / 4.9, 5.1 / 10.9 , 10.9 / 5.1 , 15.9 / 11.1}
\foreach \ya / \yb / \yc / \yd / \ye in {2 / 3 / 4 / 5 / 1, 3 / 4 / 5 / 1 /
2, 4 / 5 / 1 / 2 / 3} {
\draw (\xa,\ya) -- (\xb,\ya);
\draw (\xa,\ya) -- (\xb,\yb);
\draw (\xa,\ya) -- (\xb,\yc);
\draw (\xa,\ya) -- (\xb,\yd);
\draw (\xa,\ya) -- (\xb,\ye);
}
% add remaining lines from y1 to y5
\foreach \xa / \xb in {5.1 / 10.9 , 10.9 / 5.1}
\foreach \ya / \yb in {1 / 5, 5 / 1} {
\draw (\xa,\ya) -- (\xb,\ya);
\draw (\xa,\ya) -- (\xb,\yb);
}
\end{tikzpicture}
\caption[Model structure from Rumelhart \& McClelland 1986]%
{Model structure from Rumelhart \& McClelland (1986, p .222, Figure 1)}
\label{F:PDP}
\end{figure*}
\end{document}