MGS-18 — Banc CEC consolide : la combinaison des deux biais
Ce notebook consolide le fil « biais des bancs CEC » ouvert en MGS-10 (biais central) et MGS-12 (alignement d’axes). La question qu’il pose est simple et les données montreront qu’elle n’est pas triviale : un optimiseur robuste a chaque biais pris separement est-il robuste au biais combine ?
Pourquoi consolider. Les competitions CEC (Congress on Evolutionary Computation) ne testent jamais un biais isole : elles deplacent ET rotationnent simultanement les fonctions, précisément pour vaincre les optimiseurs qui exploitent soit le centrage de l’optimum, soit l’alignement des axes. MGS-10 a isole le decalage (ShiftedFitness), MGS-12 a isole la rotation (RotatedFitness) ; aucun n’a confronte le portefeuille au protocole complet. Le banc du fork, CenterBiasBenchmark, ne fournit que deux variantes (centree / shiftée) — ce notebook l’etend aux quatre variantes du protocole CEC en composant les decorateurs.
La these structurelle (a eprouver). Si la lecon transversale de la Partie 4 tient — « la robustesse vient de la structure de l’opérateur, pas de sa metaphore » (DE / Recuit simule = arithmetique vectorielle > WOA = ancrage central > GA = composante par composante) — alors cette hiérarchie doit survivre au combine. Les données confirmeront la survie — et montreront un fait plus subtil : le combine n’est pas toujours pire que le pire biais isole (parfois sub-additif, parfois super-additif, selon le paysage).
la fonction publiee, optimum centre + axes alignes
(aucun)
\(x^*\) au centre
shifted
optimum deplace hors-centre
ShiftedFitness(inner, offset)
\(x^* + \text{offset}\)
rotated
axes melanges par matrice orthogonale \(M\)
RotatedFitness(inner, M)
\(M^{\top} x^*\)
combined
les deux — le vrai protocole CEC
RotatedFitness(ShiftedFitness(inner, offset), M)
\(M^{\top}(x^* + \text{offset})\)
Les deux decorateurs sont compositionnels : ils reutilisent les mathematiques de la fonction interne sans les reimplementer, et se composent pour la variante CEC complete. C’est le même principe qu’en MGS-12 — sauf qu’ici on l’execute sur le portefeuille entier, dans les quatre variantes, au même budget.
On fixe une fois pour toutes le vecteur de decalage et la matrice de rotation (tous deux seedes, donc reproduisibles) : ShiftVectors.Seeded(dim, magnitude, seed) pour le decalage, RotationMatrices.Seeded(dim, seed) pour une matrice orthogonale construite par produit de rotations de Givens (\(M M^{\top} = I\) par construction). Les quatre variantes se construisent alors en composant les decorateurs autour de la même fonction interne.
constint dim =5;constdouble shiftMag =2.0;// meme convention que MGS-10/16constint shiftSeed =11;constint rotSeed =23;double[] Off = ShiftVectors.Seeded(dim, shiftMag, shiftSeed);double[,] M = RotationMatrices.Seeded(dim, rotSeed);Console.Write("Offset (decalage de loptimum) : [");for(int i=0;i<Off.Length;i++) Console.Write($" {Off[i],6:F2}");Console.WriteLine(" ]");Console.WriteLine($"Matrice de rotation {dim}x{dim} orthogonale (Seeded, seed={rotSeed}) : construite.");Console.WriteLine($" Verif orthogonalite : ||M*M^T - I||_F = {FrobeniusOff(M):F4} (proche 0 = orthogonal OK).");// Les 4 variantes d une fonction interne, par composition de decorateurs.(string Label, IFitness Wrap)[]Variants(IFitness inner)=>new[]{("plain", inner),("shifted",newShiftedFitness(inner, Off)),("rotated",newRotatedFitness(inner, M)),("combined",newRotatedFitness(newShiftedFitness(inner, Off), M)),// protocole CEC complet};// Sanity : sur Ackley en un point NON NUL, les 4 variantes doivent donner 4 objectifs differents// (en x=0 la rotation est invisible : M.0 = 0 -> rotated == plain ; il faut x != 0 pour la voir).var probe =Variants(newAckleyFitness());var x0 =newDoubleArrayChromosome(newdouble[]{1,2,3,4,5},-32.0,32.0);// point x != 0Console.WriteLine("\nSanity Ackley au point x=(1,2,3,4,5) (objectif, les 4 doivent differe) :");foreach(var v in probe) Console.WriteLine($" {v.Label,-9}: {-v.Wrap.Evaluate(x0):F4}");doubleFrobeniusOff(double[,] mm){int n=mm.GetLength(0);double s=0;for(int i=0;i<n;i++)for(int j=0;j<n;j++){double t=0;for(int k=0;k<n;k++) t+=mm[i,k]*mm[j,k];double delta = t -(i==j?1.0:0.0); s+=delta*delta;}return Math.Sqrt(s);}
Lecture du cablage CEC. Les quatre evaluations du point de controle x=(1,2,3,4,5) valident l’instrument avant l’experimente : plain 9,6973, shifted 12,1977, rotated 10,7205, combined 13,0514. Trois observations.
Le decalage seul ajoute +2,500 a la valeur du point, la rotation seule +1,023. Sur Ackley, proche de l’origine, la rotation change peu la valeur — la fonction est quasi invariante en direction a rayon fixe — alors que le decalage (-0,11 ; -1,82 ; -0,17 ; 1,62 ; -1,31) eloigne l’optimum d’environ 2,77 unites (norme euclidienne du vecteur) du point de depart des optimiseurs. C’est le canal par lequel chaque variante mord : geometrie pour l’une, distance pour l’autre.
Le combine (+3,354) est deja legerement sous la somme des deux effets isoles (+3,524) : premier indice de la sous-additivite que le §2 va mesurer systematiquement sur tout le portefeuille.
La verification d’orthogonalite ||M·M^T - I||_F = 0,0000 garantit que la rotation est une vraie isometrie : tout ecart observe ensuite sur les variantes combinees sera attribuable au protocole, pas a une deformation numerique du decorateur.
Pourquoi ce point de controle x=(1,2,3,4,5) ? C’est un sondage hors-axe, a composantes toutes distinctes et loin de l’origine : si deux variantes y rendaient la meme valeur, les decorateurs s’aliaseraient (par exemple une rotation identite ou un decalage nul) et la suite du banc mesurerait du bruit. Les quatre valeurs distinctes, plus l’orthogonalite a zero exact, font de cette cellule la preuve que le banc mesure ce qu’il pretend mesurer.
§1 — Banc consolide sur Ackley (la fonction conçue pour exposer le biais)
Ackley est la fonction des bancs CEC pour reveler le biais central (MGS-10 y a vu WOA s’effondrer). On confronte les 8 optimiseurs aux 4 variantes, au même budget (NFE=5000, dim=5), moyenne sur 3 graines — chiffres reproductibles (RNG seedé + decorateurs seeded).
Lecture du banc Ackley. Les deux leçons isolees en MGS-10 (biais central) et MGS-12 (alignement d’axes) se retrouvent reunies dans la même table, et la hiérarchie structurelle tient dans les quatre variantes :
EO, FBI, DE resolvent les 4 variantes (objectif ~ 0) : leur arithmetique vectorielle n’est ancre ni au centre ni lie aux axes — insensible aux deux biais.
WOA resout plain (0,000) mais s’effondre sur shifted (2,97) — c’est l’ancrage central de l’encerclement (exactement le biais de MGS-10). Sur combined (2,42) il n’est pas pire que sur shifted seul.
GA souffre le plus sur rotated (3,24) : son croisement et sa mutation composante par composant perdent l’alignement des axes (biais de MGS-12).
Recuit simule (SA) reste stable (~0 partout) comme DE.
Le banc consolide donec en une seule table ce que MGS-10 et MGS-12 montraient chacun de leur cote — et confirme que la robustesse est une affaire de structure d’opérateur.
§2 — Le combine est-il additif ?
La question subtile : le biais combine est-il la somme des deux biais isoles (\(\Delta_{combined} \approx \Delta_{shift} + \Delta_{rotate}\)), ou y a-t-il une interaction (super-additif : le combine est pire que la somme ; sous-additif : moindre) ? Une interaction super-additive signifierait que les deux biais se renforcent — que surmonter un biais isole ne prepare pas a l’autre.
Le verdict empirique (Ackley) : majoritairement additif ou sous-additif. Pour WOA (déjà effondre sur shifted seul), le combine est sous-additif (interaction -1,75) : ajouter la rotation a un optimiseur déjà vaincu par le decalage n’aggrave pas la chute. Le biais dominant suffit ; le second est neutralise. C’est en soi une leçon honnete : le combine n’est pas universellement pire que le pire biais isole.
// Pour chaque optimiseur sur Ackley : decompose le cout du combine en (shift seul) + (rotation seule) + (interaction).voidInteractionTable(IFitness inner,string fname){var bounds = KnownFunctionsBounds.For(inner.GetType());var v =Variants(inner); Console.WriteLine($"\n===== Interaction {fname} : le combine est-il additif ? ====="); Console.WriteLine($"{"Optimiseur",-9}|{"d_shift",9}|{"d_rot",9}|{"somme",9}|{"d_comb",9}|{"interaction",12}"); Console.WriteLine(newstring('-',60));foreach(var opt in Portfolio){var o = v.Select(x =>RunAvg(opt.Opt, x.Wrap, bounds)).ToArray();double ds=o[1]-o[0], dr=o[2]-o[0], somme=ds+dr, dcomb=o[3]-o[0];double inter = dcomb - somme;string verdict = inter >0.3?"super-additif":(inter <-0.3?"sous-additif":"additif"); Console.WriteLine($"{opt.Name,-9}|{ds,9:F3}|{dr,9:F3}|{somme,9:F3}|{dcomb,9:F3}|{inter,8:F3} {verdict}");}}InteractionTable(newAckleyFitness(),"Ackley");
Lecture de l’interaction. La colonne interaction = d_comb - (d_shift + d_rot) se lit en deux histoires distinctes.
Les solveurs au plancher rendent la question vacante. EO, FBI, DE et SA affichent des deltas ~0,000 sur les quatre variantes : ils resolvent chaque instance, donc il n’existe plus de biais a decomposer. L’additivite affichee est un artefact de plancher sur 3 seeds, pas une propriete demontrée — meme prudence que la lecture du banc Ackley ci-dessus.
Les autres sont tous sous-additifs (interaction <= 0). Le pire cas combine coute systematiquement MOINS que la somme des variantes isolees. WOA est l’extreme : -1,748 — son biais d’ancre rotation (+1,198) s’evanouit presque dans le combine (+2,421 contre une somme de 4,169). Consequence pratique : evaluer shift et rotation separement SURTESTIME le degat du combine ; le protocole CEC complet n’est pas deux fois plus dur, il est autrement dur. L’interaction de Random (-1,057) releve du bruit d’echantillonnage d’un objectif moyen sur 3 seeds, pas d’une structure.
GA (-0,182) et BBPSO (-0,265) frisent l’additivite et balisent la zone frontiere du verdict : leurs quatre colonnes se recomposent presque exactement, ce qui autorise l’extrapolation du combine depuis les variantes isolees — un privilege que WOA n’a pas. Le profil de BBPSO est d’ailleurs remarquable en lui-meme : cout de rotation exactement nul (d_rot = -0,000) mais cout de decalage plein (1,740) — insensible a la geometrie, sensible a la distance, le profil inverse de GA qui paie la rotation au prix fort.
§3 — Generalisation a Rosenbrock (la vallee banane, sensible a la rotation)
Rosenbrock est unimodale mais courbee : son optimum est au fond d’une vallee parabolique. Peu sensible au decalage (unimodale), elle l’est beaucoup a la rotation (la vallee n’est pas alignee avec les axes). C’est un contrôle de generalite : la hiérarchie structurelle observee sur Ackley se confirme-t-elle sur un paysage de nature différente ?
Lecture du banc Rosenbrock. La vallee banane retrie les cartes par rapport a Ackley.
GA paie la rotation au prix fort (1,680 en plain -> 3,705 en rotated, +2,025) : une vallee etroite alignee sur les axes est precisement ce que la rotation brouille, et un croisement composante-par-composante ne peut pas re-aligner ses directions de recherche.
DE est covariant sous rotation : il reste plat (1,584 -> 1,706) et ameliore meme en shifted (0,920). Ses vecteurs differentiels vivent dans l’espace des solutions — tourner l’espace tourne ses deplacements, c’est l’invariance structurelle que la these du fil predit pour un operateur vectoriel.
WOA confirme son ancre : pire-cas combine 6,910, le biais identifie en MGS-16/17 se cumule au lieu de s’annuler.
FBI en shifted (1,528) fait mieux qu’en plain (2,324), et SA en rotated (1,067) fait mieux que son propre plain (1,719) : dans les deux cas le biais deplace l’optimum vers une region ou la dynamique converge mieux par chance. Ce sont des lectures mono-cellule sur 3 seeds — a signaler, pas a generaliser. La colonne qui decide est le pire-cas, pas la cellule favorable.
L’exception EO merite son ligne : rotated 1,470 < plain 1,681 — EO profite lui aussi de la rotation sur cette fonction, mais son pire-cas combine (2,500) reste au-dessus de DE (1,498) : l’avantage ponctuel ne survit pas au passage au pire-cas, qui est la seule colonne que le protocole retient pour le verdict final.
Synthese — la these structurelle eprouvee sous le protocole CEC complet
La table de pire-cas (max sur Ackley + Rosenbrock × 4 variantes) confirme la these structurelle : DE (pire-cas Rosenbrock 1,71) est l’optimiseur le plus robuste du portefeuille ; WOA est a eviter (6,91 sur Rosenbrock combine). Les optimiseurs a arithmetique vectorielle (DE, SA) resistent ; l’ancrage central (WOA) et le composante-par-composant (GA) ne tiennent pas sous le protocole complet.
Le fait subtil que le banc consolide est seul a reveler. La generalisation a Rosenbrock montre un regime absent sur Ackley : pour WOA, combined (6,91) y est pire que chacun des deux biais isoles (shifted 5,19, rotated 3,13) — alors que sur Ackley combined restait inferieur au biais dominant shifted (2,97). Sur Ackley a l’inverse, le même WOA etait sous-additif (déjà effondre sur le decalage, la rotation n’ajoutait rien). Le combine n’est donec ni universellement pire ni inoffensif : sa severite depend du paysage. C’est précisément ce que le banc isole (un seul biais a la fois) ne pouvait pas montrer.
// Tableau de synthese : pire-cas de chaque optimiseur sur l ENSEMBLE (Ackley + Rosenbrock, 4 variantes).// Le pire-cas (max) est le signal de robustesse fiable (lecon MGS-16 : la moyenne est bruitee).Console.WriteLine("===== Synthese robustesse CEC : pire-cas (max) sur Ackley+Rosenbrock x 4 variantes =====");Console.WriteLine($"{"Optimiseur",-9}|{"Ackley pire",12}|{"Rosenbrock pire",16}|{"verdict"}");Console.WriteLine(newstring('-',60));foreach(var opt in Portfolio){var akWorst =Variants(newAckleyFitness()).Select(v =>RunAvg(opt.Opt, v.Wrap, KnownFunctionsBounds.For(typeof(AckleyFitness)))).Max();var roWorst =Variants(newRosenbrockFitness()).Select(v =>RunAvg(opt.Opt, v.Wrap, KnownFunctionsBounds.For(typeof(RosenbrockFitness)))).Max();double total = Math.Max(akWorst, roWorst);string verdict = total <1.0?"robuste":(total <5.0?"moyen":"a eviter"); Console.WriteLine($"{opt.Name,-9}|{akWorst,12:F3}|{roWorst,16:F3}|{verdict}");}Console.WriteLine("\n=> La these structurelle (DE/SA vectoriels > EO/BBPSO > WOA ancre > GA composante) tient-elle sous le combine ?");
===== Synthese robustesse CEC : pire-cas (max) sur Ackley+Rosenbrock x 4 variantes =====
Optimiseur| Ackley pire| Rosenbrock pire|verdict
------------------------------------------------------------
Random | 9,127| 14,393|a eviter
GA | 3,242| 3,705|moyen
WOA | 2,971| 6,910|a eviter
EO | 0,000| 2,781|moyen
FBI | 0,000| 2,743|moyen
DE | 0,000| 1,706|moyen
BBPSO | 1,740| 3,327|moyen
SA | 0,006| 1,751|moyen
=> La these structurelle (DE/SA vectoriels > EO/BBPSO > WOA ancre > GA composante) tient-elle sous le combine ?
Lecture de la synthese. La question du bandeau (la these DE/SA vectoriels > EO/BBPSO > WOA ancre > GA composante tient-elle sous le combine ?) recoit une reponse nuancee : oui, par la colonne pire-cas, presque trait pour trait — DE 1,706 < SA 1,751 < FBI 2,743 ~ EO 2,781 < BBPSO 3,327 < GA 3,705 < WOA 6,910 << Random 14,393 — avec une inversion : WOA chute SOUS GA, l’ancre fait pire que la composante sur ce banc consolide.
La colonne Ackley seule ne discriminait rien (plancher 0,000 pour EO/FBI/DE/SA) : c’est le pire-cas croise fonctions x variantes qui trie le portefeuille. Les verdicts a eviter suivent : Random trivialement, WOA parce que son biais d’ancre se compose au lieu de s’annuler. Formule honnete : le combine confirme l’ordre structurel, il ne le cree pas — c’est exactement ce qu’on attend d’un banc de robustesse.
Aucun optimiseur ne sort dominateur des deux cotes du tableau : EO affiche 0,000 en pire-cas Ackley et 2,781 en pire-cas Rosenbrock — parfait sur l’un, moyen sur l’autre. C’est la raison d’etre du croisement CEC : chaque fonction isole un canal de faiblesse different (plancher de convergence pour Ackley, geometrie de la vallee pour Rosenbrock), et seul le max sur l’ensemble approche une lecture robuste. L’exercice 1 (Griewank) ajoutera la troisieme fonction exactement dans cet esprit. La regle de lecture reste celle du §2 : un avantage qui ne survit pas au pire-cas n est pas un avantage.
Exercices
Quatre exercices pour s’approprier le banc consolide. Stubs (Console.WriteLine) — le notebook s’execute de bout en bout même non complete (règle C.1).
Exercice 1 — Banc CEC sur une troisieme fonction (Griewank)
Griewank est multimodale avec de nombreux minima locaux. Etendez le banc RunBanc a GriewankFitness et comparez la hiérarchie des optimiseurs a celle observee sur Ackley. La these structurelle se confirme-t-elle sur un paysage encore différent ?
// TODO etudiant : appeler RunBanc(new GriewankFitness(), "Griewank") et comparer.Console.WriteLine("Exercice a completer : banc CEC sur Griewank (cf Ackley ci-dessus).");
Exercice a completer : banc CEC sur Griewank (cf Ackley ci-dessus).
Exercice 2 — Trouver une interaction super-additive
La table d’interaction §2 montre si le combine est additif / super- / sous-additif. Cherchez une combinaison (fonction, optimiseur, dimension) où l’interaction est nettement super-additive (\(>0{,}3\)) : les deux biais s’y renforcent. Que dit cela sur la capacite de l’optimiseur a gerer des paysages `a geometrie cassee ?
// TODO etudiant : balayer dimensions {2,5,10} et fonctions pour trouver une interaction > 0.3.Console.WriteLine("Exercice a completer : trouver interaction super-additive (cf InteractionTable).");
Exercice a completer : trouver interaction super-additive (cf InteractionTable).
Exercice 3 — Effet de la dimension sur le signal combine
MGS-12 notait que la dim=2 + budget large donnait un delta ~0 (degenere). Mesurez comment le pire-cas combine evolue avec la dimension (2, 5, 10) sur Ackley. Le biais combine devient-il plus visible en haute dimension ? Pourquoi ?
// TODO etudiant : boucler dim in {2,5,10}, calculer pire-cas combine, tracer levolution.Console.WriteLine("Exercice a completer : effet de la dimension sur le signal combine.");
Exercice a completer : effet de la dimension sur le signal combine.
Exercice 4 — Un troisieme decorateur (bruit periodique)
Le protocole CEC combine decalage + rotation. Imaginez un troisieme decorateur qui ajoute un bruit periodique (ex. \(+ 0.1 \sin(\sum x_i)\)) par-dessus le combine, puis composez les trois. Quels optimiseurs survivent a ce banc `augmente ? La composition de decorateurs est-elle toujours bienveillante ?
// TODO etudiant : definir un NoisyFitness decorateur (IFitness), composer avec Shifted+Rotated, lancer le banc.Console.WriteLine("Exercice a completer : banc CEC augmente dun 3e decorateur de bruit.");
Exercice a completer : banc CEC augmente dun 3e decorateur de bruit.
Conclusion — le fil biais referme
MGS-10 avait isole le biais central, MGS-12 l’alignement d’axes. Ce notebook les a reunis dans le protocole CEC complet (decalage + rotation) et confronte le portefeuille de 8 optimiseurs aux quatre variantes. Trois leçons en ressortent :
La these structurelle survit au combine. La hiérarchie observee biais-par-biais (DE/SA vectoriels robustes > EO/FBI/BBPSO moyens > WOA ancre / GA composante fragiles) se confirme sous le protocole CEC complet. Ce qui etait attendu est aussi ce que le banc consolidé rend falsifiable : si un optimiseur robuste a chaque biais isole s’etait effondre au combine, la these aurait ete nuancee.
Le combine n’est pas universellement pire que le pire biais isole. Sur Ackley, il est même souvent sous-additif : quand un optimiseur s’effondre déjà sur un biais (WOA sur le decalage), le second n’aggrave rien.
Mais il est parfois super-additif — et cela depend du paysage. Sur Rosenbrock, le combine de WOA depasse nettement chacun des deux biais isoles : une faiblesse que le banc isole (un seul biais a la fois) ne pouvait pas reveler.
Le banc consolide est donec l’epreuve qui distingue « robuste sous chaque biais isole » de « robuste sous le protocole complet » — et montre que la différence est reelle, paysage-dependante, et invisible sans reunir les deux biais.