\chapter{Intelligente Agenten}
\label{intelligente agenten}
    Intelligente Agenten stellen das zentrale Konzept für den Entwurf von Systemen der \ac{KI} dar.
    Sie dienen gleichzeitig als Abstraktionsschicht und als interdisziplinäres Kommunktionsmodell.
    Die Agenten haben dabei folgende Eigenschaften:
    \begin{itemize}
        \item sie verfolgen ihre Ziele autonom
        \item sie agieren in Umgebungen, die sich ändern können
        \item sie sind gegen Probleme in Ein und Ausgabe robust (\say{prepared for failure})
        \item sie sind nicht unbedingt physikalisch oder graphisch verkörpert
    \end{itemize}
    \includegraphics[width = .6\textwidth]{IntelligentAgent.png}\\
    Der Agent besteht hierbei aus einer Kombination von Architektur(Sensorik, Aktorik, ausführender Computer ($m$)) und dem Agentenprogramm (\ref{agentenprogramme}).
    Hierbei ist die Optimalität des Agenten begrenzt durch:
    $$ AG_m = \{Ag | Ag \in AG \text{und der Agent }Ag\text{ kann auf }m\text{ implementiert werden}\}$$

    \section{Abgrenzungen}
    \label{intelligente agenten: abgrenzungen}
        \includegraphics[width = \textwidth]{agenten_abgrenzung.png} 

    \section{Rationalität}
    \label{agenten: rationalitaet}
        Ein Agent ist dann \say{rational}, wenn er auf Basis jeder möglichen \say{Wahrnehmungsfolge} immer die Aktion auswählt, die sien Leistungsbewertung maximiert.
        Er wählt also die Aktion/ Aktionsfolge, die den maximalen erwarteten Nutzen (\ref{nutzentheorie}) bringt.
        Hierbei wird keine Allwissenheit (\ref{agenten: allwissenheit}) des Agenten vorausgesetzt.
        Was zu einem gegebenen Zeitpunkt rational ist hängt ab von:
        \begin{itemize}
            \item der Leistungsbewertung, die das Erfolgskriterium definiert
            \item dem Vorwissen des Agenten über seine Umgebung
            \item den Aktionen, die der Agent ausführen kann
            \item der bisherigen Wahrnehmungsfolge des Agenten
        \end{itemize}

    \section{Allwissenheit}
    \label{agenten: allwissenheit}
        Ein Agent ist dann \say{allwissend}, wenn er mit seiner Sensorik alle Umgebungszustände $S$ (States) wahrnehmen kann.
        Man spricht hierbei von \say{percept}:
        $$\text{percept}: S\rightarrow P$$
        \begin{itemize}
            \item $S$: eine Menge von States
            \item $P$: eine nicht-leere Menge von Wahrnehmungen (Perceptions)
        \end{itemize}
        Für zwei Zustände $s_1\in S$ und $s_2\in S$ gilt $s_1\asymp s_2$ falls $\text{percepts}(s_1)=\text{percepts}(s_2)$.
        Mit anderen Worten: $\asymp$ teilt $S$ in gegenseitig ununterscheidbare Mengen von States.
        $|\asymp|$ gibt folglich die Effektivität der Sensorik an.
        Wenn $|\asymp|=|S|$ ist, kann der Agent alle States unterscheiden und ist daher allwissend.

    \section{Leistungsbewertung}
    \label{agenten: leistungsbewertung}
        Die Leistungsbewertung ist individuell für jeden Agenten.
        Hierbei werden Kriterien für den Erfolg des Verhaltens eines Agenten definiert.
        Es ist wichtig, dass die Kriterien möglichst gut definiert sind, denn es gilt:\\
        \say{What you measure is what you get!}\\
        Oder mit den Worten von Norbert Wiener:\\
        \say{We had better be quite sure that the purpose put into the machine is the purpose which we really desire}

        \subsection{Beispiele}
        \label{leistungsbewertung: beispiele}
            \includegraphics[width=\textwidth]{beispiele_leistungsbewertung_1.png}\\
            \includegraphics[width=\textwidth]{beispiele_leistungsbewertung_2.png}\\

    \section{Nutzentheorie}
    \label{nutzentheorie}
        Bei der Nutzentheorie geht es darum durch die Vorgabe einer Nutzenfunktion $U$ den Agenten darin anzuweisen \textbf{WAS} er zu tun hat, \textbf{ohne} ihm zu sagen, \textbf{WIE} er es tun soll.
        Je besser die aufgestellte Nutzenfunktion $U$ ist, desto näher kommt der Agent an die bestmögliche Leistung heran.
        Die Nutzenfunktion $U$ ist definiert durch:
        $$ U:E\rightarrow \mathbb{R}~;E:\text{wahrgenommene Umgebung}$$
        Jede Aktion $A$, die vom Agenten ausgeführt wird hat die möglichen Ergebniszustände $\text{Ergebnis}_i(A)$.
        Der erwartete Nutzen $EU$ ist hierbei gegeben durch: 
        $$EU(A|E) = \sum_i P(\text{Ergebnis}_i(A)|\text{Ausführen}(A),E) U(\text{Ergebnis}_i(A))$$


    \section{Umgebungen und Arbeitsumgebungen}
    \label{umgebung und arbeitsumgebung}
        Die Definition von \ac{PEAS} ist der erste Schritt in der Entwicklung eines Agenten

        \subsection{\ac{PEAS} Beispiele}
        \label{peas beispiele}
            \includegraphics[width=\textwidth]{beispiele_PEAS.png}

        \subsection{Eigenschaften von Umgebungen}
        \label{umgebungen: eigenschaften}
            \begin{itemize}
                \item \textbf{Beobachtbarkeit:}\\
                    Wenn die Sensorik jederzeit die gesamte Umgebung erfasst ist diese \textbf{vollständig beobachtbar}, sonst \textbf{teilweise beobachtbar}.
                \item \textbf{Determinismus:}\\
                    Wenn der Folgezustand einer Umgebung vollständig durch den Agentenzustand und seine Aktion bestimmt ist, dann ist diese \textbf{deterministisch}, sonst \textbf{stochastisch}.
                \item \textbf{Episodisch oder Sequentiell:}\\
                    Eine Umgebung ist \textbf{episodisch}, wenn Wahrnehmungs- und Ausführungsfolgen in voneinander unabhängige Episoden unterteilt sind.
                    Falls die Episoden aufeinander aufbauen und daher Kurzzeitaktionen eine Langzeitwirkung haben, ist die Umgebung \textbf{sequentiell}.
                \item \textbf{Dynamik:}\\
                    Die Umgebung ist \textbf{dynamisch}, falls sie sich auch dann verändert, wenn der Agent keine Aktion ausführt.
                    Sonst ist sie \textbf{statisch}.
                \item \textbf{Diskret oder stetig:}\\
                    \begin{itemize}
                        \item Umgebungen, Aktionen und Wahrnehmungen sind \textbf{diskret}, wenn ihre Ausprägungen eine diskrete Menge an Zuständen haben; sonst \textbf{stetig}
                        \item Die Zeit ist \textbf{diskret}, wenn sie sich sprunghaft verändert; sonst \textbf{stetig}
                    \end{itemize}
                \item \textbf{Einzel- oder Multiagent:}\\
                    Ein \textbf{Einzelagent} löst eigenständig ein Problem, wohingegen \textbf{Multiagentenumgebungen} kooperativ oder konkurrierend sein können
            \end{itemize}

            \subsubsection{Beispiele}
            \label{umgebungseigenschaften: beispiele}
                \includegraphics[width=\textwidth]{beispiele_umgebungseigenschaften.png}

    \section{Agentenprogramme}
    \label{agentenprogramme}
        \subsection{Reflex-Agent}
        \label{reflex-agent}
            \includegraphics[width=\textwidth]{reflex-agent.png}

        \subsection{Modellbasierter Reflex-Agent}
        \label{model-based reflex-agent}
            \includegraphics[width=\textwidth]{model-based_reflex-agent.png}

        \subsection{Zielbasierter Agent}
        \label{goal-based agent}
            \includegraphics[width=\textwidth]{goal-based_agent.png}

        \subsection{Nutzenorientierter Agent}
        \label{utility-oriented agent}
            \includegraphics[width=\textwidth]{utility-oriented_agent.png}
        
        \subsection{Lernender Agent}
        \label{learning agent}
            \includegraphics[width=\textwidth]{learning_agent.png}

        \subsection{Softwarearchitekturen für Agentenprogramme}
        \label{software architecture for agent programs}
            {\large\color{red}Nur Subsumption Architecture gezeigt. Weitere Architekturen in Vorlesung 02!}

            \subsubsection{Subsumption Architecture}
            \label{subsumption architecture}
                Rodney Brooks' \say{subsumption architecture} ist besonders gut für den Aufbau von Reflex-Agenten (\ref{reflex-agent}) geeignet,
                da die Architektur direkt aus der Wahrnehmung eine Aktion erzeugt.
                Bei dieser Architektur sind die einzelnen Verhaltensziele als priorisierte Schichten aufgebaut.
                \begin{tabular}{|p{.475\textwidth}|p{.475\textwidth}|}
                    \hline
                    \textbf{Vorteile} & \textbf{Nachteile}\\
                    \hline
                    \begin{itemize}
                        \item Einfach (Schichten sind abgeschlossene Verhalten)
                        \item deterministisch (daher echtzeitfähig)
                        \item Parallelität in der Ausführung
                    \end{itemize} &
                    \begin{itemize}
                        \item Verhalten fest implementiert und von Umgebung abhängig
                        \item Gesamtverhalten aufgrund von der dynamischen Aktionsauswahl schwer abschätzbar
                        \item keine Langzeitentscheidungen
                    \end{itemize}\\
                    \hline
                \end{tabular}

                \paragraph{Beispiel: Karte erkunden}\mbox{}\\
                    \includegraphics[width = \textwidth]{beispiel_subsumption_architecture.png}
