<br />
<b>Warning</b>:  preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in <b>/www/htdocs/w0102873/mediawiki/includes/MagicWord.php</b> on line <b>739</b><br />
<br />
<b>Warning</b>:  preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in <b>/www/htdocs/w0102873/mediawiki/includes/MagicWord.php</b> on line <b>739</b><br />
<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://p-servus.net/mediawiki/skins/common/feed.css?301"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
		<id>https://p-servus.net/mediawiki/index.php?action=history&amp;feed=atom&amp;title=TSP-Ameisenalgorithmus%3A_Erkl%C3%A4rung_Ameisenalgorithmus</id>
		<title>TSP-Ameisenalgorithmus: Erklärung Ameisenalgorithmus - Versionsgeschichte</title>
		<link rel="self" type="application/atom+xml" href="https://p-servus.net/mediawiki/index.php?action=history&amp;feed=atom&amp;title=TSP-Ameisenalgorithmus%3A_Erkl%C3%A4rung_Ameisenalgorithmus"/>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=TSP-Ameisenalgorithmus:_Erkl%C3%A4rung_Ameisenalgorithmus&amp;action=history"/>
		<updated>2026-08-09T08:33:14Z</updated>
		<subtitle>Versionsgeschichte dieser Seite in It2010-g1</subtitle>
		<generator>MediaWiki 1.17.0</generator>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=TSP-Ameisenalgorithmus:_Erkl%C3%A4rung_Ameisenalgorithmus&amp;diff=205&amp;oldid=prev</id>
		<title>Admin: 1 Version: Eine alte Version der Wiki ist hier her gezogen (3)</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=TSP-Ameisenalgorithmus:_Erkl%C3%A4rung_Ameisenalgorithmus&amp;diff=205&amp;oldid=prev"/>
				<updated>2011-11-06T17:56:33Z</updated>
		
		<summary type="html">&lt;p&gt;1 Version: Eine alte Version der Wiki ist hier her gezogen (3)&lt;/p&gt;
&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='1' style=&quot;background-color: white; color:black;&quot;&gt;← Nächstältere Version&lt;/td&gt;
		&lt;td colspan='1' style=&quot;background-color: white; color:black;&quot;&gt;Version vom 6. November 2011, 17:56 Uhr&lt;/td&gt;
		&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>https://p-servus.net/mediawiki/index.php?title=TSP-Ameisenalgorithmus:_Erkl%C3%A4rung_Ameisenalgorithmus&amp;diff=204&amp;oldid=prev</id>
		<title>Chge: /* Parameter */</title>
		<link rel="alternate" type="text/html" href="https://p-servus.net/mediawiki/index.php?title=TSP-Ameisenalgorithmus:_Erkl%C3%A4rung_Ameisenalgorithmus&amp;diff=204&amp;oldid=prev"/>
				<updated>2011-10-24T09:08:02Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Parameter&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[File:AntsOnCrack-Logo.png|50px|right]]&lt;br /&gt;
