\section{Introduction}
\subsection{Agents}

Agents represent artificial individuals which move on a given
world. In our system the agents are described as:
\begin{enumerate}
\item Reactive, they sense objects (agents) in their neighborhood
and react (communicate and wander) upon them.
\item Autonomous, they control their communication and wander
behavior.
\item Indirect goal-oriented, they react in response to their
environment but have encoded the means to act goal-oriented with
respect to the generation goal.
\item Temporally continuous, per generation since we investigate a
generational based evolutionary system contrary to a steady state
system.
\item Communicative, they communicate with other agents about
agents.
\item Not learning, they do learn via evolution but do not learn
during their lifetime.
\item Mobile, they wander from one location to the next location
in their environment.
\item Agents may be handicapped(blind, deaf, dumb, insane).
\end{enumerate}
Every agent has one or more sensors and a neuro-controller(ANN).
When an agent is called to move, it senses another agent using its
sensor and submits the coordinates to the neuro-controller which
returns an array of possible directions to move, of which the
agents selects one. Furthermore if it is communicative it listens
to other agents in its neighborhood. By evaluating  the
information of its ANN output it decides where to go. After
determining a new place to go the agent recommends others a
direction to avoid.


\subsection{Sensors} Sensors represent the interface between agent
and world. Every agent has one or more sensors, which have a
variable sensor range. The function of a sensor is to sense a
agents in its range. If an object is detected, the sensor
calculates the agents relative angle respecting the global
position. There are three types of sensors :
\begin{itemize}
 \item Visual sensors
 \item Hearing sensors
 \item Bumper sensors
\end{itemize}


\subsection{Communication}

Like in real life we do not only decide how to react by
ourselves(instincts, knowledge, experience) but also consult
others for advice. So do our agents. In specific this means that
the agent does not only submit its sensor data to the ANN, but
also the outcome of the communication with another agent.\\
Communication is defined as data transaction between agents (about
other agents or objects). The genotype of an agent decides whether
an agent is communicative or not. If an agent $a_i$ wants to
communicate $a_i$ must first find another agent $a_j$ in his
communication range. Next the agent $a_i$ tries to listen if his
counterpart said something. The communication topic is the
direction $a_j$ avoids.

\newpage
\section{Interfaces}

