|
|
Global Optimization Toolbox - GA verliert bestes Ergebnis |
|
gummibaum |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.01.2011, 13:20
Titel: Global Optimization Toolbox - GA verliert bestes Ergebnis
|
|
|
|
|
Hallo!
Ich habe eine Zielfunktion, deren Parameter ich mit dem Genetischen Algorithmus der Global Optimization Toolbox zu optimieren versuche.
Dies ist die Optionsbelegung, die ich verwende:
PopulationType: 'doubleVector'
PopInitRange: [2x8 double]
PopulationSize: [10 10 10 10 10 10]
EliteCount: 2
CrossoverFraction: 0.500000000000000
ParetoFraction: []
MigrationDirection: 'both'
MigrationInterval: 20
MigrationFraction: 0.100000000000000
Generations: 300
TimeLimit: Inf
FitnessLimit: -Inf
StallGenLimit: 50
StallTimeLimit: Inf
TolFun: 1.000000000000000e-010
TolCon: 1.000000000000000e-006
InitialPopulation: [1x8 double]
InitialScores: []
InitialPenalty: 10
PenaltyFactor: 100
PlotInterval: 1
CreationFcn: @gacreationlinearfeasible
FitnessScalingFcn: @fitscalingrank
SelectionFcn: @selectionstochunif
CrossoverFcn: @crossoverscattered
MutationFcn: @mutationadaptfeasible
DistanceMeasureFcn: []
HybridFcn: []
Display: 'final'
PlotFcns: {[@gaplotbestf]}
OutputFcns: []
Vectorized: 'on'
UseParallel: 'never'
Die Hilfe zur GOT sagt folgendes:
[...] Elite count The number of individuals with the best fitness values in the current generation that are guaranteed to survive to the next generation. These individuals are called elite children. The default value of Elite count is 2.
When Elite count is at least 1, the best fitness value can only decrease from one generation to the next. This is what you want to happen, since the genetic algorithm minimizes the fitness function. Setting Elite count to a high value causes the fittest individuals to dominate the population, which can make the search less effective. [...]
Der best fitness value wird bei mir zwischen den Generationen aber ab und an wieder größer.
Hat jemand von euch eine Idee, woran das liegen könnte?
Ich bin im Moment nämlich ratlos.
Vielen Dank schonmal!
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 15.01.2011, 12:22
Titel:
|
|
Hallo,
ist deine Fitness Function deterministisch (d.h. sie enthält keine Zufallselemente)? Ansonsten kann das eigentlich nicht sein.
Grüße,
Harald
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 15.01.2011, 14:57
Titel:
|
|
Hallo nochmal,
eine weitere vorstellbare Erklärung wäre, dass die vermeintlich besten Individuen Nebenbedingungen verletzen und deswegen nicht zur Elite gezählt werden. Um mehr sagen zu können, müsste man das wohl anhand der konkreten Problemstellung nachzuvollziehen versuchen.
Grüße,
Harald
|
|
|
gummibaum |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.01.2011, 13:00
Titel:
|
|
Hallo Harald!
Vielen Dank für deine Antwort!
Deterministisach ist die Fitnessfunktion, aber das mit der Elite könnte sein. Das ist eine gute Idee! Ich schau gleich mal!
Viele Grüße!
|
|
|
MenschMeier |
Forum-Anfänger
|
|
Beiträge: 43
|
|
|
|
Anmeldedatum: 22.09.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 14.10.2011, 16:08
Titel:
|
|
Hallo,
ich hab eine Frage zu deinen GA Options aus dem ersten Post. Es hat nichts mit deiner Frage zu tun, aber ich hoffe das ist ok.
Du hast bei PopSize einen vektor mit 6 Werten (10) eingetragen. Heißt das, dass de GA 6 mal durchläuft und dir 6 Ergebnisse in die Ausgabe schreibt? Ich lasse meinen GA nämlich mit einer Schleife 3 mal durchlaufen, um 3 Ergebnisse zu bekommen. Eigentlich sollte man schleifen bei Matlab ja vermeiden.
Danke
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 14.10.2011, 16:18
Titel:
|
|
Hallo,
wenn als PopulationSize ein Vektor angegeben wird, heißt das, dass mit mehreren Subpopulationen ("Stämmen") gerechnet wird. In Intervallen, die durch MigrationInterval festgelegt werden, findet dann ein Austausch der besten Individuen der Stämme statt.
Vermeiden von Schleifen ist eine gute Idee, wo es möglich ist. Allerdings geht es da in erster Linie um Schleifen mit vielen (100, 10000, 10 Mio.) Iterationen. Bei einer Schleife mit 3 Iterationen würde ich keinen nennenswerten Performance-Unterschied erwarten.
Zudem müsste der Algorithmus erstmal zur Vektorisierung geeignet sein. Bei Aufrufen von ga sehe ich da wenig Möglichkeiten, außer man rechnet mit verschiedenen Unterpopulationen mit hohem MigrationInterval.
Grüße,
Harald
|
|
|
MenschMeier |
Forum-Anfänger
|
|
Beiträge: 43
|
|
|
|
Anmeldedatum: 22.09.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 14.10.2011, 16:31
Titel:
|
|
Danke für die Antwort, dann belasse ich es erstmal so wie es ist.
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|