Ingo Rechenberg PowerPoint-Folien zur 3. Vorlesung „Evolutionsstrategie II“ Anwendungsfelder geschachtelter Evolutionsstrategien Programmierung einer geschachtelten ES Auf dem Weg zu einer evolutionsstrategischen Algebra g [ m +, l ( m +,l) -] ES Beispiel: m = 2, l = 6, l´ = 4, g = 8 , m´ = 2 (2, 6)·(2, 6)·(2, 6)·(2, 6)·(2, 6)·(2, 6) )·(2, 6)·(2, 6) 2 , 4(2, 6) Selektion der besten 2 Populationen 8 = (2, 6)8 + (2, 6)8 + (2 Beste Population nach 8 Generationen , 6)8 + (2, 6)8 Zweitbeste Population nach 8 Generationen 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 g g [ m / , l ( m / , l ) ] - ES m' = Zahl der Eltern-Populationen ' = Mischungszahl Populationen l' = Zahl der Nachkommen-Populationen g ' = Zahl der Populations-Generationen m = Zahl der Eltern-Individuen = Mischungszahl Individuen l = Zahl der Nachkommen-Individuen g = Generationen der Isolation Biologische Entsprechung der Strategie-Schachtelung | FamilieGattung{Art[Varietät(Individuum)] }| [ m / , l( m / , l )g ]g ES Strategievariablen Objektvariablen Strategie-Evolution Sprungvariablen Gleitvariablen Gemischt ganzzahlige Optimierung Qualität Q1 Qualität Q2 Zwei-Ziele-Optimierung Springen Klettern Globale Optimierung Vergangenheit Gegenwart Ortho-Evolution Anwendungsfelder für geschachtelte Evolutionsstrategien [ m / , l( m / Strategievariablen , l )g ]g ES Objektvariablen Strategie-Evolution Anwendungsfelder für geschachtelte Evolutionsstrategien Angsthase Kolumbus N Amundsen Hitzkopf [1, 4 (1, 10)20- ES Vier Kletterstrategien im Wettbewerb Algorithmus der (1, l ) – Evolutionstrategie mit MSR Ng1 Eg 1 xNg1 xEg Ng1 z1 Ng2 Eg 2 g g g xN 2 x E N 2 z 2 z1 , z2 , zn (0, 1/ n ) normalvert eilt z.B. für l 6 : 1 2 3 1,5 4 5 6 1 / 1,5 Ngl Eg l g g g xNl xE Nl zl g Eg 1 NB g 1 g xE xNB Es ist problematisch anzunehmen, dass sich schon nach einer Generation die beste Fortschrittsgeschwindigkeit selektieren lässt. g Q( xNB ) max/min Q( xNg1 ), Q( xNg2 ), Q( xNgl ) Korrekte mutative Schrittweitenanpassung mit einer geschachtelten Evolutionsstrategie a = 1,1 … 1,5 Notation auf der linken Klammerseite bedeutet : Die Schrittweite ist eine Populationseigenschaft. Sie wird in der jeweiligen inneren Klammer benutzt und dort nicht mehr variiert. [ m , l ( m , l )g ] ES m1 l 2 m 1 l 5 g 4 Die geschachtelte Evolutionsstrategie Neue Gründerpopulationen [ m / , l( m / , l )g ]g ES Strategievariablen Objektvariablen Strategie-Evolution Sprungvariablen Gleitvariablen Gemischt ganzzahlige Optimierung Anwendungsfelder für geschachtelte Evolutionsstrategien Gleitvariable Sprungvariable ! ! y x Gewicht Minimum [ m / , l( m / , l )g ]g ES Strategievariablen Objektvariablen Strategie-Evolution Sprungvariablen Gleitvariablen Gemischt ganzzahlige Optimierung Qualität Q1 Qualität Q2 Zwei-Ziele-Optimierung Anwendungsfelder für geschachtelte Evolutionsstrategien Schlagwort „multikriterielle Optimierung“ Q2 Mehr-Ziele-Optimierung Zwei-Ziele-Optimierung Das Management entscheidet über die Realisation Pareto Front Pareto-Optimierung Q1 Ein 2-Ziele Pareto-Optimum ist ein Zustand, bei dem es nicht möglich ist, eine Qualität Q1 besser zu machen, ohne dass sich die Qualität Q2 verschlechtert. Die Menge der Pareto-Optima bildet die sogenannte Pareto-Front. Besser wir lösen eine Zwei-Ziele-Optimierung mit der gewichteten globalen Qualität: Qglobal g1Q1 g2Q2 Minimum Maximum Für die verschiedenen Gewichtungen g1 und g2 ergibt sich die Pareto-Front! Die Idee der globalen Qualität lässt sich leicht auf mehr als zwei Qualitäten erweitern. Der W-klein-A-groß-Denker A Eine 2-Ziele-Optimierung W A W Der -klein-Denker 2 tan WW StZa Min 3 SteigZahl AA log(log(tan StZa) 2) log( WW) ) 3log( log(11/ A / A) ) log( [ m / , l( m / , l )g ]g ES Strategievariablen Objektvariablen Strategie-Evolution Sprungvariablen Gleitvariablen Gemischt ganzzahlige Optimierung Qualität Q1 Qualität Q2 Zwei-Ziele-Optimierung Springen Klettern Globale Optimierung Anwendungsfelder für geschachtelte Evolutionsstrategien g [1, 3 ( m , l ) ]-ES Gipfelspringen und Gipfelklettern mit der geschachtelten Evolutionsstrategie g [1, 3 ( m , l ) ]-ES Gründer Populationen Gipfelspringen und Gipfelklettern mit der geschachtelten Evolutionsstrategie g [1, 3 ( m , l ) ]-ES Gipfelspringen und Gipfelklettern mit der geschachtelten Evolutionsstrategie g [1, 3 ( m , l ) ]-ES Gipfelspringen und Gipfelklettern mit der geschachtelten Evolutionsstrategie g [1, 3 ( m , l ) ]-ES Gipfelspringen und Gipfelklettern mit der geschachtelten Evolutionsstrategie Kameraaugen mit Hornhaut ausgestattete Augen der Landwirbeltiere Komplexaugen Superpositionsaugen Neurale Superposition Appositionsaugen Pfeilschwanzkrebs Spinnen Fischaugen Linsenauge der Kopffüßer Zwischenformen Augen mit Glaskörper Vorstufen der Komplexaugen TapetumBergrücken Augen mit Spiegeln Ruderfußkrebse Augen mit Detritus Nautilus engem Loch Augen mit engem Loch Becheraugen mit reflektierendem Pigment Becheraugen mit Pigment Einfache Lichtwahrnehmung Fitnesslandschaft der Augen-Evolution (nach M. Land) 3 4 5 6 7 98 3 3 8 6 4 4 5 6 7 4 5 8 6 7 89 Wir sind hier 9 7 5 4 3 6 7 5 6 7 3 4 Für n >> 1 sind die weißen Einzugsgebiete 3 5 der Berge vernachlässigbar klein gegenüber dem schwarzen Gebiet dazwischen ! 5 3 4 6 3 4 5 6 7 6 7 8 3 4 5 Lückenwert L L= L (n) 2 n ( ) ( ) L „weiß“: Einzugsgebiete der Berge „schwarz“: Zwischenräume L Zwischenraum Kugelraum ( 2) (100) n2 1 1 0,2732 5,35 1069 Evolutionsstrategische Optimierung eines Freiträgers mit minimalem Gewicht [ m / , l( m / , l )g ]g ES Strategievariablen Objektvariablen Strategie-Evolution Sprungvariablen Gleitvariablen Gemischt ganzzahlige Optimierung Qualität Q1 Qualität Q2 Zwei-Ziele-Optimierung Springen Klettern Globale Optimierung Vergangenheit Gegenwart Ortho-Evolution Anwendungsfelder für geschachtelte Evolutionsstrategien Geschachtelte Evolutionsstrategie g g + , , [ m l ( m l) ] - ES + Aktuelle Position Gründerposition Ortho-Evolution ! d0 h Strahl 2 d1 h b d2 h k b ( 1) (d d ) 2 1 h R q2 = Brechungsindex F n Qstreu [ R h h(k 1) b ( 1)(dk dk1)] Min k 1 Qvol nh 2 2 n h dk Min k 1 Qges Qstreu w Qvol Min für alle dk d0 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 Das Rätsel der sogenannten Schrott-DNA (junk DNA) ? Heute weiß man: Die Schrott-DNA bildet einen riesigen Steuerungsapparat Und das könnte auch eine Koordinaten-Transformation sein Bauanweisung für Protein „Dunkle“ DNA über 95% Pleiotropie Lineare Transformation: Polygenie und Polyphänie y1 a11x1 a12 x 2 a13 x 3 a14 x 4 a15 x 5 y2 a21x1 a22 x 2 a23 x 3 a24 x 4 a25 x 5 y3 a31x1 a32 x 2 a33 x 3 a34 x 4 a35 x 5 y4 a41x1 a42 x 2 a43 x 3 a44 x 4 a45 x 5 y5 a51x1 a52 x 2 a53 x 3 a54 x 4 a55 x 5 Ein Merkmal (y) wird von vielen Genen (x) gesteuert Ein Gen (x) steuert viele Merkmale (y) n=5! Schiefwinklige lineare Koordinaten-Transformationen y1 a11x1 a12 x 2 a13 x 3 a14 x 4 a15 x 5 y2 a21x1 a22 x 2 a23 x 3 a24 x 4 a25 x 5 n2 y3 a31x1 a32 x 2 a33 x 3 a34 x 4 a35 x 5 Koeffizienten y4 a41x1 a42 x 2 a43 x 3 a44 x 4 a45 x 5 y5 a51x1 a52 x 2 a53 x 3 a54 x 4 a55 x 5 Zu viele Koeffizienten für Transformation eines orthogonalen Systems Für ein orthogonales System benötigen wir statt: n2 nur n ( n 1) Koeffizienten 2 y1 a11x1 a12 x 2 a13 x 3 a14 x 4 a15 x 5 y2 a21x1 a22 x 2 a23 x 3 a24 x 4 a25 x 5 y3 a31x1 a32 x 2 a33 x 3 a34 x 4 a35 x 5 y4 a41x1 a42 x 2 a43 x 3 a44 x 4 a45 x 5 y5 a51x1 a52 x 2 a53 x 3 a54 x 4 a55 x 5 Matrizenrechnung Orthogonalisierungsverfahren CMA-Methode Covarianz-Matrix-Adaptation ES-Hybridverfahren Programmierung einer geschachtelten Evolutionsstrategie g Nk g Nk x g g E g E g x Nk z Algorithmus: [1, l (1, l ) ]-ES g ( Eg )k Nk g g Nk E g g g xNk xE Nk z g 1 g k = 1, ... l k = 1, ... l k g g 1 g g E Nb g 1 g xE xNb E Nb g 1 g xE xNb g (xEg )k xNk g g Nb ( E )b g g g xNb ( xE )b 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; 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 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 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 end 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 end 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 end 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 end 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 end end 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 end qe=qb; de=db; xe=xb; end 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 end qe=qb; de=db; xe=xb; semilogy(g,qe,'b.') hold on; drawnow; end Von der einfachen zur geschachtelten ES Programmverdopplung 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 end qe=qb; de=db; xe=xb; semilogy(g,qe,'b.') hold on; drawnow; end 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 end qe=qb; de=db; xe=xb; semilogy(g,qe,'b.') hold on; drawnow; end 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 end qe1=qb1; de1=db1; xe1=xb1; semilogy(g1,qe1,'b.') hold on; drawnow; end 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 end qe0=qb0; de0=db0; xe0=xb0; semilogy(g0,qe0,'b.') hold on; drawnow; end 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 end qe1=qb1; de1=db1; xe1=xb1; semilogy(g1,qe1,'b.') hold on; drawnow; end 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 end qe0=qb0; de0=db0; xe0=xb0; semilogy(g0,qe0,'b.') hold on; drawnow; end Programmschachtelung 50 2 v=100; gg1=1000; kk1=10; xe1=ones(v,1); de1=1; aa1=1.5; gg0=1000; kk0=10; xe0=ones(v,1); de0=1; aa0=1.5; for g1=1:gg1 0 qb1=1e+20; for k1=1:kk1 dn1=de1*aa1^(2*round(rand)-1); xn1=xe1+dn1*randn(v,1)/sqrt(v); 1.0 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); qn0=sum(xn0.^2); if qn0 < qb0 qb0=qn0; db0=dn0; xb0=xn0; end end qe0=qb0; de0=db0; xe0=xb0; semilogy(g0,qe0,'b.') hold on; drawnow; end dn1=de0; xn1=xe0; qn1=sum(xn1.^2); if qn1 < qb1 qb1=qn1; db1=dn1; xb1=xn1; end end qe1=qb1; de1=db1; xe1=xb1; semilogy(g1,qe1,'b.') hold on; drawnow; end Programmschachtelung 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; 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); qn0=sum(xn0.^2); if qn0 < qb0 qb0=qn0; db0=dn0; xb0=xn0; end end qe0=qb0; de0=db0; xe0=xb0; end dn1=de0; xn1=xe0; qn1=sum(xn1.^2); if qn1 < qb1 qb1=qn1; db1=dn1; xb1=xn1; end end qe1=qb1; de1=db1; xe1=xb1; semilogy(g1,qe1,'b.') hold on; drawnow; end MATLAB-Programm einer geschachtelten ES Programmschachtelung 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; +oo*randn/sqrt(v); 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 end qe0=qb0; de0=db0; xe0=xb0; semilogy(g0,qe0,'b.') hold on; drawnow; end dn1=de0; xn1=xe0; qn1=sum(xn1.^2); if qn1 < qb1 qb1=qn1; db1=dn1; xb1=xn1; end oo=xb1-xe1; end qe1=qb1; de1=db1; xe1=xb1; semilogy(g1,qe1,'b.') hold on; drawnow; end MATLAB-Programm einer geschachtelten Ortho-ES geschachtelten ES Programmschachtelung 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; +oo*randn/sqrt(v); 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 end qe0=qb0; de0=db0; xe0=xb0; semilogy(g0,qe0,'b.') hold on; drawnow; end dn1=de0; xn1=xe0; qn1=sum(xn1.^2); if qn1 < qb1 qb1=qn1; db1=dn1; xb1=xn1; end oo=xb1-xe1; end qe1=qb1; de1=db1; xe1=xb1; semilogy(g1,qe1,'b.') hold on; drawnow; end MATLAB-Programm einer geschachtelten Ortho-ES 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 end qe0=qb0; de0=db0; xe0=xb0; end dn1=de0; xn1=xe0; qn1=xn1(1)^2+1000*sum(xn1(2:v).^2); if qn1 < qb1 qb1=qn1; db1=dn1; xb1=xn1; end end qe1=qb1; de1=db1; oo=xb1-xe1; xe1=xb1; semilogy(g1,qe1,'b.') hold on; drawnow; end MATLAB-Programm einer geschachtelten Ortho-ES [ m , l ( m , l )g ] ES m1 l 2 m 1 l 5 g 4 Die geschachtelte Evolutionsstrategie Neue Gründerpopulationen liegen übereinander (bisher) [ m , l ( m , l )g ] ES m1 l 2 m 1 l 5 g 4 Die geschachtelte Evolutionsstrategie Neue Gründerpopulationen variieren ihre Startposition g g Nk E g g Nk E g Schrittweite für das Setzen von Gründerpopulationen Schrittweite für das lokale Bergklettern zum Optimum g g xNk xE Nk z x g Nk x g 1 E g E g Nk x z x g Nb g g ( xEg )k xNk k x g 1 E g 1 E g 1 E x g Nb g Nb g Nb g xNb k 1, l k 1, l (x g g E b ) Algorithmus einer geschachtelten ES, bei der nicht nur jede Population eine eigene Schrittweite besitzt, sondern die Startposition jeder Gründerpopulation noch variiert wird Mathematische Formulierung einer (1, l )-Ortho-ES in ungeschachtelter Form g Nk Eg g g x Nk xEg Nk z Variation k = 1, 2, … l Nachkommen Elter vor m Generationen ( xEg xEg m ) z g Eg 1 NB g xEg 1 xNB Selektion (B = Bester Nachkomme) Ende www.bionik.tu-berlin.de