06.11.2013 Aufrufe

Schwarmintelligenz und evolutionäre Algorithmen in ...

Schwarmintelligenz und evolutionäre Algorithmen in ...

Schwarmintelligenz und evolutionäre Algorithmen in ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

6.4 Diskussion der Evaluationsmethoden<br />

List<strong>in</strong>g 6.1: Parallelisierte Berechnung der Fitnessfunktionen aller Partikel e<strong>in</strong>es PSO<br />

1 (defn fly [swarm]<br />

2 (dorun (map #(send % update-particle (:gbest swarm))<br />

3 (:particlelist swarm)))<br />

4 (apply await (:particlelist swarm)))<br />

E<strong>in</strong> Geschw<strong>in</strong>digkeitsvergleich zwischen den e<strong>in</strong>zelnen Verfahren ist durch diese Tabelle nicht<br />

möglich, da die <strong>Algorithmen</strong> e<strong>in</strong>e unterschiedliche Anzahl an neuen Lösungen pro Generation<br />

erstellen <strong>und</strong> jeweils e<strong>in</strong>e nicht vergleichbare Anzahl an Evaluationen durchlaufen.<br />

Agenten auffordern, die Evaluation durchzuführen<br />

Agenten melden jeweils das Ende ihrer Berechnungen<br />

Agent<br />

Agent<br />

Agent<br />

Agent<br />

Agent<br />

Agent<br />

Agent<br />

Agent<br />

runEvaluation<br />

runEvaluation<br />

Warten auf alle Agenten<br />

Abbildung 6.2: Clojure Agenten berechnen die Fitnessfunktion parallel <strong>und</strong> melden selbstständig<br />

das Ende der Berechnung an die Kontrollfunktion zurück.<br />

Der Quellcode <strong>in</strong> der Auflistung 6.1 beschreibt den Ablauf der parallelen Aufrufe der Fitnessfunktion.<br />

Um e<strong>in</strong>e möglichst hohe Performance zu erreichen, werden statt Clojure-eigenen Vektoren<br />

oder Listen native Java-Arrays für die Repräsentation der Benutzerprofile verwendet. Dies<br />

bewirkt vor allem bei den Abstandsmaßen e<strong>in</strong>e nahezu doppelt so schnelle Berechnung der<br />

Abstände zwischen zwei Vektoren bzw. double-arrays, siehe List<strong>in</strong>g 6.2. Jede Berechnung wurde<br />

mehrfach durchgeführt um Seiteneffekte auszuschließen. Die jeweils erste Berechnung<br />

dauert länger als die Folgenden, da ab der zweiten Berechnung die Cach<strong>in</strong>g-Mechanismen<br />

der Java Virtual Mach<strong>in</strong>e verwendet werden.<br />

6.4 Diskussion der Evaluationsmethoden<br />

Tra<strong>in</strong>gs- <strong>und</strong> Testdatensatz Das Verhältnis der Aufteilung des Datensatzes ist bei der Evaluation<br />

wichtig. Sarwar et al. [66] bespricht die Auswirkung dieser Wahl auf e<strong>in</strong> Recommendersystem<br />

<strong>und</strong> zeigt, dass mit der steigenden Größe des Tra<strong>in</strong>igsdatensatz die Genauigkeit<br />

der Empfehlungen ansteigt. Dies begründet er damit, dass e<strong>in</strong> großer Tra<strong>in</strong><strong>in</strong>gsdatensatz das<br />

Modell sehr gut an die vorhandenen Daten anpasst <strong>und</strong> dadurch auf e<strong>in</strong>er entsprechend<br />

kle<strong>in</strong>en Testmenge die Vorhersage genauer wird. Wenn die Tra<strong>in</strong><strong>in</strong>gsmenge kle<strong>in</strong>er gewählt<br />

93

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!