ga
Finden Sie das Minimum der Funktion mithilfe eines genetischen Algorithmus
Syntax
Beschreibung
findet ein lokales uneingeschränktes Minimum, x = ga(fun,nvars)x, für die Zielfunktion, fun. nvars ist die Dimension (Anzahl der Entwurfsvariablen) von fun.
Hinweis
Passing Extra Parameters erklärt, wie bei Bedarf zusätzliche Parameter an die Zielfunktion und nichtlinearen Einschränkungsfunktionen übergeben werden.
unterwirft die Minimierung den in x = ga(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon)nonlcon definierten Beschränkungen. Die Funktion nonlcon akzeptiert x und gibt die Vektoren C und Ceq zurück, die die nichtlinearen Ungleichungen bzw. Gleichheiten darstellen. ga minimiert fun, sodass C(x) ≤ 0 und Ceq(x) = 0. (Legen Sie lb=[] und ub=[] fest, wenn keine Grenzen vorhanden sind.)
oder x = ga(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon,intcon) erfordert, dass die in x = ga(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon,intcon,options)intcon aufgelisteten Variablen ganzzahlige Werte annehmen.
Hinweis
Bei ganzzahligen Einschränkungen akzeptiert ga keine nichtlinearen Gleichheitsbeschränkungen, sondern nur nichtlineare Ungleichheitsbeschränkungen.
Beispiele
Die Datei ps_example.m wird eingeschlossen, wenn Sie dieses Beispiel ausführen. Zeichnen Sie die Funktion.
xi = linspace(-6,2,300); yi = linspace(-4,4,300); [X,Y] = meshgrid(xi,yi); Z = ps_example([X(:),Y(:)]); Z = reshape(Z,size(X)); surf(X,Y,Z,'MeshStyle','none') colormap 'jet' view(-26,43) xlabel('x(1)') ylabel('x(2)') title('ps\_example(x)')