Methods provided for SimulationManager:
\begin{description}
 \item [public CAGT\_MAN(CMAN\_Sim manager\_reference):]
        Constructor for the AgentManagerClass, needs a reference
        on the SimulationManager.
 \item [public void setPhenotypes(CNVList phenotypes):]
        Sets the phenotypes (constructed by GA's).
 \item [public void setAgentsStartingPositions(CNVList
       agents\_starting\_positions):]
        Sets starting positions for all agents (CNVList agents\_starting\_positions from
        world).
 \item [public void createPopulation():]
        Creates new population of agents based on phenotypes and starting
        positions.
 \item [public CNVList getAllAnnInputs(CNVList local\_worlds):]
        Collects all ANN inputs of the agents in current population.
 \item [public CNVList setAllAnnOutputs(CNVList ann\_outputs):]
        Every agent determines its direction to go based on its ANN
        output.
        Returns one suggested direction for each agent.
 \item [public void setNewPosition(CNVList confirm):]
        After the world has checked if a suggested direction is
        valid, the new positions of the agents are set.
 \item [public CNVList saveState():]
        Stores all relevant information needed to continue the
        simulation.
 \item [public void loadState(CNVList):]
        Loads the information saved by saveState.
 \item [public CNVList getStatistics():]
        Returns various statistical information.
\end{description}

\section{Class Diagrams}
\includegraphics[height=9in]{./Agents_Sensors/Pics/ClassDiagram.eps}
\newpage

\section{Sequence Diagrams}
\includegraphics[height=9in]{./Agents_Sensors/Pics/SequenceDiagram.eps}
\newpage


\section{Package description}

Structure of CNVLists:
\begin{itemize}
    \item phenotypes:
     \begin{description}
        \item [sen(n)range(m) = double:]
        (range of sensors n of agent m(=agent\_id))
        \item [sen(n)angle(m) = int:]
         (opening angle of of sensors n of agent m(=agent\_id))
        \item [sen(n)type(m) = int]
         (type of sensors n of agent m(=agent\_id))
     \end{description}
    \item agents\_starting\_positions :
     \begin{description}
        \item [position(agent\_id) = point\_id]
        \item [direction(agent\_id) = 0..359]
     \end{description}
    \item local\_worlds
     \begin{description}
        \item [aid(m)pid(n)distance = DOUBLE :]
            (distance of point with local id n for agent m)
        \item [aid(m)pid(n)angle = DOUBLE :]
            (angle of point with local id n in relation to agent m)
        \item [aid(m)pid(n)agent = INT :]
            (agent\_id of agent on point with local id n for agent m)
        \item [aid(m)pid(n)point = INT :]
            (point\_id of point with local id n for agent m)
        \item [aid(m)pid(n)neighbour = INT:]
            (if point with local id n is neighbour of point on which agent m sits 1 else 0)
     \end{description}
     \item ann\_output:
      \begin{description}
        \item [(ann\_id)output(n) = double]
       \end{description}
     \item ann\_input
        \begin{description}
            \item [(ann\_id)input(n) = int]
         \end{description}
     \item return value of setAllAnnOutputs
        \begin{description}
            \item [move[agent\_id] = int point\_id]
        \end{description}
     \item confirm
        \begin{description}
            \item [confirm(agent\_id)= 1 or 0 INT]
        \end{description}
\end{itemize}

\section{Visualization}
 \includegraphics[height=5in]{./Agents_Sensors/Pics/BAgt.eps}
\newline
    This is the visualization of one specific agent.
    The blue shaped areas represent the agents vision.
    The visualization of the hearing ability is analog but in an other
    color(green).
    The gray circle represents
     the agent, the yellow dot indicates
    the direction of the agent.
    The white circle indicates the maximum possible
    vision or hearing ability.


 \newpage

\section{Protocols}

\subsection{5.3.2001}

\begin{enumerate}
\item Person responsible for the protocol: Johannes Pletzer
\item Participating persons: Thomas Soboll, Robert Puschnik
\item Topics talked about:
\begin{itemize}
\item Global overview of the project (ELC goes Java)
\item Group assignment - 8 subgroups:
\begin{enumerate}
\item agents
\item world
\item sensors
\item ANN
\item GUI
\item GA
\item statistics
\item program management
\end{enumerate}
\item Administrative things
\end{itemize}
\item See "Aufgabenblatt 1"
\item Open questions:
\begin{enumerate}
\item Do sensors have to be evolved?
\item Why do we take just one agent, and why by random?
\item Where do we start searching?
\item Is the world and ideal world(i.e. no border, and no
objects/except agents)?
\item Constitution (in the means of the implementation) of the
world): viewing directory, coordinates, storing of agent position,
type of the parameters,... ?
\item What is understood in agent communication in specific(just
detection or other data transfer)?
\end{enumerate}
\end{enumerate}

\subsection{23.3.2001}

\begin{enumerate}
\item Person responsible for the protocol: Johannes Pletzer, Thomas Soboll, Robert Puschnik
\item Participating persons: Johannes Pletzer, Thomas Soboll, Robert Puschnik
\item Topics talked about:
\begin{itemize}
\item Expansion of our task: Not only sensors, but also agents.
\item More precise overview on the tasks of the groups.
\item Short introduction to the of UML for our presentations.
\item Answering of questions.
\end{itemize}
\item Work to do: see "Aufgabenblatt 2"
\item Open questions:
\begin{enumerate}
\item How are the interfaces defined?
\item How many sensors? For which objects? Who defines them?
\item How do we implement communication?
\end{enumerate}
\end{enumerate}

\subsection{30.3.2001}

\begin{enumerate}
\item Person responsible for the protocol: Johannes Pletzer, Thomas Soboll, Robert Puschnik
\item Participating persons: Johannes Pletzer, Thomas Soboll, Robert Puschnik
\item Topics talked about:
\begin{itemize}
\item Presentations of status quo by all groups.
\item Presentation of class diagram and sequence diagram.
\item Answering of questions.
\end{itemize}
\item Work to do: more detailed class and sequence diagrams.
\item Open questions:
\begin{enumerate}
\item World?
\end{enumerate}
\end{enumerate}

