Nevím, jestli ti dokážu pomoct, s GA nějaké menší zkušenosti mám, ale s CGP ne. Aspoň trochu to zkusím, pokud se neobjeví někdo povolanějsí.
Pokud ti dobře rozumím, máš dobře naprogramované zakódování grafu do genotypu, jeho mutace a překlopení do fenotypu. To ti funguje. Když jsi zkoušel dělat mutace náhodně, něco ti tam vzniklo, takže jakžtakž víš, že tohle máš dobře.
Předpokládám, že tím "ES algoritmem" myslíš prostě obecně "evoluční strategii". Takže tvůj problém je v tom, že se ti nedaří dosáhnout optimalizace lepší než náhodné - nedaří se ti vyvolat ten správný evoluční tlak nebo jinými slovy: nekonverguje ti to ke kýženému řešení. Pochopil jsem to správně?
Pokud jo, tak bych prvně ověřil obecné problémy/parametry GA:
1. Mám správně sestrojenou fitness funkci? Pokud se přibližuji k řešení, opravdu roste? Není po téhle cestě chaotická? (tj. polopaticky: jdu správnou cestou, ale fitness funkce skáče nahoru a dolů) Fitness funkce je naprosto klíčová, pokud ji uděláš špatně, nemůže ti to konvergovat z principu.
2. Používám správný algoritmus mutace? Implementace můžou být různé, je asi lepší držet se něčeho ověřeného. Taky můžeš mít algoritmus jenom špatně nastavený - pokud jsou mutace moc velké/časté, tak děláš de facto random procházení prostoru, protože si "dosavadní úspěch v každé generaci rozbiješ". Tvému popisu "vezmu lambda jedinců a udělám lambda mutací" nerozumím. Vzal jsi algoritmus z nějaké literatury? Zkoušel jsi měnit jeho parametry?
3. Používám vhodnou selekci? Podobný problém jako předchozí. Oba dva by se asi daly zobecnit tak, že mutace a selekce společně vytváří tlak, který nesmí být ani příliš malý (populace se nevyvíjí), ani příliš velký (příliš brzo zahodíš jedince, kteří by po nějaké době mohli být perspektivní). Je to stejné jako u jiných optimalizačních algoritmů - můžeš uváznout v lokálním optimu nebo naopak skákat tak daleko, že "nekloužeš po křivce", což je to, co chceš. Žádná stříbrná kulka tady asi není, musíš prostě zkoušet různé parametry.
4. ...s tím souvisí třeba i jestli mám dobře udělané sledování toho, co se uvnitř děje (statistika genotypů, sledování distribuce fitness apod.). Pokud nemůžu dobře sledovat, co se děje, nemůžu dobře upravovat parametry a slepě tápu.
5. Nemám příliš velký stavový prostor? Zkoušíš to na 256-ti bitovém vstupu a 256-bitovém výstupu? To je pro začátek docela dost. Klidně bych začal třeba se 4mi bity, vyzkoušel si to, vyladil a pak zjišťoval, jak se to bude chovat na větším prostoru.
...takže tolik spíš základní, obecné rady. Nevím, jak daleko se znalostí GA jsi, možná, že tohle všechno je pro tebe úplně samozřejmý. Pokud jo, tak se omlouvám za nošení dříví do lesa a počkáme na nějakého zkušenějšího kolegu

P.S. Sorry, s konkrétním kódem ti asi nepomůžu. o GA jsem se zajímal už hodně let zpátky, takže posouzení konkrétního kódu by pro mě bylo teď už asi dost náročný, na to čas nemám.