From 6bc1d44f6029b5b5de54a70d8741ee90f91ee09e Mon Sep 17 00:00:00 2001 From: Sven Albert-Pedersen Date: Mon, 9 Apr 2018 23:42:49 +0200 Subject: [PATCH] edit, anm. mueller --- references.bib | 11 +++++++++++ tex/000-multiagentensysteme.tex | 5 +++-- tex/01-einleitung.tex | 5 +++-- tex/05-realisierung.tex | 5 +++++ tex/06-multilane.tex | 1 + tex/09-fazit.tex | 21 +++++++++++++++------ tex/10-anhang-listings.tex | 23 +++++++++-------------- tex/10b-anhang-cd.tex | 11 +++++++++++ thesis.tex | 1 + 9 files changed, 59 insertions(+), 24 deletions(-) create mode 100644 tex/10b-anhang-cd.tex diff --git a/references.bib b/references.bib index 21c1207..2393f06 100644 --- a/references.bib +++ b/references.bib @@ -154,6 +154,17 @@ @mastersthesis{dingding journal={U.U.D.M. Project Report}, volume = {25} } +@mastersthesis{inhomogen-agent, + author={Steffen Ritter}, + title={{Autonome Multi-Agenten-Systeme in der Industrie}}, + institution={Hochschule Offenburg}, + school={Hochschule Offenburg}, + year={2015}, + type={Masterarbeit}, + note={\url{https://opus.hs-offenburg.de/files/963/Master-Thesis.pdf}; + abgerufen am 09. April 2018.} +} + %== PDFs ==% diff --git a/tex/000-multiagentensysteme.tex b/tex/000-multiagentensysteme.tex index 30424dc..17e332f 100644 --- a/tex/000-multiagentensysteme.tex +++ b/tex/000-multiagentensysteme.tex @@ -1,10 +1,11 @@ \section{Die Simulationsumgebung und \enquote{LightJason}} \label{sec:simulationsumgebung} -Als Simulationsumgebung für die geplanten Tests der Modelle wurde eine modifizierte Version einer Java-Software benutzt, welche im September 2017 für einen Workshop\footnote{siehe \url{https://lightjason.github.io/news/2017-09-workshop/}} mit Doktoranden genutzt wurde. +Als Simulationsumgebung für die geplanten Tests der Modelle wurde eine %modifizierte Version +Software verwendet, die Elemente einer Java-Software nutzt, welche als \enquote{Traffic Simulation Game} im September 2017 für einen Workshop\footnote{siehe \url{https://lightjason.github.io/news/2017-09-workshop/}} mit Doktoranden entwickelt wurde. Die Steuerung des Agentenverhaltens wird dabei von LightJason, vorgestellt in \cite{lightjason}, übernommen. -Es handelt sich um ein BDI-Multi-Agenten-Framework zum Erstellen von Multiagentensystemen mit Java, welches nebenläufige Ausführung unterstützt. +Es handelt sich bei LightJason um ein BDI-Multi-Agenten-Framework zum Erstellen von Multiagentensystemen mit Java, welches nebenläufige Ausführung unterstützt. Dabei wurde versucht einen Rahmen zu schaffen, der es ermöglicht, AI-Algorithmen zu einer bestehenden Softwarearchitektur hinzuzufügen. Das Framework kombiniert klassische Methoden der Künstlichen Intelligenz mit Optimierungs- und Fuzzy-Logik-Konzepten. (nach \cite{lightjason-web}) diff --git a/tex/01-einleitung.tex b/tex/01-einleitung.tex index 88debbe..e71ea49 100644 --- a/tex/01-einleitung.tex +++ b/tex/01-einleitung.tex @@ -15,9 +15,10 @@ \section{Einleitung} %Das Modell setzt allerdings Homogenität der Verkehrsteilnehmer voraus. Dies stellt sich natürlich in der Realität vollkommen anders dar. Vom \enquote{Schleicher auf der linken Spur} bis hin zum \enquote{Verkehrsrowdy} gibt es eine Vielzahl von Autofahrertypen und von der \enquote{Ente} bis zum Porsche die unterschiedlichsten Fahrzeuge. -Das Konzept der Agentenprogrammierung erlaubt jetzt, anstatt homogenen Verkehrs eine große Vielfalt unterschiedlicher Verkehrssubjekte (und -objekte) darzustellen und diese miteinander agieren zu lassen. -Mit dieser Arbeit soll gezeigt werden, ob sich das Multiagentenframework \enquote{LightJason} dazu eignet, Verkehrsverhalten nachzubilden. +In Multiagentensystemen ist diese Gleichartigkeit nicht zwingend erforderlich \cite[S. 2]{inhomogen-agent}. Anstatt homogenen Verkehrs kann eine große Vielfalt unterschiedlicher Verkehrssubjekte (und -objekte) dargestellt werden und diese können miteinander agieren. + +Mit dieser Arbeit soll gezeigt werden, ob sich das Multiagentenframework \enquote{LightJason} mit \enquote{AgentSpeak(L++)} dazu eignet, das Grundkonzept des Nagel-Scheckenberg-Modells für die Steuerung von Agenten zu übernehmen und Verkehrsverhalten unter Beachtung realer Ge"-schwin"-dig"-keits-, Abstands- und Beschleunigungswerte nachzubilden. diff --git a/tex/05-realisierung.tex b/tex/05-realisierung.tex index 487d197..5f8aab1 100644 --- a/tex/05-realisierung.tex +++ b/tex/05-realisierung.tex @@ -14,6 +14,10 @@ \section{Realisierung} Aufgrund von Spezifikationsvorgaben für die Simulationsumgebung wurde vom ursprünglichen Entwickler eine Software realisiert, die einen Teil der Architektur des Workshops übernehmen konnte, Teile, wie z.B. das User-Interface, ausschloss und neue Komponenten wie z.B. die Kreisform der Strecke implementierte. +Hauptaugenmerk lag auf der Herstellung des Fahrzeugverhaltens. +So wurden u.a. die Zustandsautomaten in \cref{sec:zustandsautomat,sec:zustandsautomat-multi} entwickelt und die Feinabstimmung der Szenariodatei (\cref{lst:scenariofile}) vorgenommen. +Außerdem wurde das Agentenverhalten in den Agentenplänen (\cref{lst:nasch,lst:multi-lane}) definiert. + %Für die Zwecke dieser Arbeit musste die Software weiter angepasst werden. Während der Tests der ersten Agentenpläne mussten Korrekturen vorgenommen werden, da eine fehlerfreie Simulation sonst nicht möglich gewesen wäre. Mehr dazu nachfolgend in \cref{sec:anpassungen-probleme}. @@ -47,6 +51,7 @@ \subsection{Entwicklung des Agentenverhaltens} \subsubsection{Zustandsautomat} +\label{sec:zustandsautomat} Das oben beschriebene Verhalten wurde zuerst mit Hilfe eines endlichen Automaten beschrieben, siehe \cref{figure:fsm-nasch}. diff --git a/tex/06-multilane.tex b/tex/06-multilane.tex index 28eda8d..a711355 100644 --- a/tex/06-multilane.tex +++ b/tex/06-multilane.tex @@ -19,6 +19,7 @@ \subsection{Veränderungen für die Mehrspurigkeit} Gegenüber der Einspurversion muss das Agentenverhalten um die Spurwechselkomponenten erweitert werden. \subsubsection{Zustandsautomat} +\label{sec:zustandsautomat-multi} Für die Simulation mehrspuriger Fahrbahnen kann der ursprüngliche Zustandsautomat (\cref{figure:fsm-nasch}), der die Veränderung der Geschwindigkeit beinhaltet, unverändert bleiben. Das Spurwechselverhalten wird in einem separaten Automaten abgebildet, siehe \cref{figure:fsm-pull}. diff --git a/tex/09-fazit.tex b/tex/09-fazit.tex index 33a4fde..956eb92 100644 --- a/tex/09-fazit.tex +++ b/tex/09-fazit.tex @@ -1,14 +1,23 @@ \section{Fazit} \label{sec:fazit} -Das Ziel dieser Arbeit, das Agentenkonzept für die realistische Verkehrssimulation nutzen zu können, konnte erreicht werden. -Im Gegensatz zu anderen Arbeiten dient die Gridumgebung ausschließlich als Darstellung der Straße. -Die Zellgröße wurde gegenüber des ursprünglichen Nagel-Schreckenberg-Modells verkleinert. +%Das Ziel dieser Arbeit, das Agentenkonzept für die realistische Verkehrssimulation nutzen zu können, konnte erreicht werden. +Anders als bei den Simulationen zur ursprünglichen Arbeit von Nagel und Schreckenberg \cite{na-sch} konnte mit dem Agentenkonzept eine Simulation von Verkehr mit Werten durchgeführt werden, die ähnlich den real auftretenden sind. +Die Interaktionen zwischen den Agenten/Fahrzeugen finden ausschließlich aufgrund von Größen wie Abstand und (relativer) Geschwindigkeit statt. +Dies ist vergleichbar zur Situation im realen Straßenverkehr. -Interaktionen zwischen den Agenten/Fahrzeugen finden ausschließlich aufgrund \enquote{realer} Größen wie Abstand und (relativer) Geschwindigkeit statt. -Dies ist vergleichbar zur Situation im Straßenverkehr. +Die Gridumgebung dient ausschließlich als Darstellung der Straße. +\\ +Die Fahrspuren sind, auch bei Mehrspurigkeit, anders als bei \cite{multi-fuzzy}, keine miteinander kommunizierenden Automaten, sondern die Zellen darauf \enquote{Verankerungspunkte} für die Fahrzeuge. +Zwischen den Fahrspuren kann hin und her gewechselt werden. +Die Verantwortung für die Einhaltung von Vorgaben liegt bei jedem Agenten. +\\ +Die Zellgröße wurde gegenüber dem ursprünglichen Nagel-Schreckenberg-Modell verkleinert. +Eine weitere Verkleinerung scheint möglich, wenn die Inkonsistenzen in den Beliefbases abgestellt werden können. -Dadurch dass die Auslösung des Kollisionsereignisses bereits bei Unterschreitung eines Mindestabstandes stattfindet, der abhängig von der aktuell gefahrenen Geschwindigkeit ist, gelang es nicht eine realistische Unfallhäufigkeit zu erreichen. Ebenso wurde die Möglichkeit einer engen Fahrzeugfolge dadurch beeinflusst. +Die Kollisionsfreiheit des Originalmodells konnte bei zu großen Geschwindigkeitsunterschieden nicht dargestellt werden. +Dadurch dass die Auslösung des Kollisionsereignisses bereits bei Unterschreitung eines Mindestabstandes stattfindet, der abhängig von der aktuell gefahrenen Geschwindigkeit ist, gelang es ebenfalls nicht, eine realistische Unfallhäufigkeit zu erreichen. +Ebenso wurde die Möglichkeit einer engen Fahrzeugfolge dadurch beeinflusst. Bei der Verkehrsfluss/Verkehrsdichte-Ebene des Fundamentaldiagrammes gelang nur die Darstellung des aufsteigenden Astes, die frei fließenden Verkehr bedeutet. diff --git a/tex/10-anhang-listings.tex b/tex/10-anhang-listings.tex index a610dd3..9e96504 100644 --- a/tex/10-anhang-listings.tex +++ b/tex/10-anhang-listings.tex @@ -140,7 +140,7 @@ \subsection*{Code-Listings} CurrentSpeed < AllowedSpeed && ~>>( view/vehicle( _, data( _, static( lane( FwdLane ), cell( FwdCell ), speed( FwdSpeed ), distance( FwdDist ), direction( FwdDir ) ) ) ), bool/equal( generic/type/tostring( FwdDir ), "forward[]" ) - && FwdDist < CurrentSpeed + && FwdDist < 1.5*CurrentSpeed && FwdSpeed < CurrentSpeed ) <- @@ -168,7 +168,7 @@ \subsection*{Code-Listings} // --- and own speed is higher than distance --- : >>( view/vehicle( _, data( _, static( lane( FwdLane ), cell( FwdCell ), speed( FwdSpeed ), distance( FwdDist ), direction( FwdDir ) ) ) ), bool/equal( generic/type/tostring( FwdDir ), "forward[]" ) - && FwdDist < CurrentSpeed + && FwdDist < 1.5*CurrentSpeed ) <- vehicle/decelerate(1); !decelerate @@ -189,9 +189,9 @@ \subsection*{Code-Listings} \newpage %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\own{Listing kommentare entfernen etc.} + \begin{lstlisting}[style=asl, - keywords={+!cruise,+!accelerate,+!linger,+!decelerate,+!vehicle/collision}, + keywords={+!cruise,+!accelerate,+!linger,+!decelerate,+!vehicle/collision,+!pulloutworkaround,+!pullinworkaround}, keywords={[2]}, keywords={[3]}, caption={Agentenscript: NaSch-Modell, mehrspurig}, @@ -204,12 +204,12 @@ \subsection*{Code-Listings} // --- start all other plans --- +!cruise <- + CorrectedLanes = Lanes-1; !accelerate; !decelerate; !linger; -// !pullout; +// !pullout(CorrectedLanes); // !pullin; - CorrectedLanes = Lanes-1; !pulloutworkaround(CorrectedLanes); !pullinworkaround; !cruise @@ -259,8 +259,6 @@ \subsection*{Code-Listings} . // --- pull-out, change lane to overtake --- -// --- (maybe add "relative speed" condition --- -// --- (overtaker speed (CurrentSpeed) must be higher than overtakee speed) --- // --- should work, but doesn't --- // --- BUG in framework // --- use + !pulloutworkaround instead --- @@ -350,15 +348,12 @@ \subsection*{Code-Listings} vehicle/decelerate(0.05); !decelerate */ - // --- if traffic is ahead only decelerate if --- - // --- CurrentSpeed is higher than speed of traffic ahead --- - // --- (avoids unnecessary breaking down to 0 kph) --- + // --- decelerate if traffic is ahead --- + // --- and own speed is higher than distance --- : >>( view/vehicle( _, data( _, static( lane( FwdLane ), cell( FwdCell ), speed( FwdSpeed ), distance( FwdDist ), direction( FwdDir ) ) ) ), bool/equal( generic/type/tostring( FwdDir ), "forward[]" ) && math/floor( FwdLane ) == CurrentLane -// && FwdSpeed < CurrentSpeed -// && FwdSpeed-CurrentSpeed < 0.05*FwdSpeed - && FwdDist < CurrentSpeed + && FwdDist < 1.5*CurrentSpeed ) <- vehicle/decelerate(1); !decelerate diff --git a/tex/10b-anhang-cd.tex b/tex/10b-anhang-cd.tex new file mode 100644 index 0000000..e1bb64e --- /dev/null +++ b/tex/10b-anhang-cd.tex @@ -0,0 +1,11 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\subsection*{CD-ROM} + +Die beiliegende CD-ROM enthält diese Bachelorarbeit im PDF-Format. +Zudem sind die Szenariodateien für Single- und Multilane-Versuche (YML) und jew. eine entsprechende Datei mit den Agentenplänen + +Zusätzlich enthält diese die Simulationssoftware als ausführbare JAR-Datei in der Version vom \own{DATUM einfügen} +Mit dieser Version wurden die Versuche getätigt. \ No newline at end of file diff --git a/thesis.tex b/thesis.tex index a363dc5..c7d6c22 100644 --- a/thesis.tex +++ b/thesis.tex @@ -144,6 +144,7 @@ \include{tex/10-anhang-listings} % --- COMMENTED OUT, because PDF file gets too big --- \include{tex/10a-anhang-plots} + \include{tex/10b-anhang-cd} \end{appendices}