\documentclass{beamer}
\usepackage{beamerthemesplit}
\usepackage[utf8]{inputenc}
\usepackage{listings,color}
\lstloadlanguages{XML}
%\usetheme{Copenhagen}
%\usetheme{Dresden}
%\usetheme{Ilmenau}
%\usetheme{Montpellier}
%\usetheme{Singapore}
\usetheme{Warsaw}
% \usecolortheme{beetle}
%\useinnertheme{circles}
%\useoutertheme{smoothbars}
\setbeamercovered{
still covered={\opaqueness<1->{10}},
again covered={\opaqueness<1->{50}}
}
\title{Integration unterschiedlicher Planungsprobleme}
\subtitle{Agentensystem GNUBrain}
\author{René Drießel}
\institute{Fachgebiet Fabrikbetriebe -- Fakultät Maschinenbau\\ TU-Ilmenau}
\date{26. Januar 2006}
\setbeamertemplate{navigation symbols}{}
\begin{document}
\frame{\titlepage}
\section[Gliederung]{}
\frame{\tableofcontents}
\section{Einleitung}
\subsection{Motivation}
\frame
{
\frametitle{Motivation}
\begin{itemize}
\item Integration von Planungsproblemen (z.\,B. Transport- und Feinplanung)
\item Sehr große Modelle
\end{itemize}
$\Rightarrow$ Laufzeitprobleme mit iterativen Problemlösern
\pause
\begin{block}{Ausweg: Parallelisierung und Verteilung}
\begin{itemize}
\item Verteilung des Datenmodells
\item Verteilung der Berechnungen
\item Steuerung der Verteilung und Parallelisierung
\item Sicherstellung der Konsistenz der Ergebnisse
\end{itemize}
\end{block}
$\Rightarrow$ Verwendung Agententechnologie
}
\frame
{
\frametitle{Motivation}
\begin{block}{Designschwächen bisheriger Agentenframeworks}
\begin{itemize}
\item Fokussierung auf eine Agentenplattform und nicht auf den einzelnen Agenten
\item Komplizierte Agentenkommunikation mittels RMI/CORBA
\item Portabilität
\end{itemize}
\end{block}
\pause
\begin{block}{Agentensystem GNUBrain}
\begin{itemize}
\item Fokussierung auf einen Agenten
\item Einfache Agentenkommunikation über XML
\item Portabilität mittels GNU autoconf und MinGW
\item Verwendung von Freier Software
\end{itemize}
\end{block}
}
\subsection{GNUBrain Agent}
\frame
{
\frametitle{Datenhaltung}
\begin{block}{Grundidee}
\begin{itemize}
\item Objektidentifikation durch globale ID (Eindeutigkeit durch Namespaces)
\item Serialisierung als XML
\item Pro ID mehrere Semantiken möglich (Typen)
\end{itemize}
\end{block}
\begin{block}{Beispiel}
{\tt
\\
~~\\
~~\\
}
\end{block}
}
\frame
{
\frametitle{Kommunikation / Verarbeitung}
\begin{block}{Grundidee}
\begin{itemize}
\item Agentenkommunikation mittels XML
\item XML Nachricht $\rightarrow{}$ Thread $\rightarrow{}$ XML Nachricht
\item Terminierung, wenn Antwortdokument vom Typ \url{http://gnubrain.org/types:data}
\end{itemize}
\end{block}
\begin{center}
\includegraphics[width=10cm]{kommunikation.pdf}
\end{center}
}
\section{Scheduling im Agentensystem}
\subsection{Steuerung der Verarbeitung}
\frame
{
\frametitle{Plugin ``process''}
Stellt grundlegende Verarbeitungsdirektiven zur Verfügung.
\begin{block}{Methoden}
\begin{itemize}
\item process-iterative
\item process-parallel
\item process-single
\item process-background
\end{itemize}
\end{block}
\pause
\begin{block}{Beispiel}
{\tt
\\
~~Hallo Dresden!\\
~~Hallo Welt!\\
}
\end{block}
}
\subsection{Konsistenz der Verteilten Daten}
\frame
{
\frametitle{Plugin ``share''}
Verwaltung der verteilten Daten in Anlehnung der "Theory of Patches":
\begin{itemize}
\item Objekt besitzt verantwortlichen Agenten
\item Agent kann Daten vom Masteragent bei Bedarf beziehen
\item Kommunikation der Änderungen über Patches
\item Werden bei Bedarf synchronisiert (Publish/Subscribe)
\end{itemize}
\pause
\begin{block}{Methoden}
\begin{itemize}
\item get-id - Liefert Objekt zurück
\item subscribe - Registrierung für Änderungsbenachrichtigungen
\item update-data - Änderung einer Semantik eines Objekts
\item patch - Aggregation mehrerer Änderungen
\end{itemize}
\end{block}
}
\subsection{Simulation}
\frame
{
\frametitle{Plugin ``simulation''}
Implementiert einen diskreten ereignisgesteuerten Simulator:
\begin{itemize}
\item Ereignisse führen zu Methodenaufrufen
\item Ereignisse zum gleichen virtuellen Zeitpunkt werden parallel
verarbeitet (process-parallel)
\end{itemize}
\pause
\begin{block}{Beispiel}
{\tt
\\
~~\\
~~~~Hallo Dresden!\\
~~~~Hallo Welt!\\
~~\\
~~\\
~~\\
}
\end{block}
}
\subsection{Schedulingkonzepte}
\frame
{
\frametitle{Paralleles Lösen des Gesamtproblems}
Einzelne Agenten berechnen das Gesamtproblem mit verschiedenen
Algorithmen / Parametern (z.B. Simulation mit verschiedenen
Dispatchregeln). Die beste Lösung wird genommen.
\begin{center}
\includegraphics[width=10cm]{gesammtproblem.pdf}
\end{center}
}
\frame
{
\frametitle{Beispiel - Paralleles Lösen des Gesamtproblems}
{\tt
\\
~~\\
~~\\
~~\\
~~~~\\
~~~~\\
~~\\
~~\\
~~\\
~~~~\\
~~~~\\
~~\\
}
}
\frame
{
\frametitle{Paralleles Lösen von Teilproblemen}
Das Problem wird in Teilprobleme zerlegt. Die einzelnen Agenten
lösen diese Teilprobleme. Die Gesamtlösung wird aus den Lösungen der
Teilprobleme komponiert.
\begin{center}
\includegraphics[width=10cm]{teilproblem.pdf}
\end{center}
}
\frame
{
\frametitle{Beispiel - Paralleles Lösen von Teilproblemen}
{\tt
\\
~~\\
~~...\\
~~\\
~~~~\\
~~~~\\
~~\\
~~...\\
~~\\
~~~~\\
~~~~\\
~~\\
}
}
\section{Fazit}
\frame
{
\frametitle{Zusammenfassung}
\begin{block}{Anforderungen durch die Integration von Planungsproblemen}
\begin{itemize}
\item Flexible Abbildung von Problemen notwendig
\item Komplexitätsbewältigung durch Verteilung und Parallelisierung
\end{itemize}
\end{block}
\pause
\begin{block}{Umsetzung mittels GNUBrain}
\begin{itemize}
\item Datenintegration durch verschiedene Semantiken pro ID
\item Steuerung der Berechnungen (process-parallel etc.)
\item Integration und Verabeitung beliebiger Probleme möglich
(Voraussetzung: Methoden, Typen)
\end{itemize}
\end{block}
}
\frame
{
\frametitle{Weiterführende Informationen}
\begin{block}{GNUBrain}
\url{http://gnubrain.org/}
\end{block}
\begin{block}{Darcs Repository}
darcs get \url{http://gnubrain.org/repo/gnubrain/}
\end{block}
\begin{block}{``Theory of Patches''}
\url{http://www.abridgegame.org/darcs/manual/}
\end{block}
\begin{block}{Agententechnologie}
\url{http://fipa.org/}\\
\url{http://agentlink.org/}
\end{block}
% \begin{center}
% \Huge{Vielen Dank für Ihre Aufmerksamkeit!}
% \end{center}
}
\end{document}