\subsection{6.4.2001}

\begin{enumerate}
\item Person responsible for the protocol: Johannes Pletzer, Thomas Soboll, Robert Puschnik
\item Participating persons: Johannes Pletzer, Thomas Soboll, Robert Puschnik
\item Topics talked about:
 \begin{itemize}
  \item Presentations of status quo by all groups.
  \item Presentation of modified class diagram and sequence diagram.
  \item Answering of questions.
  \item Parameter specification for interfaces.
 \end{itemize}
 \begin{itemize}
  \item Implement a prototype.
  \item Reorganize the existing communication structure(scream).
 \end{itemize}
\item Open questions:
 \begin{enumerate}
  \item World?
  \item Statistics which values should be stored by agent?
 \end{enumerate}
\end{enumerate}

\subsection{27.04.2001}

\begin{enumerate}
\item Person responsible for the protocol: Johannes Pletzer, Thomas Soboll, Robert Puschnik
\item Participating persons: Johannes Pletzer, Thomas Soboll, Robert Puschnik
\item Topics talked about:
 \begin{itemize}
  \item Presentations of status quo by all groups.
  \item Presentation of modified class diagram and sequence diagram.
  \item Answering of questions.
  \item Parameter specification for interfaces.
 \end{itemize}
 \item New assignments:
 \begin{itemize}
  \item change all interfaces to CNVList.
  \item Implement new prototype.
 \end{itemize}
\item Open questions:
 \begin{enumerate}
  \item World?
  \item GUI?
  \item Statistics which values should be stored by agent?
 \end{enumerate}
\end{enumerate}

\subsection{04.05.2001}

\begin{enumerate}
\item Person responsible for the protocol: Johannes Pletzer, Thomas Soboll, Robert Puschnik
\item Participating persons: Johannes Pletzer, Thomas Soboll, Robert Puschnik
\item Topics talked about:
 \begin{itemize}
  \item Presentations of status quo by all groups.
  \item Presentation of modified class diagram and sequence diagram.
  \item Answering of questions.
  \item Parameter specification for interfaces.
 \end{itemize}
 \item New assignments:
 \begin{itemize}
  \item change all interfaces to CNVList.
  \item Implement new prototype.
 \end{itemize}
\item Open questions:
 \begin{enumerate}
  \item World?
  \item GUI?
  \item Statistics which values should be stored by agent?
 \end{enumerate}
\end{enumerate}

\subsection{18.05.2001}

\begin{enumerate}
\item Person responsible for the protocol: Johannes Pletzer, Thomas Soboll, Robert Puschnik
\item Participating persons: Johannes Pletzer, Thomas Soboll, Robert Puschnik
\item Topics talked about:
 \begin{itemize}
  \item Presentations of status quo by all groups.
  \item Presentation of modified class diagram and sequence diagram.
  \item Answering of questions.
  \item Parameter specification for interfaces.
 \end{itemize}
 \item New assignments:
 \begin{itemize}
  \item Implement bumper sensors.
  \item saveState().
  \item loadState().
  \item getStatistics().
  \item change sensorrange type int to double.
 \end{itemize}
\item Open questions:
 \begin{enumerate}
  \item World?
  \item Statistics which values should be stored by agent?
 \end{enumerate}
\end{enumerate}

\subsection{01.06.2001}

\begin{enumerate}
\item Person responsible for the protocol: Johannes Pletzer, Thomas Soboll, Robert Puschnik
\item Participating persons: Johannes Pletzer, Thomas Soboll, Robert Puschnik
\item Topics talked about:
 \begin{itemize}
  \item Presentations of status quo by all groups.
  \item Presentation of modified class diagram and sequence diagram.
  \item Answering of questions.
  \item Parameter specification for interfaces.
 \end{itemize}
 \item New assignments:
 \begin{itemize}
  \item Implement a JavaBean for visualization.
  \item Update document.
 \end{itemize}
 \item Open questions:
 \begin{enumerate}
  \item How are the beans controlled and by whom?
 \end{enumerate}
\end{enumerate
