6.5 Zielfunktionen und Beispiele

Previous PageTable Of ContentsNext Page

In den Zielfunktionen wird jeweils der Zielfunktionswert eines Individuums berechnet. Dies stellt die Schnittstelle zwischen dem Evolutionären Algorithmus und dem zu lösenden Problem dar. Für jedes zu lösende Problem muß eine eigene Zielfunktion geschrieben werden.

Für die ersten Schritte mit der Toolbox und als Grundlage für eigene Zielfunktionen sind in der Toolbox eine große Anzahl von Beispielfunktionen enthalten.

Die Beispielfunktionen lassen sich in verschiedene Gruppen unterteilen, für die im folgenden jeweils einige der in der Toolbox enthaltenen Beispielfunktionen angegeben werden.

Standardtestfunktionen mit reellen Parametern, deren Dimension sich beliebig definieren läßt:

Testfunktionen für die Verwendung binärer oder ganzzahliger (integer) Variablen:

Standardtestfunktionen zur Optimierung mit zwei reellen Variablen:

Testfunktionen zur Optimierung dynamischer Systeme:

An die Zielfunktionen können zusätzliche Parameter übergeben werden. Dies wird unter anderem bei der Optimierung der Steuerung eines Doppelintegrators (scrdopi, objdopi, initdopi, plotdopi) genutzt. Dadurch wird die vollständige Steuerung der Arbeitsweise der Zielfunktion von außen möglich.

Eine ausführliche Beschreibung aller in der Toolbox enthaltenen Zielfunktionen ist in [Poh96] enthalten.

Vektorisierte Simulation

Im Zusammenhang mit den Zielfunktionen soll an dieser Stelle auf zwei Routinen eingegangen werden, die speziell für die Optimierung dynamischer Systeme entwickelt wurden. Bei der Optimierung dynamischer Systeme tritt die Aufgabe der Simulation einer Anzahl von Differentialgleichungen auf. Matlab stellt für diese Aufgabe leistungsfähige Routinen zur Verfügung. Allerdings kann mit diesen Routinen immer nur ein Individuum auf einmal simuliert werden. Dies heißt, daß die Berechnungszeit linear mit der Anzahl der verwendeten Individuen ansteigt. Gerade bei einer größeren Anzahl von Individuen kann dies zu unvertretbar langen Rechenzeiten führen.

Matlab ist besonders dann sehr gut, wenn die Möglichkeit besteht, die Berechnungen zu vektorisieren. Wenn dies gelingt, verlängert sich die Rechenzeit meist weniger als die Größe des Problems zunimmt. Dadurch wird die Rechenzeit für größere Probleme erst akzeptabel. Aus diesem Grunde wurde die Implementierung einer vektorisierten Simulation untersucht.

Zwei Dinge sind dafür nötig:

Für die erste Aufgabe wurden zwei Integrationsverfahren implementiert:

Eine Schrittweitensteuerung ist in beiden Verfahren nicht enthalten, die feste Schrittweite muß vom Benutzer vorgegeben werden.

Für die im Unterabschnitt 7.1, ab S., beschriebene Optimierung der Steuerung eines Gewächshauses wurde die hier beschriebene vektorisierte Integration implementiert und genutzt. Das Modell ist robust genug, um mit einer vernünftig gewählten Schrittweite stabil zu laufen. Die Einsparung an Rechenzeit war so groß, daß dadurch die Optimierung in einem vertretbaren Zeitrahmen und auf Standardhardware möglich wurde. In empirischen Tests wurde festgestellt, daß sich die Rechenzeit verdreifachte, wenn zehnmal so viele Individuen verwendet wurden. Natürlich funktioniert dies nur so lange, wie die Berechnungen in den Hauptspeicher des Rechners passen.

Ein kleineres Beispiel der Anwendung der vektorisierten Integration ist in der Optimierung der Steuerung des Doppelintegrators (objdopi und simdopiv) enthalten. Eine der möglichen Integrationsmethoden ist die vektorisierte Integration. An diesem Beispiel können sehr schön verschiedene Tests und Varianten durchgespielt werden.


Previous PageTable Of ContentsList Of FiguresList Of TablesNext Page

Diese Dokument ist Teil der Dissertation von Hartmut Pohlheim "Entwicklung und systemtechnische Anwendung Evolutionärer Algorithmen". This document is part of the .
The is not free.
© Hartmut Pohlheim, All Rights Reserved, (hartmut@pohlheim.com).