我想讓機器人Bob畫出我的夢中情人(最優(yōu)解)。Bob當然不知道我夢中情人長啥樣。
Bob很無奈,只能一張張試。先畫一張,問我像不像?我說不像,Bob就重新畫一張。直到我覺得像。
然而Bob又不會畫畫,只會填格子。于是Bob準備了一張1000*1000的格子紙,每個格子可以填黑色或者白色。那么總共有2^1000000種畫法。如果我能堅持到宇宙毀滅N次,那可以每張都看,然后找到那個最像的。顯然我沒這個耐心。
于是我只讓Bob畫10萬張,畫不出來我就砸了它。
Bob很緊張,開始想辦法,終于想到了遺傳算法。
第一輪,Bob隨機畫了1萬張(初始種群)。這1萬張里面,肯定各種亂七八糟,有像星空的,像豬的,像石頭的,等等。然后Bob讓我挑最像的。媽蛋,我強忍怒火,挑出來一堆豬、猴、狗,好歹是哺乳動物。
Bob拿著我挑的“豬猴狗們”,如獲至寶,開始第二輪,將這些畫各種交叉變異一下。比如把一幅畫的耳朵跟另一幅的鼻子換一下,或者再隨機改個眼睛。然后又生成了1萬張圖讓我挑。我挑出來一堆猴子猩猩,好歹是靈長類動物。
如此反復好多輪后,挑出來的開始像人了,雖然有男人、女人、小孩。
慢慢地,開始有美女了。再慢慢地,就越來越像了。
在畫了10萬張圖后,終于找到一張還不錯的。雖然不是夢中情人,但也很不錯吶(次優(yōu)解)。這就是遺傳算法。