"程序編寫程序"的一個(gè)嘗試:遺傳編程

本文最早發(fā)表本人博客:http://www.gotoli.us/?p=1773

遺傳編程是遺傳算法另一個(gè)重要的后續(xù)工作。顧名思義旁涤,遺傳編程中的一個(gè)個(gè)體代表了解決某個(gè)問題的候選程序,遺傳編程模擬自然選擇挑選出正確的程序敷存。遺傳編程是人類追求自動(dòng)編程的一次嘗試萝嘁。遺傳編程的兩個(gè)重要概念是基因型和表現(xiàn)型〕掌ⅲ基因型就是種群個(gè)體的編碼;表現(xiàn)型是種群個(gè)體所表示的程序片段挺狰。其實(shí)遺傳算法就有這兩個(gè)概念的萌芽明郭。遺傳編程之所以會(huì)強(qiáng)調(diào)這兩個(gè)概念买窟,因?yàn)檫z傳編程很難直接處理程序片段(表現(xiàn)型)丰泊,反而容易處理程序片段的內(nèi)在結(jié)構(gòu)(基因型)。根據(jù)基因型形態(tài)的不同始绍,遺傳編程方法可以分為三種:線性遺傳編程瞳购、基于樹的遺傳編程和基于圖的遺傳編程。

1 . 線性遺傳編程

線性遺傳編程有廣義和狹義之分亏推。廣義線性遺傳編程將候選程序編碼進(jìn)定長(zhǎng)或者變長(zhǎng)的字符串学赛,即基因型是線性字符串。狹義線性遺傳編程中的候選程序是匯編語言或者高級(jí)編程語言程序吞杭。一個(gè)狹義線性遺傳編程的個(gè)體可以是一段簡(jiǎn)單 C 語言指令盏浇。這些指令作用在一個(gè)或者兩個(gè)預(yù)習(xí)定義的變量或者常量上(變量數(shù)量一般為指令個(gè)數(shù)的4倍)。下圖是一個(gè)狹義線性遺傳編程候選程序的示例芽狗。

除了狹義線性遺傳編程之外绢掰,廣義線性遺傳編程還包括:Multi-Expression Programming (MEP), Grammatical Evolution (GE), Gene Expression Programming (GEP), Cartesian Genetic Programming (CGP),和 Genetic Algorithm for Deriving Software (GADS)童擎。其中我們就介紹一下適合電路設(shè)計(jì)的笛卡爾遺傳編程 (Cartesian Genetic Programming, CGP)滴劲。比如我們要用兩個(gè)加操作兩個(gè)減操作和兩個(gè)乘操作得到如下運(yùn)算。

笛卡爾遺傳編程將下面的一個(gè)候選程序編寫進(jìn)字符串"001 100 131 201 044 254 2573"顾复。字符串中的三位數(shù)字“xyz"表示x操作的輸入是y和z兩個(gè)連線班挖,字符串中最后的四位數(shù)字"opqr"表示輸出opqr四個(gè)連線。笛卡爾遺傳編程只用變異操作芯砸,而不用交叉操作萧芙。

Paste_Image.png

對(duì)線性遺傳編程感興趣的同學(xué)可以閱讀論文 Oltean et al. (2003)。

2 . 基于樹的遺傳編程假丧。

基于樹的遺傳編程的基因型是樹結(jié)構(gòu)双揪。基于樹的遺傳編程是遺傳編程最早的形態(tài)虎谢,也是遺傳編程的主流方法盟榴。在之前的博客“欺騙”深度學(xué)習(xí)的遺傳算法中正則表達(dá)式生成問題用的就是基于樹的遺傳編程∮へ基于樹的遺傳編程的交叉操作如下所示擎场,兩個(gè)顆樹之間隨機(jī)交換子樹羽德。

基于樹的遺傳編程的變異操作有兩種:一種是隨機(jī)變換樹中的符號(hào)或者操作符,另一種是隨機(jī)變換子樹迅办。下圖左下角是變換符號(hào)或者操作符的結(jié)果宅静,右下角是變換子樹的結(jié)果。

上面的樹結(jié)構(gòu)(基因型)都是表達(dá)了一個(gè)數(shù)學(xué)公式站欺,我們?cè)跇浣Y(jié)構(gòu)上定義一下語法操作符姨夹,便可以表達(dá)一段程序了。比如矾策,下圖是定義了CL操作符之后磷账,F(xiàn)or循環(huán)的樹結(jié)構(gòu)。

3 .基于圖的遺傳編程贾虽。

樹是一種特殊的圖逃糟,因此人們很自然地想到將基于樹的遺傳編程擴(kuò)展到基于圖的遺傳編程。下圖就是基于圖的遺傳編程的基因型的一個(gè)示例蓬豁。

也有人將笛卡爾遺傳編程歸入基于圖的遺傳編程绰咽,這里,我們將所有基因型是線性字符串的遺傳編程歸入線性遺傳編程類別地粪。

遺傳編程是人類實(shí)現(xiàn)“程序編寫程序”的一次嘗試取募。但到目前為止,遺傳編程大體上依然只是實(shí)驗(yàn)室里好玩的 toy system蟆技。


參考文獻(xiàn)


Oltean, Mihai, and Crina Grosan. "A comparison of several linear genetic programming techniques." Complex Systems 14.4 (2003): 285-314.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末玩敏,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子付魔,更是在濱河造成了極大的恐慌聊品,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件几苍,死亡現(xiàn)場(chǎng)離奇詭異翻屈,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)妻坝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門伸眶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人刽宪,你說我怎么就攤上這事厘贼。” “怎么了圣拄?”我有些...
    開封第一講書人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵嘴秸,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng)岳掐,這世上最難降的妖魔是什么凭疮? 我笑而不...
    開封第一講書人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮串述,結(jié)果婚禮上执解,老公的妹妹穿的比我還像新娘。我一直安慰自己纲酗,他們只是感情好衰腌,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著觅赊,像睡著了一般右蕊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上茉兰,一...
    開封第一講書人閱讀 49,784評(píng)論 1 290
  • 那天尤泽,我揣著相機(jī)與錄音欣簇,去河邊找鬼规脸。 笑死,一個(gè)胖子當(dāng)著我的面吹牛熊咽,可吹牛的內(nèi)容都是我干的莫鸭。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼横殴,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼被因!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起衫仑,我...
    開封第一講書人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤梨与,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后文狱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體粥鞋,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年瞄崇,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了呻粹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡苏研,死狀恐怖等浊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情摹蘑,我是刑警寧澤筹燕,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響撒踪,放射性物質(zhì)發(fā)生泄漏踪少。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一糠涛、第九天 我趴在偏房一處隱蔽的房頂上張望援奢。 院中可真熱鬧,春花似錦忍捡、人聲如沸集漾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽具篇。三九已至,卻和暖如春凌埂,著一層夾襖步出監(jiān)牢的瞬間驱显,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國打工瞳抓, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留埃疫,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓孩哑,卻偏偏與公主長(zhǎng)得像栓霜,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子横蜒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容