Ant-Cycle Algorithmus
in Meta-Meta-German-Language J
Init:
Zyklenzähler und alle Kantenmarkierungen auf
0 setzen;
Setze eine Ameise je Stadt;
Trage in Tabuliste jeder Ameise deren Startstadt
ein;
Cycle:
Wiederhole solange bis Rundreise beendet (für alle Ameisen gleichzeitig)
Für jede Ameise suche nächste Stadt mit
Wahrscheinlichkeitsformel in
Abhängigkeit von Nähe und Grad an
Pheromon (Entscheidung);
Setze Ameise auf diese Stadt und trage
Stadt in Tabuliste ein;
Evaluation:
Rücklauf: Setze jede Ameise auf
ihre Startstadt zurück;
Berechne Gesamtlänge jeder
Ameisen-Tour;
Falls diese kürzer ist als die bislang
kürzeste speichere diese ab;
Addiere für jede Kante längenabhäng. Bewertungen
aller Ameisen auf;
Evaporation:
Alte Kantenmarkierungen verdunsten, neue
Bewertungen aufaddieren;
Erhöhe Zyklenzähler;
Termination:
Falls Zyklenzähler kleiner als maximale Iterationszahl und
kein
Stagnationsverhalten eintritt: lösche
alle Tabulisten und führe
Cycle erneut aus;
Sonst gib bislang kürzeste Tour aus und
beende