Finden Sie das Minimum dieser Funktion mit ga.
rng default % For reproducibility x = ga(@ps_example,2)
ga stopped because the average change in the fitness value is less than options.FunctionTolerance.
x = 1×2
-4.6793 -0.0860
Verwenden Sie den genetischen Algorithmus, um die ps_example-Funktion in der Region x(1) + x(2) >= 1 und x(2) <= 5 + x(1) zu minimieren. Diese Funktion ist eingeschlossen, wenn Sie dieses Beispiel ausführen.
Wandeln Sie zunächst die beiden Ungleichheitsbeschränkungen in die Matrixform A*x <= b um. Mit anderen Worten, holen Sie sich die x-Variablen auf die linke Seite der Ungleichung und machen Sie beide Ungleichungen kleiner oder gleich:
-x(1) -x(2) <= -1
-x(1) + x(2) <= 5
A = [-1,-1;
-1,1];
b = [-1;5];Lösen Sie das eingeschränkte Problem mit ga.
rng default % For reproducibility fun = @ps_example; x = ga(fun,2,A,b)
ga stopped because the average change in the fitness value is less than options.FunctionTolerance.
x = 1×2
0.9990 0.0000
Die Einschränkungen werden innerhalb des Standardwerts der Einschränkungstoleranz 1e-3 eingehalten. Um dies zu sehen, berechnen Sie A*x' - b, das negative Komponenten haben sollte.
disp(A*x' - b)
0.0010 -5.9990
Verwenden Sie den genetischen Algorithmus, um die ps_example-Funktion in der Region x(1) + x(2) >= 1 und x(2) == 5 + x(1) zu minimieren. Diese Funktion ist eingeschlossen, wenn Sie dieses Beispiel ausführen.
Konvertieren Sie zunächst die beiden Einschränkungen in die Matrixform A*x <= b und Aeq*x = beq. Mit anderen Worten, holen Sie sich die x-Variablen auf die linke Seite der Ausdrücke und bringen Sie die Ungleichheit in die Kleiner-als-Gleich-Form:
-x(1) -x(2) <= -1
-x(1) + x(2) == 5
A = [-1 -1]; b = -1; Aeq = [-1 1]; beq = 5;
Lösen Sie das eingeschränkte Problem mit ga.
rng default % For reproducibility fun = @ps_example; x = ga(fun,2,A,b,Aeq,beq)
ga stopped because the average change in the fitness value is less than options.FunctionTolerance.
x = 1×2
-2.0005 2.9995
Überprüfen Sie, ob die Einschränkungen innerhalb des Standardwerts von ConstraintTolerance, 1e-3 eingehalten werden.
disp(A*x' - b)
1.0000e-03
disp(Aeq*x' - beq)
8.5897e-09
Verwenden Sie den genetischen Algorithmus, um die ps_example-Funktion in der Region x(1) + x(2) >= 1 und x(2) == 5 + x(1) zu minimieren. Die Funktion ps_example wird eingeschlossen, wenn Sie dieses Beispiel ausführen. Legen Sie außerdem die Grenzen 1 <= x(1) <= 6 und -3 <= x(2) <= 8 fest.
Konvertieren Sie zunächst die beiden linearen Einschränkungen in die Matrixform A*x <= b und Aeq*x = beq. Mit anderen Worten, holen Sie sich die x-Variablen auf die linke Seite der Ausdrücke und bringen Sie die Ungleichheit in die Kleiner-als-Gleich-Form:
-x(1) -x(2) <= -1
-x(1) + x(2) == 5
A = [-1 -1]; b = -1; Aeq = [-1 1]; beq = 5;
Legen Sie die Grenzen lb und ub fest.
lb = [1 -3]; ub = [6 8];
Lösen Sie das eingeschränkte Problem mit ga.
rng default % For reproducibility fun = @ps_example; x = ga(fun,2,A,b,Aeq,beq,lb,ub)
ga stopped because the average change in the fitness value is less than options.FunctionTolerance.
x = 1×2
1.0000 6.0000
Überprüfen Sie, ob die linearen Einschränkungen innerhalb des Standardwerts von ConstraintTolerance, 1e-3 eingehalten werden.
disp(A*x' - b)
-6.0000
disp(Aeq*x' - beq)
-7.9765e-08
Verwenden Sie den genetischen Algorithmus, um die ps_example-Funktion in der Region und zu minimieren. Die Funktion ps_example wird eingeschlossen, wenn Sie dieses Beispiel ausführen.
Verwenden Sie dazu die Funktion ellipsecons.m, die in der ersten Ausgabe, c, die Ungleichheitsbeschränkung und in der zweiten Ausgabe, ceq, die Gleichheitsbeschränkung zurückgibt. Die Funktion ellipsecons wird eingeschlossen, wenn Sie dieses Beispiel ausführen. Untersuchen Sie den ellipsecons-Code.
type ellipseconsfunction [c,ceq] = ellipsecons(x) c = 2*x(1)^2 + x(2)^2 - 3; ceq = (x(1)+1)^2 - (x(2)/2)^4;
Fügen Sie einen Funktionshandle für ellipsecons als nonlcon-Argument ein.
nonlcon = @ellipsecons; fun = @ps_example; rng default % For reproducibility x = ga(fun,2,[],[],[],[],[],[],nonlcon)
Optimization finished: average change in the fitness value less than options.FunctionTolerance and constraint violation is less than options.ConstraintTolerance.
x = 1×2
-0.9766 0.0362
Überprüfen Sie, ob die nichtlinearen Einschränkungen bei x erfüllt sind. Die Einschränkungen werden erfüllt, wenn c ≤ 0 und ceq = 0 innerhalb des Standardwerts von ConstraintTolerance, 1e-3 ist.
[c,ceq] = nonlcon(x)
c = -1.0911
ceq = 5.4645e-04
Verwenden Sie den genetischen Algorithmus, um die ps_example-Funktion in den Bereichen x(1) + x(2) >= 1 und x(2) == 5 + x(1) mit einer Einschränkungstoleranz zu minimieren, die kleiner als der Standard ist. Die Funktion ps_example wird eingeschlossen, wenn Sie dieses Beispiel ausführen.
Konvertieren Sie zunächst die beiden Einschränkungen in die Matrixform A*x <= b und Aeq*x = beq. Mit anderen Worten, holen Sie sich die x-Variablen auf die linke Seite der Ausdrücke und bringen Sie die Ungleichheit in die Kleiner-als-Gleich-Form:
-x(1) -x(2) <= -1
-x(1) + x(2) == 5
A = [-1 -1]; b = -1; Aeq = [-1 1]; beq = 5;
Um eine genauere Lösung zu erhalten, legen Sie eine Einschränkungstoleranz von 1e-6 fest. Und um den Fortschritt des Lösers zu überwachen, legen Sie eine Plot-Funktion fest.
options = optimoptions('ga','ConstraintTolerance',1e-6,'PlotFcn', @gaplotbestf);
Lösen Sie das Minimierungsproblem.
rng default % For reproducibility fun = @ps_example; x = ga(fun,2,A,b,Aeq,beq,[],[],[],options)
ga stopped because the average change in the fitness value is less than options.FunctionTolerance.

x = 1×2
-2.0000 3.0000
Überprüfen Sie, ob die linearen Einschränkungen innerhalb von 1e-6 erfüllt sind.
disp(A*x' - b)
9.9809e-07
disp(Aeq*x' - beq)
-7.3589e-08
Verwenden Sie den genetischen Algorithmus, um die Funktion ps_example zu minimieren, unter der Einschränkung, dass x(1) eine Ganzzahl ist. Diese Funktion ist eingeschlossen, wenn Sie dieses Beispiel ausführen.
intcon = 1; rng default % For reproducibility fun = @ps_example; A = []; b = []; Aeq = []; beq = []; lb = []; ub = []; nonlcon = []; x = ga(fun,2,A,b,Aeq,beq,lb,ub,nonlcon,intcon)
ga stopped because the average change in the penalty function value is less than options.FunctionTolerance and the constraint violation is less than options.ConstraintTolerance.
x = 1×2
-5.0000 -0.0834
Verwenden Sie den genetischen Algorithmus, um ein nichtlineares Problem mit ganzzahligen Beschränkungen zu minimieren. Ermitteln Sie sowohl die Position des Minimums als auch den minimalen Funktionswert. Die Zielfunktion ps_example wird einbezogen, wenn Sie dieses Beispiel ausführen.
intcon = 1; rng default % For reproducibility fun = @ps_example; A = []; b = []; Aeq = []; beq = []; lb = []; ub = []; nonlcon = []; [x,fval] = ga(fun,2,A,b,Aeq,beq,lb,ub,nonlcon,intcon)
ga stopped because the average change in the penalty function value is less than options.FunctionTolerance and the constraint violation is less than options.ConstraintTolerance.
x = 1×2
-5.0000 -0.0834
fval = -1.8344
Vergleichen Sie dieses Ergebnis mit der Lösung des Problems ohne Einschränkungen.
[x,fval] = ga(fun,2)
ga stopped because the average change in the fitness value is less than options.FunctionTolerance.
x = 1×2
-4.6906 -0.0078
fval = -1.9918
Verwenden Sie den genetischen Algorithmus, um die auf den ganzzahligen Wert x(1) beschränkte Funktion ps_example zu minimieren. Die Funktion ps_example wird eingeschlossen, wenn Sie dieses Beispiel ausführen. Um den Grund für den Abbruch des Solvers zu verstehen und um zu erfahren, wie ga nach einem Minimum gesucht hat, rufen Sie die exitflag- und output-Ergebnisse ab. Zeichnen Sie außerdem den minimal beobachteten Zielfunktionswert auf, während der Löser fortschreitet.
intcon = 1; rng default % For reproducibility fun = @ps_example; A = []; b = []; Aeq = []; beq = []; lb = []; ub = []; nonlcon = []; options = optimoptions('ga','PlotFcn', @gaplotbestf); [x,fval,exitflag,output] = ga(fun,2,A,b,Aeq,beq,lb,ub,nonlcon,intcon,options)

ga stopped because the average change in the penalty function value is less than options.FunctionTolerance and the constraint violation is less than options.ConstraintTolerance.
x = 1×2
-5.0000 -0.0834
fval = -1.8344
exitflag = 1
output = struct with fields:
problemtype: 'integerconstraints'
rngstate: [1x1 struct]
generations: 86
funccount: 3311
message: 'ga stopped because the average change in the penalty function value is less than options.FunctionTolerance and ...'
maxconstraint: 0
hybridflag: []
Verwenden Sie den genetischen Algorithmus, um die auf den ganzzahligen Wert x(1) beschränkte Funktion ps_example zu minimieren. Die Funktion ps_example wird eingeschlossen, wenn Sie dieses Beispiel ausführen. Erhalten Sie alle Ausgaben, einschließlich der endgültigen Population und des Score-Vektors.
intcon = 1; rng default % For reproducibility fun = @ps_example; A = []; b = []; Aeq = []; beq = []; lb = []; ub = []; nonlcon = []; [x,fval,exitflag,output,population,scores] = ga(fun,2,A,b,Aeq,beq,lb,ub,nonlcon,intcon);
ga stopped because the average change in the penalty function value is less than options.FunctionTolerance and the constraint violation is less than options.ConstraintTolerance.
Untersuchen Sie die ersten 10 Mitglieder der endgültigen Population und ihre entsprechenden Punktzahlen. Beachten Sie, dass x(1) für alle diese Populationsmitglieder ganzzahlig ist. Der ganzzahlige ga-Algorithmus generiert nur ganzzahlig realisierbare Populationen.
disp(population(1:10,:))
1.0e+03 *
-0.0050 -0.0001
-0.0050 -0.0001
-1.6420 0.0027
-1.5070 0.0010
-0.4540 0.0104
-0.2530 -0.0011
-0.1210 -0.0003
-0.1040 0.1314
-0.0140 -0.0010
0.0160 -0.0002
disp(scores(1:10))
1.0e+06 *
-0.0000
-0.0000
2.6798
2.2560
0.2016
0.0615
0.0135
0.0099
0.0001
0.0000
Eingabeargumente
Zielfunktion, angegeben als Funktionshandle oder Funktionsname. Schreiben Sie die Zielfunktion so, dass sie einen Zeilenvektor der Länge nvars akzeptiert und einen Skalarwert zurückgibt.
Wenn die Option 'UseVectorized' true lautet, schreiben Sie fun, um eine popx-nvars-Matrix zu akzeptieren, wobei pop die aktuelle Populationsgröße ist. In diesem Fall gibt fun einen Vektor derselben Länge wie pop zurück, der die Werte der Fitnessfunktion enthält. Stellen Sie sicher, dass fun für pop keine bestimmte Größe annimmt, da ga auch in einer vektorisierten Berechnung ein einzelnes Mitglied einer Population übergeben kann.
Beispiel: fun = @(x)(x-[4,2]).^2
Datentypen: char | function_handle | string
Anzahl der Variablen, angegeben als positive Ganzzahl. Der Solver übergibt Zeilenvektoren der Länge nvars bis fun.
Beispiel: 4
Datentypen: double
Lineare Ungleichheitsbeschränkungen, angegeben als reelle Matrix. A ist eine M-mal-nvars-Matrix, wobei M die Anzahl der Ungleichungen ist.
A kodiert die M linearen Ungleichungen
A*x <= b,
wobei x der Spaltenvektor der nvars-Variablen x(:) und b ein Spaltenvektor mit M-Elementen ist.
Geben Sie beispielsweise an
x1 + 2x2 ≤ 10
3x1 + 4x2 ≤ 20
5x1 + 6x2 ≤ 30,
Geben Sie diese Einschränkungen an:
A = [1,2;3,4;5,6]; b = [10;20;30];
Beispiel: Um anzugeben, dass die Summe der Steuervariablen 1 oder weniger ergibt, geben Sie die Einschränkungen A = ones(1,N) und b = 1 an.
Datentypen: double
Lineare Ungleichheitsbeschränkungen, angegeben als reeller Vektor. b ist ein M-Element-Vektor, der mit der A-Matrix in Beziehung steht. Wenn Sie b als Zeilenvektor übergeben, konvertieren Solver b intern in den Spaltenvektor b(:).
b kodiert die M linearen Ungleichungen
A*x <= b,
wobei x der Spaltenvektor der N Variablen x(:) und A eine Matrix der Größe M x N ist.
Geben Sie beispielsweise an
x1 + 2x2 ≤ 10
3x1 + 4x2 ≤ 20
5x1 + 6x2 ≤ 30,
Geben Sie diese Einschränkungen an:
A = [1,2;3,4;5,6]; b = [10;20;30];
Beispiel: Um anzugeben, dass die Summe der Steuervariablen 1 oder weniger ergibt, geben Sie die Einschränkungen A = ones(1,N) und b = 1 an.
Datentypen: double
Lineare Gleichheitsbeschränkungen, angegeben als reelle Matrix. Aeq ist eine Me-mal-nvars-Matrix, wobei Me die Anzahl der Gleichheiten ist.
Aeq kodiert die Me linearen Gleichungen
Aeq*x = beq,
wobei x der Spaltenvektor der N-Variablen x(:) und beq ein Spaltenvektor mit Me-Elementen ist.
Geben Sie beispielsweise an
x1 + 2x2 + 3 x3 = 10
2x1 + 4x2 + x3 = 20,
Geben Sie diese Einschränkungen an:
Aeq = [1,2,3;2,4,1]; beq = [10;20];
Beispiel: Um anzugeben, dass die Summe der Kontrollvariablen 1 ergibt, geben Sie die Einschränkungen Aeq = ones(1,N) und beq = 1 ein.
Datentypen: double
Lineare Gleichheitsbeschränkungen, angegeben als reeller Vektor. beq ist ein Me-Element-Vektor, der mit der Aeq-Matrix in Beziehung steht. Wenn Sie beq als Zeilenvektor übergeben, konvertieren Solver beq intern in den Spaltenvektor beq(:).
beq kodiert die Me linearen Gleichungen
Aeq*x = beq,
wobei x der Spaltenvektor der N Variablen x(:) und Aeq eine Matrix der Größe Meq-mal-N ist.
Geben Sie beispielsweise an
x1 + 2x2 + 3 x3 = 10
2x1 + 4x2 + x3 = 20,
Geben Sie diese Einschränkungen an:
Aeq = [1,2,3;2,4,1]; beq = [10;20];
Beispiel: Um anzugeben, dass die Summe der Kontrollvariablen 1 ergibt, geben Sie die Einschränkungen Aeq = ones(1,N) und beq = 1 ein.
Datentypen: double
Untergrenzen, angegeben als reeller Vektor oder Array von Doubles. lb stellt die Untergrenzen elementweise in lb ≤ x ≤ ub dar.
Intern konvertiert ga ein Array lb in den Vektor lb(:).
Beispiel: lb = [0;-Inf;4] bedeutet x(1) ≥ 0, x(3) ≥ 4.
Datentypen: double
Obergrenzen, angegeben als reeller Vektor oder Array von Doubles. ub stellt die Obergrenzen elementweise in lb ≤ x ≤ ub dar.
Intern konvertiert ga ein Array ub in den Vektor ub(:).
Beispiel: ub = [Inf;4;10] bedeutet x(2) ≤ 4, x(3) ≤ 10.
Datentypen: double
Nichtlineare Einschränkungen, angegeben als Funktionshandle oder Funktionsname. nonlcon ist eine Funktion, die einen Vektor oder ein Array x akzeptiert und zwei Arrays zurückgibt, c(x) und ceq(x).
c(x)ist das Array der nichtlinearen Ungleichheitsbeschränkungen beix.gaversucht zu erfüllenc(x) <= 0für alle Einträge von
c.ceq(x)ist das Array der nichtlinearen Gleichheitsbeschränkungen beix.gaversucht zu erfüllenceq(x) = 0für alle Einträge von
ceq.
Zum Beispiel,
x = ga(@myfun,4,A,b,Aeq,beq,lb,ub,@mycon)
wobei mycon eine MATLAB®-Funktion ist, wie etwa
function [c,ceq] = mycon(x) c = ... % Compute nonlinear inequalities at x. ceq = ... % Compute nonlinear equalities at x.
Informationen zur Verwendung vektorisierter Einschränkungen finden Sie unter Vectorized Constraints.
Hinweis
ga erzwingt nicht die Einhaltung nichtlinearer Einschränkungen, wenn die Option PopulationType auf 'bitString' oder 'custom' gesetzt ist.
Wenn intcon nicht leer ist, muss die zweite Ausgabe von nonlcon (ceq) ein leerer Eintrag ([]) sein.
Informationen zur Verwendung von ga durch nonlcon finden Sie unter Nichtlineare Constraint-Solver-Algorithmen für genetische Algorithmen.
Datentypen: char | function_handle | string
Optimierungsoptionen, angegeben als Ausgabe von optimoptions oder einer Struktur.
optimoptions verbirgt die kursiv aufgeführten Optionen. Siehe Options that optimoptions Hides.
Werte in
{}bezeichnen den Standardwert.{}*stellt den Standard dar, wenn lineare Einschränkungen vorliegen, und fürMutationFcnauch, wenn Grenzen vorhanden sind.I* gibt den Standard für ganzzahlige Einschränkungen an oder weist auf besondere Überlegungen bei ganzzahligen Einschränkungen hin.
NM gibt an, dass die Option nicht für
gamultiobjgilt.
Optionen für ga und gamultiobj
| Option | Beschreibung | Werte |
|---|---|---|
ConstraintTolerance | Bestimmt die Machbarkeit im Hinblick auf nichtlineare Einschränkungen. Außerdem bestimmt Verwenden Sie für eine Optionsstruktur | Nichtnegativer Skalar | |
| Funktion, die die Anfangspopulation erstellt. Geben Sie den Namen einer integrierten Erstellungsfunktion oder einen Funktions-Handle an. Siehe Population Options. |
|
| Funktion, die der Algorithmus zum Erstellen von Crossover-Kindern verwendet. Geben Sie den Namen einer integrierten Crossover-Funktion oder eines Funktions-Handles an. Siehe Crossover Options. |
|
| Der Anteil der Population der nächsten Generation (ohne Elitekinder), der durch die Crossover-Funktion entsteht. | Nichtnegativer Skalar | |
| Anzeigeebene. |
|
| Funktion, die das Distanzmaß von Einzelpersonen berechnet. Geben Sie als Namen eine integrierte Funktion zur Entfernungsmessung oder einen Funktions-Handle an. Der Wert bezieht sich auf die Entscheidungsvariable bzw. den Designraum (Genotyp) oder auf den Funktionenraum (Phänotyp). Der Standardwert Verwenden Sie für eine Optionsstruktur einen Funktionshandle, keinen Namen. |
|
| NM Positive Ganzzahl, die angibt, wie viele Individuen der aktuellen Generation garantiert bis zur nächsten Generation überleben. Wird in | Nichtnegative ganze Zahl | |
| NM Wenn die Fitnessfunktion den Wert von | Skalar | |
| Funktion, die die Werte der Fitnessfunktion skaliert. Geben Sie den Namen einer integrierten Skalierungsfunktion oder einen Funktionshandle an. Option für |
|
FunctionTolerance | Der Algorithmus wird beendet, wenn die durchschnittliche relative Änderung des besten Fitnessfunktionswerts über Bei Verwenden Sie für eine Optionsstruktur | Nichtnegativer Skalar | |
| I* Funktion, die die Optimierung fortsetzt, nachdem Alternativ ein Zellenarray, das die Hybridfunktion und ihre Optionen angibt. Siehe ga Hybrid Function. Für Wenn das Problem ganzzahlige Einschränkungen aufweist, können Sie keine Hybridfunktion verwenden. | Funktionsname oder Handle | oder 1 x 2 Zellen-Array | |
InitialPenalty | NM I* Anfangswert des Strafparameters | Positiver Skalar | |
| Anfangspopulation, die zum Seeding des genetischen Algorithmus verwendet wird. Hat bis zu Verwenden Sie für eine Optionsstruktur | Matrix | |
| Matrix oder Vektor, der den Bereich der Individuen in der Ausgangspopulation angibt. Gilt für die Verwenden Sie für eine Optionsstruktur | Matrix oder Vektor | |
| Erste Werte werden zur Bestimmung der Fitness verwendet. Hat bis zu Verwenden Sie für eine Optionsstruktur | Spaltenvektor für Einzelziel | Matrix für Mehrfachziel | |
| Maximale Anzahl von Iterationen, bevor der Algorithmus angehalten wird. Verwenden Sie für eine Optionsstruktur | Nichtnegative ganze Zahl | |
| Der Algorithmus wird beendet, wenn die durchschnittliche relative Änderung des besten Fitnessfunktionswerts über Bei Verwenden Sie für eine Optionsstruktur | Nichtnegative Ganzzahl | |
| NM Der Algorithmus wird angehalten, wenn sich die Zielfunktion Verwenden Sie für eine Optionsstruktur | Positiver Skalar |
| Der Algorithmus wird nach Verwenden Sie für eine Optionsstruktur | Nichtnegativer Skalar | |
Migrationsrichtung | Richtung der Migration. Siehe Migration Options. |
|
Migrationsanteil | Skalar von 0 bis 1, der den Anteil der Individuen in jeder Subpopulation angibt, die in eine andere Subpopulation migrieren. Siehe Migration Options. | Skalar | |
Migrationsintervall | Positive Ganzzahl, die die Anzahl der Generationen angibt, die zwischen Migrationen von Individuen zwischen Subpopulationen stattfinden. Siehe Migration Options. | Positive Ganzzahl | |
| Funktion, die Mutationskinder erzeugt. Geben Sie den Namen einer integrierten Mutationsfunktion oder einen Funktionshandle an. Siehe Mutation Options. |
|
| Nichtlinearer Einschränkungsalgorithmus. Siehe Nichtlineare Constraint-Solver-Algorithmen für genetische Algorithmen. Option für Verwenden Sie für eine Optionsstruktur |
|
| Funktionen, die Verwenden Sie für eine Optionsstruktur | Funktions-Handle oder Zellen-Array von Funktions-Handles | |
| Skalar von 0 bis 1, der den Anteil der Individuen angibt, der an der ersten Pareto-Front bleiben soll, während der Solver Individuen von höheren Fronten auswählt, nur für | Skalar | |
PenaltyFactor | NM I* Parameter zur Aktualisierung der Strafe. | Positiver Skalar | |
| Funktion, die vom Algorithmus berechnete Daten darstellt. Geben Sie als Namen einer integrierten Plotfunktion einen Funktionshandle oder ein Zellenarray aus integrierten Namen oder Funktionshandles an. Siehe Plot Options. Verwenden Sie für eine Optionsstruktur |
Nur Nur |
PlotIntervall | Positive Ganzzahl, die die Anzahl der Generationen zwischen aufeinanderfolgenden Aufrufen der Plotfunktionen angibt. | Positive Ganzzahl | |
| Größe der Population | Positive Ganzzahl | |
| Datentyp der Population. Muss für gemischt-ganzzahlige Probleme |
|
| Funktion, die Eltern von Crossover- und Mutationskindern auswählt. Geben Sie den Namen einer integrierten Auswahlfunktion oder einen Funktions-Handle an.
|
|
StallTest | NM Testtyp wird gestoppt. |
|
UseParallel | Berechnen Sie Fitness- und nichtlineare Einschränkungsfunktionen parallel. Siehe Vectorize and Parallel Options (User Function Evaluation) und How to Use Parallel Processing in Global Optimization Toolbox. |
|
| Gibt an, ob Funktionen vektorisiert sind. Siehe Vectorize and Parallel Options (User Function Evaluation) und Vectorize the Fitness Function. Verwenden Sie für eine Optionsstruktur |
|
Beispiel: optimoptions('ga','PlotFcn',@gaplotbestf)
Ganzzahlvariablen, angegeben als Vektor positiver Ganzzahlen mit Werten von 1 bis nvars. Jeder Wert in intcon stellt eine x-Komponente dar, die einen ganzzahligen Wert hat.
Hinweis
Wenn intcon nicht leer ist, muss nonlcon für ceq leer zurückgeben. Weitere Informationen zur ganzzahligen Programmierung finden Sie unter Mixed Integer ga Optimization.
Beispiel: Um anzugeben, dass die geraden Einträge in x ganzzahlige Werte sind, setzen Sie intcon auf 2:2:nvars
Datentypen: double
Problembeschreibung, angegeben als Struktur, die diese Felder enthält.
fitnessfcn | Fitnessfunktionen |
nvars | Anzahl der Entwurfsvariablen |
Aineq |
|
Bineq |
|
Aeq |
|
Beq |
|
lb | Untergrenze für |
ub | Obergrenze für |
nonlcon | Nichtlineare Zwangsfunktionen |
intcon | Indizes von Ganzzahl-Variablen |
rngstate | Feld zum Zurücksetzen des Zustands des Zufallszahlengenerators |
solver |
|
options | Mit |
Sie müssen die Felder fitnessfcn, nvars und options angeben. Der Rest ist für ga optional.
Datentypen: struct
Ausgabeargumente
Lösung, zurückgegeben als reeller Vektor. x ist der beste Punkt, den ga während seiner Iterationen gefunden hat.
Zielfunktionswert bei der Lösung, zurückgegeben als reelle Zahl. Im Allgemeinen ist fval = fun(x).
Grund, warum ga angehalten hat, zurückgegeben als Ganzzahl.
| Ausstiegsbedingung | Bedeutung |
|---|---|
1 | Ohne nichtlineare Einschränkungen — Die durchschnittliche kumulative Wertänderung der Fitnessfunktion über |
Mit nichtlinearen Einschränkungen — Die Größe des Komplementaritätsmaßes (siehe Komplementaritätsmaßnahme) ist kleiner als | |
3 | Der Wert der Fitnessfunktion hat sich in |
4 | Die Schrittweite ist kleiner als die Maschinenpräzision und die Einschränkungsverletzung ist kleiner als |
5 | Minimale Fitnessgrenze |
0 | Maximale Anzahl von Generationen |
-1 | Optimierung durch eine Ausgabefunktion oder Plotfunktion beendet. |
-2 | Kein durchführbarer Punkt gefunden. |
-4 | Stallzeitlimit |
-5 | Zeitlimit |
Bei ganzzahligen Einschränkungen verwendet ga als Abbruchkriterium den Fitness-Strafwert anstelle des Fitnesswerts.
Informationen zum Optimierungsprozess, zurückgegeben als Struktur mit diesen Feldern:
problemtype— Problemtyp, einer von:'unconstrained''boundconstraints''linearconstraints''nonlinearconstr''integerconstraints'
rngstate– Zustand des MATLAB-Zufallszahlengenerators, unmittelbar vor dem Start des Algorithmus. Sie können die Werte inrngstateverwenden, um die Ausgabe vongazu reproduzieren. Siehe Reproduce Results.generations– Anzahl der berechneten Generationen.funccount– Anzahl der Bewertungen der Fitnessfunktion.message– Grund für die Beendigung des Algorithmus.maxconstraint– Maximale Einschränkungsverletzung, falls vorhanden.hybridflag– Exit-Flag der Hybridfunktion. Bezieht sich aufHybridFcnoptions. Gilt nicht fürgamultiobj.
Endgültige Population, zurückgegeben als PopulationSize-mal-nvars-Matrix. Die Zeilen von population sind die Individuen.
Endgültige Ergebnisse, zurückgegeben als Spaltenvektor.
Bei nicht-ganzzahligen Problemen sind die endgültigen Ergebnisse die Fitnessfunktionswerte der Zeilen von
population.Bei ganzzahligen Problemen sind die endgültigen Ergebnisse die Straffitnesswerte der Populationsmitglieder. Siehe Integer ga Algorithm.
Mehr über
Im erweiterten Lagrangeschen nichtlinearen Constraint-Solver ist das Komplementaritätsmaß die Norm des Vektors, dessen Elemente ciλi sind, wobei ci die Verletzung der nichtlinearen Ungleichheitsbeschränkung und λi der entsprechende Lagrange-Multiplikator ist. Siehe Erweiterter Lagrangescher genetischer Algorithmus.
Tipps
Informationen zum Schreiben einer Funktion mit zusätzlichen Parametern für die unabhängigen Variablen, die von
gaaufgerufen werden können, finden Sie unter Passing Extra Parameters.Bei Problemen, die den Populationstyp
Double Vector(Standard) verwenden, akzeptiertgakeine Funktionen, deren Eingaben vom Typcomplexsind. Um Probleme mit komplexen Daten zu lösen, schreiben Sie Ihre Funktionen so, dass sie reelle Vektoren akzeptieren, indem Sie die Real- und Imaginärteile trennen.
Algorithmen
Eine Beschreibung des genetischen Algorithmus finden Sie unter So funktioniert der genetische Algorithmus.
Eine Beschreibung des Algorithmus für gemischt-ganzzahlige Programmierung finden Sie unter Integer ga Algorithm.
Eine Beschreibung der nichtlinearen Einschränkungsalgorithmen finden Sie unter Nichtlineare Constraint-Solver-Algorithmen für genetische Algorithmen.
Alternative Funktionalität
App
Die Aufgabe Live-Editor optimieren bietet eine visuelle Schnittstelle für ga.
Referenzen
[1] Goldberg, David E., Genetic Algorithms in Search, Optimization & Machine Learning, Addison-Wesley, 1989.
[2] A. R. Conn, N. I. M. Gould, and Ph. L. Toint. “A Globally Convergent Augmented Lagrangian Algorithm for Optimization with General Constraints and Simple Bounds”, SIAM Journal on Numerical Analysis, Volume 28, Number 2, pages 545–572, 1991.
[3] A. R. Conn, N. I. M. Gould, and Ph. L. Toint. “A Globally Convergent Augmented Lagrangian Barrier Algorithm for Optimization with General Inequality Constraints and Simple Bounds”, Mathematics of Computation, Volume 66, Number 217, pages 261–288, 1997.
Erweiterte Fähigkeiten
Für die parallele Ausführung setzen Sie die Option 'UseParallel' auf true.
options = optimoptions('solvername','UseParallel',true)
Weitere Informationen finden Sie unter How to Use Parallel Processing in Global Optimization Toolbox.
Versionsverlauf
Eingeführt vor R2006aWenn die Fitnessfunktion deterministisch ist, bewertet ga die Fitnessfunktion für Elite-Personen (die derzeit besten) nicht neu. Sie können dieses Verhalten steuern, indem Sie auf das neue Feld state.EvalElites zugreifen und es in einer benutzerdefinierten Ausgabefunktion oder benutzerdefinierten Plotfunktion ändern. Wenn die anfängliche Population doppelte Mitglieder hat, wertet ga jedes eindeutige Mitglied nur einmal aus. Sie können dieses Verhalten in einer benutzerdefinierten Ausgabefunktion oder benutzerdefinierten Plotfunktion steuern, indem Sie auf das neue Feld state.HaveDuplicates zugreifen und es ändern. Einzelheiten finden Sie unter Benutzerdefinierte Ausgabefunktion für genetischen Algorithmus oder Benutzerdefinierte Plotfunktion.
Einzelheiten zu den beiden neuen Feldern finden Sie unter The State Structure.
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Website auswählen
Wählen Sie eine Website aus, um übersetzte Inhalte (sofern verfügbar) sowie lokale Veranstaltungen und Angebote anzuzeigen. Auf der Grundlage Ihres Standorts empfehlen wir Ihnen die folgende Auswahl: .
Sie können auch eine Website aus der folgenden Liste auswählen:
So erhalten Sie die bestmögliche Leistung auf der Website
Wählen Sie für die bestmögliche Website-Leistung die Website für China (auf Chinesisch oder Englisch). Andere landesspezifische Websites von MathWorks sind für Besuche von Ihrem Standort aus nicht optimiert.
Amerika
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)