Hauptinhalt

Diese Seite wurde mithilfe maschineller Übersetzung übersetzt. Klicken Sie hier, um die neueste Version auf Englisch zu sehen.

ga

Finden Sie das Minimum der Funktion mithilfe eines genetischen Algorithmus

Beschreibung

x = ga(fun,nvars) findet ein lokales uneingeschränktes Minimum, 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.

Beispiel

x = ga(fun,nvars,A,b) findet ein lokales Minimum x bis fun, vorbehaltlich der linearen Ungleichungen A*xb. ga wertet das Matrixprodukt A*x aus, als ob x transponiert wäre (A*x').

Beispiel

x = ga(fun,nvars,A,b,Aeq,beq) findet ein lokales Minimum x bis fun, vorbehaltlich der linearen Gleichungen Aeq*x = beq und A*xb. (Setzen Sie A=[] und b=[], wenn keine linearen Ungleichungen vorhanden sind.) ga wertet das Matrixprodukt Aeq*x aus, als ob x transponiert wäre (Aeq*x').

Beispiel

x = ga(fun,nvars,A,b,Aeq,beq,lb,ub) definiert eine Reihe von Unter- und Obergrenzen für die Entwurfsvariablen x, sodass eine Lösung im Bereich lb x ub gefunden wird. (Setzen Sie Aeq=[] und beq=[], wenn keine linearen Gleichungen vorliegen.)

Beispiel

x = ga(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon) unterwirft die Minimierung den in 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.)

Beispiel

x = ga(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon,options) minimiert, wobei die Standardoptimierungsparameter durch Werte in options ersetzt werden. (Setzen Sie nonlcon=[], wenn keine nichtlinearen Einschränkungen vorhanden sind.) Erstellen Sie options mit optimoptions.

Beispiel

x = ga(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon,intcon) oder x = ga(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon,intcon,options) erfordert, dass die in intcon aufgelisteten Variablen ganzzahlige Werte annehmen.

Hinweis

Bei ganzzahligen Einschränkungen akzeptiert ga keine nichtlinearen Gleichheitsbeschränkungen, sondern nur nichtlineare Ungleichheitsbeschränkungen.

Beispiel

x = ga(problem) findet das Minimum für problem, eine in problem beschriebene Struktur.

[x,fval] = ga(___) gibt für alle vorherigen Eingabeargumente auch fval zurück, den Wert der Fitnessfunktion bei x.

Beispiel

[x,fval,exitflag,output] = ga(___) gibt außerdem exitflag zurück, eine Ganzzahl, die den Grund für die Beendigung des Algorithmus angibt, und output, eine Struktur, die die Ausgabe jeder Generation und andere Informationen zur Leistung des Algorithmus enthält.

Beispiel

[x,fval,exitflag,output,population,scores] = ga(___) gibt außerdem eine Matrix population zurück, deren Zeilen die endgültige Population darstellen, und einen Vektor scores, die Werte der endgültigen Population.

Beispiel

Beispiele

alle reduzieren

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 2x12+x223 und (x1+1)2=(x2/2)4 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 ellipsecons
function [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

alle reduzieren

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 bei x. ga versucht zu erfüllen

    c(x) <= 0

    für alle Einträge von c.

  • ceq(x) ist das Array der nichtlinearen Gleichheitsbeschränkungen bei x. ga versucht zu erfüllen

    ceq(x) = 0

    fü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.
Weitere Informationen finden Sie unter Nonlinear Constraints.

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ür MutationFcn auch, 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 gamultiobj gilt.

Optionen für ga und gamultiobj

OptionBeschreibungWerte
ConstraintTolerance

Bestimmt die Machbarkeit im Hinblick auf nichtlineare Einschränkungen. Außerdem bestimmt max(sqrt(eps),ConstraintTolerance) die Machbarkeit im Hinblick auf lineare Einschränkungen.

Verwenden Sie für eine Optionsstruktur TolCon.

Nichtnegativer Skalar | {1e-3}

CreationFcn

Funktion, die die Anfangspopulation erstellt. Geben Sie den Namen einer integrierten Erstellungsfunktion oder einen Funktions-Handle an. Siehe Population Options.

{'gacreationuniform'} | {'gacreationlinearfeasible'}* | 'gacreationnonlinearfeasible' | {'gacreationuniformint'}I* für ga | {'gacreationsobol'}I* für gamultiobj | Funktion zur benutzerdefinierten Erstellung

CrossoverFcn

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.

{'crossoverscattered'} für ga, {'crossoverintermediate'}* für gamultiobj | {'crossoverlaplace'}I* | 'crossoverheuristic' | 'crossoversinglepoint' | 'crossovertwopoint' | 'crossoverarithmetic' | Benutzerdefinierte Crossover-Funktion

CrossoverFraction

Der Anteil der Population der nächsten Generation (ohne Elitekinder), der durch die Crossover-Funktion entsteht.

Nichtnegativer Skalar | {0.8}

Display

Anzeigeebene.

'off' | 'iter' | 'diagnose' | {'final'}

DistanceMeasureFcn

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 'distancecrowding' liegt im Funktionsraum (Phänotyp). Nur für gamultiobj. Siehe Multiobjective Options.

Verwenden Sie für eine Optionsstruktur einen Funktionshandle, keinen Namen.

{'distancecrowding'} bedeutet dasselbe wie {@distancecrowding,'phenotype'} | {@distancecrowding,'genotype'} | Benutzerdefinierte Distanzfunktion

EliteCount

NM Positive Ganzzahl, die angibt, wie viele Individuen der aktuellen Generation garantiert bis zur nächsten Generation überleben. Wird in gamultiobj nicht verwendet.

Nichtnegative ganze Zahl | {ceil(0.05*PopulationSize)} | {0.05*(default PopulationSize)} für gemischt-ganzzahlige Probleme

FitnessLimit

NM Wenn die Fitnessfunktion den Wert von FitnessLimit erreicht, wird der Algorithmus angehalten.

Skalar | {-Inf}

FitnessScalingFcn

Funktion, die die Werte der Fitnessfunktion skaliert. Geben Sie den Namen einer integrierten Skalierungsfunktion oder einen Funktionshandle an. Option für gamultiobj nicht verfügbar.

{'fitscalingrank'} | 'fitscalingshiftlinear' | 'fitscalingprop' | 'fitscalingtop' | Benutzerdefinierte Fitness-Skalierungsfunktion

FunctionTolerance

Der Algorithmus wird beendet, wenn die durchschnittliche relative Änderung des besten Fitnessfunktionswerts über MaxStallGenerations Generationen kleiner oder gleich FunctionTolerance ist. Wenn StallTest 'geometricWeighted' ist, wird der Algorithmus beendet, wenn die gewichtete durchschnittliche relative Änderung kleiner oder gleich FunctionTolerance ist.

Bei gamultiobj stoppt der Algorithmus, wenn der geometrische Durchschnitt der relativen Wertänderung der Streuung über options.MaxStallGenerations Generationen kleiner ist als options.FunctionTolerance und die endgültige Streuung kleiner ist als die durchschnittliche Streuung über die letzten options.MaxStallGenerations Generationen. Siehe gamultiobj Algorithm.

Verwenden Sie für eine Optionsstruktur TolFun.

Nichtnegativer Skalar | {1e-6} für ga, {1e-4} für gamultiobj

HybridFcn

I* Funktion, die die Optimierung fortsetzt, nachdem ga beendet wurde. Geben Sie es als Namen oder als Funktionshandle an.

Alternativ ein Zellenarray, das die Hybridfunktion und ihre Optionen angibt. Siehe ga Hybrid Function.

Für gamultiobj ist @fgoalattain die einzige Hybridfunktion. Siehe gamultiobj Hybrid Function.

Wenn das Problem ganzzahlige Einschränkungen aufweist, können Sie keine Hybridfunktion verwenden.

Siehe Wann wird eine Hybridfunktion verwendet?.

Funktionsname oder Handle | 'fminsearch' | 'patternsearch' | 'fminunc' | 'fmincon' | {[]}

oder

1 x 2 Zellen-Array | {@solver, hybridoptions}, wobei solver = fminsearch, patternsearch, fminunc oder fmincon {[]}

InitialPenalty

NM I* Anfangswert des Strafparameters

Positiver Skalar | {10}

InitialPopulationMatrix

Anfangspopulation, die zum Seeding des genetischen Algorithmus verwendet wird. Hat bis zu PopulationSize Zeilen und N Spalten, wobei N die Anzahl der Variablen ist. Sie können eine Teilpopulation übergeben, also eine mit weniger als PopulationSize Zeilen. In diesem Fall verwendet der genetische Algorithmus CreationFcn, um die verbleibenden Populationsmitglieder zu generieren. Siehe Population Options.

Verwenden Sie für eine Optionsstruktur InitialPopulation.

Matrix | {[]}

InitialPopulationRange

Matrix oder Vektor, der den Bereich der Individuen in der Ausgangspopulation angibt. Gilt für die gacreationuniform-Erstellungsfunktion. ga verschiebt und skaliert den standardmäßigen Anfangsbereich, um ihn an alle endlichen Grenzen anzupassen.

Verwenden Sie für eine Optionsstruktur PopInitRange.

Matrix oder Vektor | {[-10;10]} für unbegrenzte Komponenten, {[-1e4+1;1e4+1]} für unbegrenzte Komponenten von Problemen mit ganzzahligen Einschränkungen, {[lb;ub]} für begrenzte Komponenten, wobei der Standardbereich so geändert wird, dass er einseitigen Grenzen entspricht

InitialScoresMatrix

Erste Werte werden zur Bestimmung der Fitness verwendet. Hat bis zu PopulationSize Zeilen und Nf Spalten, wobei Nf die Anzahl der Fitnessfunktionen ist (1 für ga, größer als 1 für gamultiobj). Sie können eine Matrix mit Teilpunktzahlen übergeben, also eine mit weniger als PopulationSize Zeilen. In diesem Fall trägt der Löser die Werte ein, wenn er die Fitnessfunktionen auswertet.

Verwenden Sie für eine Optionsstruktur InitialScores.

Spaltenvektor für Einzelziel | Matrix für Mehrfachziel | {[]}

MaxGenerations

Maximale Anzahl von Iterationen, bevor der Algorithmus angehalten wird.

Verwenden Sie für eine Optionsstruktur Generations.

Nichtnegative ganze Zahl |{100*numberOfVariables} für ga, {200*numberOfVariables} für gamultiobj

MaxStallGenerations

Der Algorithmus wird beendet, wenn die durchschnittliche relative Änderung des besten Fitnessfunktionswerts über MaxStallGenerations Generationen kleiner oder gleich FunctionTolerance ist. Wenn StallTest 'geometricWeighted' ist, wird der Algorithmus beendet, wenn die gewichtete durchschnittliche relative Änderung kleiner oder gleich FunctionTolerance ist.

Bei gamultiobj stoppt der Algorithmus, wenn der geometrische Durchschnitt der relativen Wertänderung der Streuung über options.MaxStallGenerations Generationen kleiner ist als options.FunctionTolerance und die endgültige Streuung kleiner ist als die durchschnittliche Streuung über die letzten options.MaxStallGenerations Generationen. Siehe gamultiobj Algorithm.

Verwenden Sie für eine Optionsstruktur StallGenLimit.

Nichtnegative Ganzzahl | {50} für ga, {100} für gamultiobj

MaxStallTime

NM Der Algorithmus wird angehalten, wenn sich die Zielfunktion MaxStallTime Sekunden lang nicht verbessert (gemessen mit tic und toc).

Verwenden Sie für eine Optionsstruktur StallTimeLimit.

Positiver Skalar | {Inf}

MaxTime

Der Algorithmus wird nach MaxTime Sekunden gestoppt, gemessen mit tic und toc. Dieses Limit wird nach jeder Iteration erzwungen, sodass ga das Limit überschreiten kann, wenn eine Iteration sehr viel Zeit in Anspruch nimmt.

Verwenden Sie für eine Optionsstruktur TimeLimit.

Nichtnegativer Skalar | {Inf}

Migrationsrichtung

Richtung der Migration. Siehe Migration Options.

'both' | {'forward'}

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 | {0.2}

Migrationsintervall

Positive Ganzzahl, die die Anzahl der Generationen angibt, die zwischen Migrationen von Individuen zwischen Subpopulationen stattfinden. Siehe Migration Options.

Positive Ganzzahl | {20}

MutationFcn

Funktion, die Mutationskinder erzeugt. Geben Sie den Namen einer integrierten Mutationsfunktion oder einen Funktionshandle an. Siehe Mutation Options.

{'mutationgaussian'} für ga ohne Einschränkungen | {'mutationadaptfeasible'}* für gamultiobj und für ga mit Einschränkungen | {'mutationpower'}I* | 'mutationpositivebasis' | 'mutationuniform' | Benutzerdefinierte Mutationsfunktion

NonlinearConstraintAlgorithm

Nichtlinearer Einschränkungsalgorithmus. Siehe Nichtlineare Constraint-Solver-Algorithmen für genetische Algorithmen. Option für gamultiobj nicht änderbar.

Verwenden Sie für eine Optionsstruktur NonlinConAlgorithm.

{'auglag'} für ga, {'penalty'} für gamultiobj

OutputFcn

Funktionen, die ga bei jeder Iteration aufruft. Geben Sie es als Funktionshandle oder als Zellenarray von Funktionshandles an. Siehe Output Function Options.

Verwenden Sie für eine Optionsstruktur OutputFcns.

Funktions-Handle oder Zellen-Array von Funktions-Handles | {[]}

ParetoFraction

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 gamultiobj. Siehe Multiobjective Options.

Skalar | {0.35}

PenaltyFactor

NM I* Parameter zur Aktualisierung der Strafe.

Positiver Skalar | {100}

PlotFcn

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 PlotFcns.

ga oder gamultiobj: {[]} | 'gaplotdistance' | 'gaplotgenealogy' | 'gaplotselection' | 'gaplotscorediversity' |'gaplotscores' | 'gaplotstopping' | 'gaplotmaxconstr' | Benutzerdefinierte Plotfunktion

Nur ga: 'gaplotbestf' | 'gaplotbestindiv' | 'gaplotexpectation' | 'gaplotrange'

Nur gamultiobj: 'gaplotpareto' | 'gaplotparetodistance' | 'gaplotrankhist' | 'gaplotspread'

PlotIntervall

Positive Ganzzahl, die die Anzahl der Generationen zwischen aufeinanderfolgenden Aufrufen der Plotfunktionen angibt.

Positive Ganzzahl | {1}

PopulationSize

Größe der Population

Positive Ganzzahl | {50} wenn numberOfVariables <= 5, {200} andernfalls | {min(max(10*nvars,40),100)} für gemischt-ganzzahlige Probleme

PopulationType

Datentyp der Population. Muss für gemischt-ganzzahlige Probleme 'doubleVector' sein.

'bitstring' | 'custom' | {'doubleVector'}

ga ignoriert alle Einschränkungen, wenn PopulationType auf 'bitString' oder 'custom' gesetzt ist. Siehe Population Options.

SelectionFcn

Funktion, die Eltern von Crossover- und Mutationskindern auswählt. Geben Sie den Namen einer integrierten Auswahlfunktion oder einen Funktions-Handle an.

gamultiobj verwendet nur 'selectiontournament'.

{'selectionstochunif'} für ga, {'selectiontournament'} für gamultiobj | 'selectionremainder' | 'selectionuniform' | 'selectionroulette' | Benutzerdefinierte Auswahlfunktion

StallTest

NM Testtyp wird gestoppt.

'geometricWeighted' | {'averageChange'}

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.

true | {false}

UseVectorized

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 Vectorized mit den Werten 'on' oder 'off'.

true | {false}

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

A-Matrix für lineare Ungleichheitsbeschränkungen

Bineq

b-Vektor für lineare Ungleichheitsbeschränkungen

Aeq

Aeq-Matrix für lineare Gleichheitsbeschränkungen

Beq

beq-Vektor für lineare Gleichheitsbeschränkungen

lb

Untergrenze für x

ub

Obergrenze für x

nonlcon

Nichtlineare Zwangsfunktionen

intconIndizes von Ganzzahl-Variablen
rngstate

Feld zum Zurücksetzen des Zustands des Zufallszahlengenerators

solver

'ga'

options

Mit optimoptions oder einer Optionsstruktur erstellte Optionen

Sie müssen die Felder fitnessfcn, nvars und options angeben. Der Rest ist für ga optional.

Datentypen: struct

Ausgabeargumente

alle reduzieren

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.

AusstiegsbedingungBedeutung
1

Ohne nichtlineare Einschränkungen — Die durchschnittliche kumulative Wertänderung der Fitnessfunktion über MaxStallGenerations Generationen ist kleiner als FunctionTolerance und die Einschränkungsverletzung ist kleiner als ConstraintTolerance.

Mit nichtlinearen Einschränkungen — Die Größe des Komplementaritätsmaßes (siehe Komplementaritätsmaßnahme) ist kleiner als sqrt(ConstraintTolerance), das Teilproblem wird mit einer Toleranz von weniger als FunctionTolerance gelöst und die Einschränkungsverletzung ist kleiner als ConstraintTolerance.

3

Der Wert der Fitnessfunktion hat sich in MaxStallGenerations Generationen nicht geändert und die Einschränkungsverletzung ist kleiner als ConstraintTolerance.

4

Die Schrittweite ist kleiner als die Maschinenpräzision und die Einschränkungsverletzung ist kleiner als ConstraintTolerance.

5

Minimale Fitnessgrenze FitnessLimit erreicht und die Einschränkungsverletzung ist kleiner als ConstraintTolerance.

0

Maximale Anzahl von Generationen MaxGenerations überschritten.

-1

Optimierung durch eine Ausgabefunktion oder Plotfunktion beendet.

-2

Kein durchführbarer Punkt gefunden.

-4

Stallzeitlimit MaxStallTime überschritten.

-5

Zeitlimit MaxTime überschritten.

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 in rngstate verwenden, um die Ausgabe von ga zu 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 auf HybridFcn options. Gilt nicht für gamultiobj.

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

alle reduzieren

Tipps

  • Informationen zum Schreiben einer Funktion mit zusätzlichen Parametern für die unabhängigen Variablen, die von ga aufgerufen werden können, finden Sie unter Passing Extra Parameters.

  • Bei Problemen, die den Populationstyp Double Vector (Standard) verwenden, akzeptiert ga keine Funktionen, deren Eingaben vom Typ complex sind. 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

alle erweitern

Versionsverlauf

Eingeführt vor R2006a

alle erweitern