BwInf37-Runde2-Aufgabe2/DokumentationAufgabe2.tex
2019-04-29 11:14:30 +02:00

117 lines
4.4 KiB
TeX

\documentclass[a4paper,10pt,ngerman]{scrartcl}
\usepackage{babel}
\usepackage[a4paper,margin=2.5cm]{geometry}
% automatische Quotes
\usepackage{csquotes}
% Die nächsten drei Felder bitte anpassen:
\newcommand{\Name}{Arne Keller} % Teamname oder eigenen Namen angeben
\newcommand{\TeilnahmeId}{50966}
\newcommand{\Aufgabe}{Aufgabe 2: Dreiecksbeziehungen}
% Kopf- und Fußzeilen
\usepackage{scrlayer-scrpage, lastpage}
\setkomafont{pageheadfoot}{\textrm}
\lohead{\Aufgabe}
\chead{\thepage{}/\pageref{LastPage}}
\rohead{\Name/Teilnahme-Id: \TeilnahmeId}
\cfoot{}
% Für mathematische Befehle und Symbole
\usepackage{amsmath,amsthm,amssymb,gensymb}
% Für Bilder
\usepackage{graphicx,subcaption,float}
% Für Skizzen
\usepackage{tkz-euclide}
\usetkzobj{all}
% Für Quelltext
\usepackage{listings}
\usepackage{color}
\definecolor{mygreen}{rgb}{0,0.6,0}
\definecolor{mygray}{rgb}{0.5,0.5,0.5}
\definecolor{mymauve}{rgb}{0.58,0,0.82}
\lstset{
keywordstyle=\color{blue},commentstyle=\color{mygreen},
stringstyle=\color{mymauve},rulecolor=\color{black},
basicstyle=\footnotesize\ttfamily,numberstyle=\tiny\color{mygray},
captionpos=b, % sets the caption-position to bottom
keepspaces=true, % keeps spaces in text
numbers=left, numbersep=5pt, showspaces=false,showstringspaces=false,
showtabs=false, stepnumber=2, tabsize=2, title=\lstname
}
\lstdefinelanguage{Rust}{
keywords={break, match, continue, else, for, fn, if, return, self, let, mut, loop, while, extern, crate, use, static, enum, struct, impl, as, type, derive, mod},
morecomment=[l]{//},
morecomment=[s]{/*}{*/},
morestring=[b]",
sensitive=true
}
% Diese beiden Pakete müssen als letztes geladen werden
%\usepackage{hyperref} % Anklickbare Links im Dokument
%\usepackage{cleveref}
% Daten für die Titelseite
\title{\Aufgabe}
\author{\Name\\Teilnahme-ID: \TeilnahmeId}
\date{29. April 2019}
\begin{document}
\maketitle
\tableofcontents
\section{Lösungsidee}
Die Anzahl der möglichen Anordnungen ist sehr groß. Schon die Reihenfolge der Dreiecke hat viele Möglichkeiten. Daher ist es schneller, zufällig gefundene Lösungen zu optimieren. Mit einigen Heuristiken können akzeptable, aber nicht optimale, Anordnungen gefunden werden.
\section{Bedienung des Programms}
Das Programm liest die Problemstellung von der Standardeingabe ein. Informationen über gefundene Lösungen und Visualisierungen dieser werden im aktuellen Verzeichnis gespeichert. Der Gesamtabstand gefundener Anordnungen wird auch in der Standardausgabe angezeigt.
\section{Umsetzung}
Zuerst wird eine zufällige Anordnung der Grundstücke generiert. Dafür werden beliebige Grundstücke getauscht, gedreht und gespiegelt. Danach werden zufällige Optimierungen ausprobiert: entweder werden alle Winkel und Spiegelungen oder nur ein Winkel verändert. Mit dieser Kombination sind sowohl grundlegende Änderungen als auch Feinabstimmungen möglich. Bis durch diese keine Verbesserung mehr gefunden wird. Ist die so gefundene Anordnung besser als bereits gefundene, wird sie gespeichert. Dieser Prozess wird wiederholt, bis der Anwender das Programm beendet.
\section{Beispiele}
\lstinputlisting[caption=Lösung für dreiecke1.txt,frame=single,breaklines=true]{worldr1.txt}
\begin{figure}[H]
\def\svgwidth{\columnwidth}
\input{worldr1.pdf_tex}
\caption{Visualisierung der Lösung für dreiecke1.txt}
\label{fig:d1}
\end{figure}
\lstinputlisting[caption=Lösung für dreiecke2.txt,frame=single,breaklines=true]{worldr2.txt}
\begin{figure}[H]
\def\svgwidth{\columnwidth}
\input{worldr2.pdf_tex}
\caption{Visualisierung der Lösung für dreiecke2.txt}
\label{fig:d2}
\end{figure}
\lstinputlisting[caption=Lösung für dreiecke3.txt,frame=single,breaklines=true]{worldr3.txt}
\begin{figure}[H]
\def\svgwidth{\columnwidth}
\input{worldr3.pdf_tex}
\caption{Visualisierung der Lösung für dreiecke3.txt}
\label{fig:d3}
\end{figure}
\lstinputlisting[caption=Lösung für dreiecke4.txt,frame=single,breaklines=true]{worldr4.txt}
\begin{figure}[H]
\def\svgwidth{\columnwidth}
\input{worldr4.pdf_tex}
\caption{Visualisierung der Lösung für dreiecke4.txt}
\label{fig:d4}
\end{figure}
\lstinputlisting[caption=Lösung für dreiecke5.txt,frame=single,breaklines=true]{worldr5.txt}
\begin{figure}[H]
\def\svgwidth{\columnwidth}
\input{worldr5.pdf_tex}
\caption{Visualisierung der Lösung für dreiecke5.txt}
\label{fig:d5}
\end{figure}
\section{Quellcode (Hauptalgorithmus)}
\lstinputlisting[frame=single,language=Rust,breaklines=true]{src/main.rs}
\end{document}