Directory stream mit Java 8 lambda

Klein Beispiel wie man die 100 neueste Textdateien im Verzeichniss lässt und alle übrige mit der Hilfe von Java 8 lambda löschen kann.

Problem des Handlungsreisenden und Java Fork/Join Framework

Das  „Problem des Handlungsreisenden“  ist ein NP-äquivalentes Problem. Die Umsetzung mit Hilfe des Java Fork/Join Frameworks enthält die  Nearest-Neighbor-Heuristik. Das Ziel ist so schnell wie möglich eine Lösung zu liefern. Aber je mehr Zeit der Algorythmus dafür bekommt, desto optimaler bzw. kürzer wird die gefundene Lösung  sein.

Die Information über Punkte (analog Städte) wird im TSPPoint Objekt gekapselt. Der erste Punkt ist der Start.
Zuerst wird die Entfernungsmatrix berechnet:

CostX und CostY – sind das Achsengewicht.

Z.B.: maximale Achsengeschwindigkeit des Roboters.

Eine Kante wird durch die Klasse TSPAction berechnet. Die rekursive Funktion liefert kein Ergebnis, weswegen TSPAction die Klasse RecursiveAction erbt. Man muss nur die Funktion TSPAction.compute() implementieren, die für die ganze Logik und Heuristik verantwortlich ist.

Heuristik beinhaltet:

  • die Funktion getNextNearestPoint wählt die minimalgewichtete, benachbarte Kante zum nächsten freien Knoten (localFreePoints Liste)
  • in Zeilen 19-23 wird zuerst der Pfad mit dem Minimalgewicht gesucht. Damit werden alle längeren Pfade weggeworfen (Zeile 4-7)

 Quellcode herunterladen

Und so sieht es im Echtleben aus: