- 人工智能算法(卷2):受大自然啟發(fā)的算法
- (美)杰弗瑞·希頓
- 485字
- 2021-01-25 17:48:45
1.4 截?cái)噙x擇
截?cái)噙x擇是最基本的選擇算法之一。Heinz Muhlenbein(1993)在關(guān)于育種者遺傳算法(breeder genetic algorithm)的論文中指出,截?cái)噙x擇需要根據(jù)適應(yīng)度對(duì)種群進(jìn)行分類。分類后,選擇一定比例(例如1/3)的種群作為育種種群。然后從育種種群中取樣潛在解,以幫助生產(chǎn)下一代。創(chuàng)建第二代的具體方法將在第2章中討論。圖1-1展示了如何將整個(gè)種群按截?cái)噙x擇來劃分。
圖1-1 截?cái)噙x擇
截?cái)噙x擇算法可以用清單1-1中的偽代碼表示。
清單1-1 截?cái)噙x擇偽代碼
def truncate_select(breeding_ratio, sorted_population)
# Sort the population. For efficiency you should move
# this outside the selection function and perform the sort
# once for each batch of selections you will perform.
sort(sorted_population)
# Determine the size of the breeding population.
count = len(sorted_population) * breeding_ratio
# Obtain a uniformly distributed (all numbers have
# equal probability) single random number
# between 0 and count.
index = uniform_random(0,count)
# Return the selected element.
return sorted_population [index]
截?cái)噙x擇算法的最大限制之一,就是必須對(duì)種群進(jìn)行排序,你必須不斷使整個(gè)種群處于已知的排序狀態(tài)。這種排序嚴(yán)重限制了該算法針對(duì)多核和分布式計(jì)算而并行化的能力。結(jié)果,該算法無法在大種群中很好地伸縮,因?yàn)槟憧赡苡性S多不同的選擇在并行運(yùn)行。
此外,由于親本只生孩子,而親本沒有加入下一代,因此有可能沒有孩子達(dá)到或超過上一代最優(yōu)解的分?jǐn)?shù)。因此,你應(yīng)該用精英來選擇一個(gè)或多個(gè)最優(yōu)解,并直接復(fù)制到下一代。如果不用精英,你的最佳得分可能會(huì)在兩次迭代之間降低。
推薦閱讀
- 玩轉(zhuǎn)智能機(jī)器人程小奔
- Google Cloud Platform Cookbook
- 平面設(shè)計(jì)初步
- 21小時(shí)學(xué)通AutoCAD
- 自動(dòng)控制原理
- 視覺檢測(cè)技術(shù)及智能計(jì)算
- 網(wǎng)絡(luò)化分布式系統(tǒng)預(yù)測(cè)控制
- 聊天機(jī)器人:入門、進(jìn)階與實(shí)戰(zhàn)
- 面向?qū)ο蟪绦蛟O(shè)計(jì)綜合實(shí)踐
- MCGS嵌入版組態(tài)軟件應(yīng)用教程
- 機(jī)器人人工智能
- 嵌入式GUI開發(fā)設(shè)計(jì)
- Mastering Ansible(Second Edition)
- Mastering OpenStack(Second Edition)
- Natural Language Processing and Computational Linguistics