官术网_书友最值得收藏!

截?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擇來劃分。

圖片 286

圖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ì)在兩次迭代之間降低。

主站蜘蛛池模板: 定陶县| 达州市| 扎赉特旗| 湛江市| 南阳市| 丰镇市| 两当县| 静乐县| 建德市| 宣汉县| 阜宁县| 哈尔滨市| 祁门县| 南投市| 南通市| 陇西县| 峡江县| 雅安市| 荣成市| 中方县| 巴彦淖尔市| 同德县| 得荣县| 永清县| 五家渠市| 霍城县| 巫山县| 固镇县| 梅河口市| 竹北市| 灌云县| 五峰| 甘南县| 镇坪县| 宁安市| 呼玛县| 鸡东县| 万安县| 高清| 新乡市| 文安县|