\chapter{Introduction to SNNS}
\label{IntroductionSNNS}
\thispagestyle{empty}

SNNS (Stuttgart Neural Network Simulator) is a simulator for neural
networks developed at the Institute for Parallel and Distributed High
Performance Systems (Institut f\"ur Parallele und Verteilte
H\"ochstleistungsrechner, IPVR) at the University of Stuttgart since
1989. The goal of the project is to create an efficient and flexible
simulation environment for research on and application of neural nets.

\index{Components (Figure)} The SNNS simulator consists of four main
components that are depicted in figure~\ref{SNNS}: Simulator kernel,
graphical user interface, batch simullator version snnsbat, and
network compiler snns2c. There was also a fifth part, Nessus, that was
used to construct networks for SNNS. Nessus, however, has become
obsolete since the introduction of powerful interactive network
creation tools within the graphical user interface and is no longer
supported. The simulator kernel operates on the internal network data
structures of the neural nets and performs all operations on them. The
graphical user interface XGUI\footnote{X Graphical User Interface},
built on top of the kernel, gives a graphical representation of the
neural networks and controls the kernel during the simulation run. In
addition, the user interface can be used to directly create,
manipulate and visualize neural nets in various ways.  Complex
networks can be created quickly and easily.  Nevertheless, XGUI should
also be well suited for unexperienced users, who want to learn about
connectionist models with the help of the simulator. An online help
system, partly context-sensitive, is integrated, which can offer
assistance with problems.

\begin{figure}[htbp]
\begin{center}
  \begin{minipage}{\textwidth}
    \screendump{0.8}{intro_figs/intro_snns.ps}
  \end{minipage}
\caption{SNNS components: simulator kernel, graphical user
interface xgui, batchman, and network compiler snns2c}
\label{SNNS}
\end{center}
\end{figure}


An important design concept was to enable the user to select only those
aspects of the visual representation of the net in which he is
interested. This includes depicting several aspects and parts of the
network with multiple windows as well as suppressing unwanted
information.

\index{Hardware!Table}
\index{Operating System!Table}
\begin{table}
\begin{center}
\begin{tabular} {|l|l|c|c|}
\hline
{\bf machine type} & {\bf operating system}\\
\hline
SUN SparcSt. ELC,IPC            & SunOS 4.1.2, 4.1.3, 5.3, 5.4\\
SUN SparcSt. 2                  & SunOS 4.1.2\\
SUN SparcSt. 5, 10, 20          & SunOS 4.1.3, 5.3, 5.4\\
DECstation 3100, 5000           & Ultrix V4.2\\
DEC Alpha AXP 3000              & OSF1 V2.1\\
IBM-PC 80486, Pentium           & Linux\\
IBM RS 6000/320, 320H, 530H     & AIX V3.1, AIX V3.2\\
HP 9000/720, 730                & HP-UX 8.07\\
SGI Indigo 2                    & IRIX 4.0.5, 5.3\\
\hline
\end{tabular}
\caption{Machines and operating systems on which SNNS has been tested\newline 
(as of November 1995)}
\label{TabMachine}
\end{center}
\end{table}

SNNS is implemented completely in ANSI-C. The simulator kernel has already
been tested on numerous machines and operating systems (see also table
\ref{TabMachine}). XGUI is based upon X11 Release 5 from MIT and the
Athena Toolkit, and was tested under various window managers, like {\tt
  twm, tvtwm, olwm, ctwm, fvwm}. It also works under X11R6.

\clearpage

This document is structured as follows:

This chapter~\ref{IntroductionSNNS} gives a brief introduction and
overview of SNNS. 

Chapter~\ref{LicenseCopyAcknowl} gives the details about how to obtain
SNNS and under what conditions. It includes licensing, copying and
exclusion of warranty. It then discusses how to install SNNS and gives
acknowledgments of its numerous authors.

Chapter~\ref{Connectionism} introduces the components of neural nets
and the terminology used in the description of the simulator.
Therefore, this chapter may also be of interest to people already
familiar with neural nets.

Chapter~\ref{XGUIManual} describes how to operate the two-dimensional
graphical user interface. After a short overview of all commands a
more detailed description of these commands with an example dialog is
given.

Chapter~\ref{PatHandle} describes the form and usage of the patterns
of SNNS

Chapter~\ref{XGUIEditor} describes the integrated graphical editor of
the 2D user interface. These editor commands allow the interactive
construction of networks with arbitrary topologies.

Chapter~\ref{Bignet} is about a tool to facilitate the generation of
large, regular networks from the graphical user interface.

Chapter~\ref{xguiAnalyze} describes the network analyzing facilities,
built into SNNS.

Chapter~\ref{ImplemModels} describes the connectionist models that are
already implemented in SNNS, with a strong emphasis on the less
familiar network models.

Chapter~\ref{Pruning} describes the four pruning functions which are
available in SNNS. 

Chapter~\ref{XGUI3D} introduces a new visualization component for
three-dimensional visualization of the topology and the activity of
neural networks with wireframe or solid models.

Chapter~\ref{rpcversion} describes how to use the full power of
multiple computers in a cluster of workstations for training networks
with SNNS.

Chapter~\ref{Batchversion} introduces the batch capabilities of SNNS.
They can be accessed via an additional interface to the kernel, that
allows for easy background execution.

Chapter~\ref{SNNStools} gives a brief overlook over the tools that
come with SNNS, without being an internal part of it.

Chapter~\ref{KernelFunctionInterface} describes in detail the
interface between the kernel and the graphical user interface. This
function interface is important, since the kernel can be included in
user written C programs.

Chapter~\ref{TransferFunctions} details the activation functions and output
function that are already built in.

In appendix A the format of the file interface to the kernel is
described, in which the nets are read in and written out by the
kernel. Files in this format may also be generated by any other
program, or even an editor. 

The grammars for both network and pattern files are also given here.

In appendix B and C examples for network and batch configuration files
are given.