PowerPoint-Folien zur 3. Vorlesung „Evolutionsstrategie II“ Ingo Rechenberg PowerPoint-Folien zur 3. Vorlesung „Evolutionsstrategie II“ Anwendungsfelder geschachtelter Evolutionsstrategien - Programmierung einer geschachtelten ES Weiterverwendung nur unter Angabe der Quelle gestattet
Selektion der besten Populationen Zweitbeste Population Auf dem Weg zu einer evolutionsstrategischen Algebra g [ ] m , m , ( l ) - ES + l + Beispiel: m = 2, l = 6, l´ = 4, g = 8 , m´ = 2 2 , 4 (2, 6)8 (2, 6)8 + (2, 6)8 + (2, 6)8 + (2, 6)8 = Selektion der besten Populationen Beste Population Zweitbeste Population
Beispiel für eine algebraische Operation in einer geschachtelten ES 1 1, 2 1, 1 Zwei unterschiedliche Strategien
Die Geschachtelte Evolutionsstrategie Höchste Nachahmungsstufe der biologischen Evolution m' = Zahl der Eltern-Populationen l' = Zahl der Nachkommen-Populationen m = Zahl der Eltern-Individuen l = Zahl der Nachkommen-Individuen g = Generationen der Isolation g ' = Zahl der Populations-Generationen r' = Mischungszahl Populationen r = Mischungszahl Individuen
| Familie Gattung { Art [ Varietät ( Individuum ) ] } | Biologische Entsprechung der Strategie-Schachtelung | Familie Gattung { Art [ Varietät ( Individuum ) ] } |
Anwendungsfelder für geschachtelte Evolutionsstrategien Strategievariablen Objektvariablen Strategie-Evolution Sprungvariablen Gleitvariablen Gemischt ganzzahlige Optimierung Qualität Q1 Qualität Q 2 Zwei-Ziele-Optimierung Springen Klettern Globale Optimierung Vergangenheit Gegenwart Ortho-Evolution Anwendungsfelder für geschachtelte Evolutionsstrategien
Anwendungsfelder für geschachtelte Evolutionsstrategien Strategievariablen Objektvariablen Strategie-Evolution Anwendungsfelder für geschachtelte Evolutionsstrategien
Vier Kletterstrategien im Wettbewerb Angsthase Kolumbus Amundsen Hitzkopf Vier Kletterstrategien im Wettbewerb
Algorithmus der (1, l ) – Evolutionstrategie mit MSR Es ist problematisch anzunehmen, dass sich schon nach einer Generation die beste Fortschrittsgeschwindigkeit selektieren lässt.
a = 1,1 … 1,5 Korrekte mutative Schrittweitenanpassung mit einer geschachtelten Evolutionsstrategie a = 1,1 … 1,5 Notation auf linker Klammerseite bedeutet : Schrittweite wird von der äußeren Klammer in die innere Klammer übertragen
Die geschachtelte Evolutionsstrategie Neue Gründerpopulationen Die geschachtelte Evolutionsstrategie
Anwendungsfelder für geschachtelte Evolutionsstrategien Strategievariablen Objektvariablen Strategie-Evolution Sprungvariablen Gleitvariablen Gemischt ganzzahlige Optimierung Anwendungsfelder für geschachtelte Evolutionsstrategien
Gleitvariable ! Sprungvariable ! y x Gewicht Minimum
Anwendungsfelder für geschachtelte Evolutionsstrategien Strategievariablen Objektvariablen Strategie-Evolution Sprungvariablen Gleitvariablen Gemischt ganzzahlige Optimierung Qualität Q1 Qualität Q 2 Zwei-Ziele-Optimierung Anwendungsfelder für geschachtelte Evolutionsstrategien
Eine 2-Ziele-Optimierung
Anwendungsfelder für geschachtelte Evolutionsstrategien Strategievariablen Objektvariablen Strategie-Evolution Sprungvariablen Gleitvariablen Gemischt ganzzahlige Optimierung Qualität Q1 Qualität Q 2 Zwei-Ziele-Optimierung Springen Klettern Globale Optimierung Anwendungsfelder für geschachtelte Evolutionsstrategien
Gründer Populationen
9 8 7 6 5 4 8 3 7 6 5 4 3 8 9 6 7 5 Wir sind hier 3 4 9 8 7 7 6 6 5 5 4 4 3 3 7 Für n >> 1 sind die weißen Einzugsgebiete der Berge vernachlässigbar klein gegenüber dem schwarzen Gebiet dazwischen ! 6 5 4 3 7 6 5 6 7 8 6 4 3 4 5 3 5 4 3 22
Lückenwert L L = Zwischenraum Kugelraum „weiß“: Einzugsgebiete der Berge „schwarz“: Zwischenräume
Evolutionsstrategische Optimierung eines Freiträgers mit minimalem Gewicht
Anwendungsfelder für geschachtelte Evolutionsstrategien Strategievariablen Objektvariablen Strategie-Evolution Sprungvariablen Gleitvariablen Gemischt ganzzahlige Optimierung Qualität Q1 Qualität Q 2 Zwei-Ziele-Optimierung Springen Klettern Globale Optimierung Vergangenheit Gegenwart Ortho-Evolution Anwendungsfelder für geschachtelte Evolutionsstrategien
, , [ m ] m l l ( ) - ES g g + + Ortho-Evolution ! Geschachtelte Evolutionsstrategie [ m , , g ] g m + l ( + l ) - ES Aktuelle Position Gründerposition Ortho-Evolution !
e e d h d b h d b ( ) ( d d ) h h R q F 1 Strahl 2 = Brechungsindex h d 1 Strahl 2 b h d 2 b ( e 1 ) ( d d ) h 2 1 h k R q 2 e = Brechungsindex F w = Gewichtsfaktor Zwei-Ziele-Optimierung
Das Wunder der Koordinatentransformation
D‘ARCY THOMSONs Transformationen Pseudopriacanthus altus Polyprion Antigonia capros Scorpaena sp.
Koordinatentransformation nach Albrecht Dürer
Rätsel der sogenannten Schrott-DNA (junk DNA) Für Koordinaten- Transformation ? Bauanweisung für Protein „Dunkle“ DNA über 95%
Lineare Transformation: Polygenie und Polyphänie Pleiotropie Lineare Transformation: Polygenie und Polyphänie Ein Merkmal (y) wird von vielen Genen (x) gesteuert n = 5 ! Ein Gen (x) steuert viele Merkmale (y)
Schiefwinklige lineare Koordinaten-Transformationen
Zu viele Koeffizienten für Transformation eines orthogonalen Systems Statt benötigen wir nur Koeffizienten
ES-Hybridverfahren Matrizenrechnung Orthogonalisierungsverfahren CMA-Methode Covarianz-Matrix-Adaptation ES-Hybridverfahren
Programmierung einer geschachtelten Evolutionsstrategie
Algorithmus: Farbe anstelle eines Index !
MATLAB-Programm der (1, l ) ES
MATLAB-Programm der (1, l ) ES v=100; gg=1000; kk=10; xe=ones(v,1); de=1; aa=1.5; Variablenzahl, Generationszahl, Nachkommenzahl und Startwerte für Variablenwerte und Schritt-weite des Start-Elters
MATLAB-Programm der (1, l ) ES v=100; gg=1000; kk=10; xe=ones(v,1); de=1; aa=1.5; for g=1:gg end Erzeugen der Generationenschleife
MATLAB-Programm der (1, l ) ES v=100; gg=1000; kk=10; xe=ones(v,1); de=1; aa=1.5; for g=1:gg qb=1e+20; end Initialisierung der Qualität im Bestwert-Zwischenspeicher auf nicht verschlechterbaren Wert
MATLAB-Programm der (1, l ) ES v=100; gg=1000; kk=10; xe=ones(v,1); de=1; aa=1.5; for g=1:gg qb=1e+20; for k=1:kk end Generierung der Nachkommenschleife
MATLAB-Programm der (1, l ) ES v=100; gg=1000; kk=10; xe=ones(v,1); de=1; aa=1.5; for g=1:gg qb=1e+20; for k=1:kk dn=de*aa^(2*round(rand)-1); end Deterministische Variation der Mutationsschrittweite
MATLAB-Programm der (1, l ) ES v=100; gg=1000; kk=10; xe=ones(v,1); de=1; aa=1.5; for g=1:gg qb=1e+20; for k=1:kk dn=de*aa^(2*round(rand)-1); xn=xe+dn*randn(v,1)/sqrt(v); end Erzeugung eines mutierten Nachkommen
MATLAB-Programm der (1, l ) ES v=100; gg=1000; kk=10; xe=ones(v,1); de=1; aa=1.5; for g=1:gg qb=1e+20; for k=1:kk dn=de*aa^(2*round(rand)-1); xn=xe+dn*randn(v,1)/sqrt(v); qn=sum(xn.^2); end Bestimmung der Qualität des mutierten Nachkommen
MATLAB-Programm der (1, l ) ES v=100; gg=1000; kk=10; xe=ones(v,1); de=1; aa=1.5; for g=1:gg qb=1e+20; for k=1:kk dn=de*aa^(2*round(rand)-1); xn=xe+dn*randn(v,1)/sqrt(v); qn=sum(xn.^2); if qn < qb qb=qn; db=dn; xb=xn; end Bei Q-Verbesserung Zwischen-speicherung der Qualität, Schritt-weite und Variablenwerte
MATLAB-Programm der (1, l ) ES v=100; gg=1000; kk=10; xe=ones(v,1); de=1; aa=1.5; for g=1:gg qb=1e+20; for k=1:kk dn=de*aa^(2*round(rand)-1); xn=xe+dn*randn(v,1)/sqrt(v); qn=sum(xn.^2); if qn < qb qb=qn; db=dn; xb=xn; end qe=qb; de=db; xe=xb; Nachkomme aus dem Bestwert-Zwischenspeicher wird zum Elter der nächsten Generation
MATLAB-Programm der (1, l ) ES v=100; gg=1000; kk=10; xe=ones(v,1); de=1; aa=1.5; for g=1:gg qb=1e+20; for k=1:kk dn=de*aa^(2*round(rand)-1); xn=xe+dn*randn(v,1)/sqrt(v); qn=sum(xn.^2); if qn < qb qb=qn; db=dn; xb=xn; end qe=qb; de=db; xe=xb; semilogy(g,qe,'b.') hold on; drawnow; Darstellung der Qualität als Funktion der Generationszahl
Von der einfachen zur geschachtelten ES Programmverdopplung gg=1000; kk=10; xe=ones(v,1); de=1; aa=1.5; for g=1:gg qb=1e+20; for k=1:kk dn=de*aa^(2*round(rand)-1); xn=xe+dn*randn(v,1)/sqrt(v); qn=sum(xn.^2); if qn < qb qb=qn; db=dn; xb=xn; end qe=qb; de=db; xe=xb; semilogy(g,qe,'b.') hold on; drawnow; v=100; gg=1000; kk=10; xe=ones(v,1); de=1; aa=1.5; for g=1:gg qb=1e+20; for k=1:kk dn=de*aa^(2*round(rand)-1); xn=xe+dn*randn(v,1)/sqrt(v); qn=sum(xn.^2); if qn < qb qb=qn; db=dn; xb=xn; end qe=qb; de=db; xe=xb; semilogy(g,qe,'b.') hold on; drawnow;
Programmdifferenzierung v=100; gg1=1000; kk1=10; xe1=ones(v,1); de1=1; aa1=1.5; for g1=1:gg1 qb1=1e+20; for k1=1:kk1 dn1=de1*aa1^(2*round(rand)-1); xn1=xe1+dn1*randn(v,1)/sqrt(v); qn1=sum(xn1.^2); if qn1 < qb1 qb1=qn1; db1=dn1; xb1=xn1; end qe1=qb1; de1=db1; xe1=xb1; semilogy(g1,qe1,'b.') hold on; drawnow; v=100; gg0=1000; kk0=10; xe0=ones(v,1); de0=1; aa0=1.5; for g0=1:gg0 qb0=1e+20; for k0=1:kk0 dn0=de0*aa0^(2*round(rand)-1); xn0=xe0+dn0*randn(v,1)/sqrt(v); qn0=sum(xn0.^2); if qn0 < qb0 qb0=qn0; db0=dn0; xb0=xn0; end qe0=qb0; de0=db0; xe0=xb0; semilogy(g0,qe0,'b.') hold on; drawnow;
Programmschachtelung v=100; gg1=1000; kk1=10; xe1=ones(v,1); de1=1; aa1=1.5; for g1=1:gg1 qb1=1e+20; for k1=1:kk1 dn1=de1*aa1^(2*round(rand)-1); xn1=xe1+dn1*randn(v,1)/sqrt(v); qn1=sum(xn1.^2); if qn1 < qb1 qb1=qn1; db1=dn1; xb1=xn1; end qe1=qb1; de1=db1; xe1=xb1; semilogy(g1,qe1,'b.') hold on; drawnow; v=100; gg0=1000; kk0=10; xe0=ones(v,1); de0=1; aa0=1.5; for g0=1:gg0 qb0=1e+20; for k0=1:kk0 dn0=de0*aa0^(2*round(rand)-1); xn0=xe0+dn0*randn(v,1)/sqrt(v); qn0=sum(xn0.^2); if qn0 < qb0 qb0=qn0; db0=dn0; xb0=xn0; end qe0=qb0; de0=db0; xe0=xb0; semilogy(g0,qe0,'b.') hold on; drawnow;
Programmschachtelung 50 2 v=100; gg1=1000; kk1=10; xe1=ones(v,1); de1=1; aa1=1.5; for g1=1:gg1 qb1=1e+20; for k1=1:kk1 dn1=de1*aa1^(2*round(rand)-1); xn1=xe1+dn1*randn(v,1)/sqrt(v); gg0=1000; kk0=10; xe0=ones(v,1); de0=1; aa0=1.5; 1.0 for g0=1:gg0 qb0=1e+20; for k0=1:kk0 dn0=de0*aa0^(2*round(rand)-1); xn0=xe0+dn0*randn(v,1)/sqrt(v); qn0=sum(xn0.^2); if qn0 < qb0 qb0=qn0; db0=dn0; xb0=xn0; end qe0=qb0; de0=db0; xe0=xb0; semilogy(g0,qe0,'b.') hold on; drawnow; de0=dn1; xe0=xn1; dn1=de0; xn1=xe0; qn1=sum(xn1.^2); if qn1 < qb1 qb1=qn1; db1=dn1; xb1=xn1; end qe1=qb1; de1=db1; xe1=xb1; semilogy(g1,qe1,'b.') hold on; drawnow;
Programmschachtelung v=100; gg1=1000; kk1=2; xe1=ones(v,1); de1=1; aa1=1.5; for g1=1:gg1 qb1=1e+20; for k1=1:kk1 dn1=de1*aa1^(2*round(rand)-1); xn1=xe1+0*randn(v,1)/sqrt(v); gg0=50; kk0=10; xe0=ones(v,1); de0=1; aa0=1.0; for g0=1:gg0 qb0=1e+20; for k0=1:kk0 dn0=de0*aa0^(2*round(rand)-1); xn0=xe0+dn0*randn(v,1)/sqrt(v); qn0=sum(xn0.^2); if qn0 < qb0 qb0=qn0; db0=dn0; xb0=xn0; end qe0=qb0; de0=db0; xe0=xb0; de0=dn1; xe0=xn1; dn1=de0; xn1=xe0; qn1=sum(xn1.^2); if qn1 < qb1 qb1=qn1; db1=dn1; xb1=xn1; end qe1=qb1; de1=db1; xe1=xb1; semilogy(g1,qe1,'b.') hold on; drawnow; MATLAB-Programm einer geschachtelten ES
Programmschachtelung oo=ones(v,1) v=100; gg1=1000; kk1=2; xe1=ones(v,1); de1=1; aa1=1.5; for g1=1:gg1 qb1=1e+20; for k1=1:kk1 dn1=de1*aa1^(2*round(rand)-1); xn1=xe1+0*randn(v,1)/sqrt(v); gg0=50; kk0=10; xe0=ones(v,1); de0=1; aa0=1.0; for g0=1:gg0 qb0=1e+20; for k0=1:kk0 dn0=de0*aa0^(2*round(rand)-1); xn0=xe0+dn0*randn(v,1)/sqrt(v) qn0=sum(xn0.^2); if qn0 < qb0 qb0=qn0; db0=dn0; xb0=xn0; end qe0=qb0; de0=db0; xe0=xb0; semilogy(g0,qe0,'b.') hold on; drawnow; de0=dn1; xe0=xn1; +oo*randn/sqrt(v); ; dn1=de0; xn1=xe0; qn1=sum(xn1.^2); if qn1 < qb1 qb1=qn1; db1=dn1; xb1=xn1; end qe1=qb1; de1=db1; semilogy(g1,qe1,'b.') hold on; drawnow; oo=xb1-xe1; MATLAB-Programm einer geschachtelten ES MATLAB-Programm einer geschachtelten Ortho-ES xe1=xb1;
Programmschachtelung oo=ones(v,1); v=100; gg1=1000; kk1=2; xe1=ones(v,1); de1=1; aa1=1.5; for g1=1:gg1 qb1=1e+20; for k1=1:kk1 dn1=de1*aa1^(2*round(rand)-1); xn1=xe1+0*randn(v,1)/sqrt(v); gg0=50; kk0=10; xe0=ones(v,1); de0=1; aa0=1.0; for g0=1:gg0 qb0=1e+20; for k0=1:kk0 dn0=de0*aa0^(2*round(rand)-1); xn0=xe0+dn0*randn(v,1)/sqrt(v) qn0=sum(xn0.^2); if qn0 < qb0 qb0=qn0; db0=dn0; xb0=xn0; end qe0=qb0; de0=db0; xe0=xb0; semilogy(g0,qe0,'b.') hold on; drawnow; de0=dn1; xe0=xn1; +oo*randn/sqrt(v); ; dn1=de0; xn1=xe0; qn1=sum(xn1.^2); if qn1 < qb1 qb1=qn1; db1=dn1; xb1=xn1; end qe1=qb1; de1=db1; semilogy(g1,qe1,'b.') hold on; drawnow; oo=xb1-xe1; MATLAB-Programm einer geschachtelten Ortho-ES xe1=xb1;
Zum Kopieren (Qualitätsfunktion = „Zigarre“ ) v=100; gg1=1000; kk1=2; xe1=ones(v,1); de1=1; aa1=1.5; gg0=50; kk0=10; xe0=ones(v,1); de0=1; aa0=1.0; oo=ones(v,1); for g1=1:gg1 qb1=1e+20; for k1=1:kk1 dn1=de1*aa1^(2*round(rand)-1); xn1=xe1+0*randn(v,1)/sqrt(v); de0=dn1; xe0=xn1; for g0=1:gg0 qb0=1e+20; for k0=1:kk0 dn0=de0*aa0^(2*round(rand)-1); xn0=xe0+dn0*randn(v,1)/sqrt(v)+oo*randn/sqrt(v); qn0=xn0(1)^2+1000*sum(xn0(2:v).^2); if qn0 < qb0 qb0=qn0; db0=dn0; xb0=xn0; end qe0=qb0; de0=db0; xe0=xb0; dn1=de0; xn1=xe0; qn1=xn1(1)^2+1000*sum(xn1(2:v).^2); if qn1 < qb1 qb1=qn1; db1=dn1; xb1=xn1; qe1=qb1; de1=db1; oo=xb1-xe1; xe1=xb1; semilogy(g1,qe1,'b.') hold on; drawnow; MATLAB-Programm einer geschachtelten Ortho-ES
Modifizierter Algorithmus einer geschachtelten ES Schrittweite für das Setzen von Gründerpopulationen Schrittweite für das lokale Bergklettern zum Optimum Modifizierter Algorithmus einer geschachtelten ES
Mathematische Formulierung einer (1, l ) - Ortho-ES in ungeschachtelter Form Variation k = 1, 2, … l Nachkommen Selektion ( B = Bester Nachkomme)
Ende www.bionik.tu-berlin.de