Zielsetzung dieses Projektes ist es, ein Programm zu erstellen, um das Traveling Salesman Problem mit dem Ameisenalgorithmus  zu lösen. Was der Algorithmus können muss und wie dieser eingesetzt wird um das TSP-Problem zu lösen soll hier erklärt werden:&lt;br /&gt;
&lt;br /&gt;
[[Image:tsp_deutschland.png|thumb|Breitepx|TSP: Kürzester Rundreiseweg durch die 15 größten Städte Deutschlands. Insgesamt sind 14!/2 = 43 589 145 600 verschiedene Wege möglich. (Quelle: wikipedia.de)]]&lt;br /&gt;
===Traveling Salesman Problem===&lt;br /&gt;
Das Traveling Salesman Problem (TSP, dt. Problem des Handlungsreisenden) ist ein [http://de.wikipedia.org/wiki/P-NP-Problemvollständiges NP-Problem] in der kombinatorischen Optimierung der theoretischen Informatik.&amp;lt;br /&amp;gt;&lt;br /&gt;
Gegeben ist eine Liste von Städten mit Koordinaten; gesucht ist die kürzeste Route, in der jede Stadt einmal besucht wird und die Startstadt gleich der Endstadt ist.&amp;lt;br /&amp;gt;&lt;br /&gt;
Um die Problemstellung des TSP graphisch zu veranschaulichen, repräsentieren die Städte Knoten und Wege zwischen zwei Städten Kanten.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Weitere Informationen finden Sie [http://de.wikipedia.org/wiki/Problem_des_Handlungsreisenden hier].&lt;br /&gt;
&lt;br /&gt;
===Ameisenalgorithmus Therorie===&lt;br /&gt;
In der Informatik ist der Ameisenalgorithmus (engl. Ant Colony Optimization, ACO) eine Metaheuristik, die sich auf das Schwarmverhalten von Ameisen auf Futtersuche stützt.&lt;br /&gt;
&lt;br /&gt;
In der Natur wandern Ameisen zunächst zufällig, bis sie Futter gefunden haben und kehren anschließend zu ihrer Kolonie zurück, wobei sie Pheromonspuren hinterlassen. Sobald andere Ameisen einen Pfad mit Pheromonspuren finden, wandern sie nicht mehr zufällig, sondern folgen dem Pfad und verstärken ihn dadurch, bis sie schließlich das Futter finden. Währenddessen verdunsten die Pheromonspuren und verringern somit die Attraktivität des Pfades. Je länger eine Ameise für einen Weg braucht, desto mehr verdunsten die Pheromone auf dem Pfad. Wenn ein Pfad kurz ist, wird dieser öfters genutzt und die Pheromonspur wird stärker. Somit werden kurze Wege den längeren Wegen vorgezogen. &amp;lt;br /&amp;gt;&lt;br /&gt;
Wenn eine Ameise einen attraktiven (oder kurzen) Weg zwischen der Kolonie und der Futterquelle findet, ist es wahrscheinlicher, dass andere Ameisen ebenso diesen Pfad folgen und somit positives Feedback produzieren, bis alle Ameisen, einem einzigen Weg folgen (Ameisenstraße).  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:ant_optimization.png||Breitepx|]]&amp;lt;br /&amp;gt;&lt;br /&gt;
1) Die erste Ameise findet die Futterquelle (F) über einen zufälligen Weg, kommt zurück zum Nest (N) und hinterlässt eine Pheromonspur &amp;lt;br&amp;gt;&lt;br /&gt;
2) Die Ameisen folgen einen der 4 möglichen Wegen. Die Verstärkung der Wege macht den kürzesten Weg am attraktivsten &amp;lt;br&amp;gt;&lt;br /&gt;
3) Die Ameisen folgen den kürzesten Weg, die Pheromonspuren der längeren Wege verdunsten.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Der Ameisenalgorithmus soll dieses Verhalten in der Natur simulieren, so dass damit die Lösung für den kürzesten Weg in einem Graph gefunden werden kann.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Weitere Informationen über den Ameisenalgorithmus finden Sie [http://de.wikipedia.org/wiki/Ameisenalgorithmus hier].&lt;br /&gt;
&lt;br /&gt;
===Praktische Umsetzung im Programm===&lt;br /&gt;
Der Ameisenalgoritmus kann folgendermaen umgesetzt werden:&lt;br /&gt;
*es wird eine bestimmte Anzahl von Ameisen bereitgestellt&lt;br /&gt;
*diese Ameisen laufen nacheinander los&lt;br /&gt;
*jede Ameise erhält entweder einen zufälligen oder festgelegten Startpunkt&lt;br /&gt;
*es werden alle Wege ermittelt, die diese Ameise von diesem Punkt aus gehen kann&lt;br /&gt;
*die möglichen Optionen werden mit Hilfe einer Formel und verschiedenen Parametern (siehe unten) bewertet&lt;br /&gt;
*es wird nun zufällig ein Wert aus der Bewertungsskala ermittelt. (das heißt Optionen mit einer höheren Bewertung werden auch mit einer höheren Wahrscheinlichkeit ausgewählt)&lt;br /&gt;
*es wird festgehalten, welche Koordinate die Ameise nun abgelaufen ist&lt;br /&gt;
*ist eine Ameise fertig (alle Punkte wurden einmal benutzt), kann die nächste Ameise loslaufen&lt;br /&gt;
*sind alle Ameisen gelaufen, kann mit Hilfe aller von den Ameisen ermittelten Strecken ein Pheromonupdate durchgeführt werden&lt;br /&gt;
*ist dies geschehen kann eine Iteration als vollendet betrachtet werden&lt;br /&gt;
*die Iterationen können beliebig oft durchgeführt werden (siehe Stoppkriterium)&lt;br /&gt;
Das folgende Diagramm zeigt den gewünschten Programmablauf:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Ablauf_des_AmeisenAlgorithmus.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Abwandlungen:&amp;lt;br&amp;gt;&lt;br /&gt;
Zu dieser Vorgehensweise können verschiedene Abwandlungen gemacht werden: &amp;lt;br&amp;gt;Beispielsweise könnten ein Pheromonupdate schon durchgeführt werden, nachdem eine einzelne Ameise gelaufen ist. Auch wäre es möglich, gezielt Startwerte einzusetzen, bei denen die Ameisen loslaufen sollen.&lt;br /&gt;
&lt;br /&gt;
===Bewertung einer Strecke===&lt;br /&gt;
Um zu entscheiden, welchen Weg eine Ameise gehen soll, müssen zunächst alle noch möglichen Strecken ermittelt werden. Sind alle möglichen Strecken ermittelt, wird mit einer Formel ein Wahrscheinlichkeitswert für jede Strecke ausgerechnet. Dieser Wert bezieht die Streckenlänge und den Pheromonanteil mit ein. Mit Hilfe von den Parametern Alpha und Beta wird dann festgelegt, inwiefern die Streckenlänge oder der Pheromonwert benutzt werden soll.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Formel lautet:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Für eine Strecke wird der anliegende Pheromonwert hoch Alpha gerechnet. Dieser Wert wird mit dem Ergebnis multipliziert, der bei der Rechnung herauskommt, wenn man die Streckenlänge hoch Beta rechnet. Das Ergebnis stellt dann den Dividenden dar. Der Divisor ergibt sich, wenn für jede noch mögliche Strecke ebenfalls die Rechnung, analog der des Dividenden, durchgeführt wird. Abschließend werden alle Ergebnisse zusammengerechnet (=Divisor).&lt;br /&gt;
&lt;br /&gt;
===Pheromon-Aktualisierung===&lt;br /&gt;
Damit eine dynamische Verteilung der Ameisen gewährleistet wird muss in bestimmten Abständen der Pheromonwert korrigiert werden. Der Pheromonwert existiert für jeden Weg zwischen zwei Punkten. Initial soll dieser existieren (tau0). In der Natur ist es so, dass beim Betreten eines Weges die Ameise ihr Pheromon direkt versprüht. Für den Algorithmus findet dieses Vorgehen aber nicht in der Form Anwendung.&lt;br /&gt;
Dieser geht folgendermaßen vor: Alle Ameisen suchen ihre persönliche beste Tour. Erst dann erfolgt eine Aktualiserung der Pheromonwerte. Für jede Strecke, die von den Ameisen gelaufen wurde, wird mit einer Berechnungsvorschrift der Pheromonwert aufaddiert. Alle anderen Wege erhalten eine Verdunstung des Pheromonwertes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Berechnung des Verdunstungsfaktors:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Für einen besuchten Weg:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Alternativ kann die Pheromon-Aktualisierung auch direkt nach einem kompletten Ameisendurchlauf erfolgen. Diese Methode beeinflusst dann die Wahrscheinlichkeiten der Wege für die nächste Ameise.&lt;br /&gt;
&lt;br /&gt;
===Stopp-Kriterien für den Algorithmus===&lt;br /&gt;
Der Algoritmus könnte theoretisch unendlich laufen, deswegen werden bestimmte Stopp-Kriterien definiert:&lt;br /&gt;
*Stoppen nach einer bestimmten Anzahl an Iterationen&lt;br /&gt;
*Stoppen bei Erreichen eines bestimmten Schwellwertes (z.B. kürzeste Tour &amp;lt;= Wert)&lt;br /&gt;
*Stoppen nachdem der optimale Weg bekannt ist (das setzt das Wissen für eine optimale Tour voraus und kann dazu führen dass der Algorithmus ewig läuft, wenn die Parameter entsprechend gesetzt wurden)&lt;br /&gt;
&lt;br /&gt;
===Parameter===&lt;br /&gt;
Für den Algorithmus, wie er in dieser Ausprägung vorliegt können mehrere Parameter eingeführt werden:&lt;br /&gt;
*α: Dieser Parameter gibt an, inwiefern der Pheromongehalt einer Strecke in die Gesamtberechnung der Wahrscheinlichkeiten der Wege mit einbezogen werden soll. Dabei kann α einen Wert zwischen 0 und 1 annehmen. (0 &amp;lt; α ≤ 1)&lt;br /&gt;
&lt;br /&gt;
*β: Dieser Parameter gibt an, inwiefern die Länge einer Strecke in die Gesamtberechnung der Wahrscheinlichkeiten der Wege mit einbezogen werden soll. Dabei kann β einen Wert zwischen 0 und 1 annehmen. (0 &amp;lt; β ≤ 1) Dieser Parameter ist somit das Gegenstück zu α.&lt;br /&gt;
&lt;br /&gt;
*ρ: Für das reelle Abbilden der Pheromongehalte gibt es den Verdunstungsfaktor ρ. Mit diesem wird angegeben, wie viel Pheromon verdunsten kann auf einer Strecke zwischen zwei Koordinaten. Auch hier gilt: (0 &amp;lt; ρ ≤ 1)&lt;br /&gt;
&lt;br /&gt;
*τ0: Dieser Wert beschreibt den Anfangswert des Pheromons auf einer Strecke. Es gilt lediglich die Einschränkung (τ0 &amp;gt; 0). Ein zu hoher Wert wäre aber nicht sinnvoll. &lt;br /&gt;
&lt;br /&gt;
*Q: Der Parameter Q gibt an, inwiefern sich der Pheromonwert verändern kann, wenn eine Ameise über eine Strecke gelaufen ist. (Q &amp;gt; 0)&lt;/div&gt;</summary>
		<author><name>Chge</name></author>	</entry>

	</feed>