HTW Dresden > GaFrame
 

Unterstützung für Multithreading

Oft ist es sinnvoll, GaFrame im MultiThreaded-Modus zu betreiben. Weitere Erläuterungen dazu finden sich im Abschnitt Implementierung.

Nutzung von Multithreading

Warning
Multithreading ist standardmäßig nicht aktiviert und sollte nur genutzt werden, wenn die Fitnessfunktion des vorliegenden Problems aufwändig zu berechnen ist im Verhältnis zum rechnerischen Mehraufwand, der durch die Threadsynchronisation entsteht. Außerdem ist Multithreading nur bei Mehrprozessor- oder Mehrkernmaschinen sinnvoll.
Sind diese Bedingungen erfüllt, bringt der Einsatz von Multithreading allerdings einen enormen Zeitgewinn.

Multithreading wird einfach durch das Setzen der Property multiThreaded der Klasse de.htwdd.ga.GeneticAlgorithm aktiviert:

GeneticAlgorithm algorithm = new GeneticAlgorithm(KnapsackFitness.NUM_ITEMS, 100, 66, 20);
...
algorithm.setMultiThreaded(true);
algorithm.run();
			

Das Beispiel stammt aus dem schon im vorherigen Abschnitt erläuterten Beispielprogramm zum Rucksackproblem.

Zu beachten ist, dass pro Thread nur eine Instanz der Fitnessfunktion erzeugt wird, die dann im weiteren Verlauf wiederverwendet wird.