日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Python用戶寶典:了解并實現遺傳算法

來源: 責編: 時間:2024-07-03 10:12:10 136觀看
導讀譯者 | 布加迪審校 | 重樓遺傳算法是一種基于自然選擇的技術,用于解決復雜問題。由于問題很復雜,遺傳算法(而不是其他方法)被用來得出解決問題的合理方案。本文介紹遺傳算法的基礎知識以及如何用Python來實現。遺傳算法的

譯者 | 布加迪VrF28資訊網——每日最新資訊28at.com

審校 | 重樓VrF28資訊網——每日最新資訊28at.com

VrF28資訊網——每日最新資訊28at.com

遺傳算法是一種基于自然選擇的技術,用于解決復雜問題。由于問題復雜,遺傳算法(而不是其他方法)被用來得出解決問題的合理方案。本文介紹遺傳算法的基礎知識以及如何Python實現。VrF28資訊網——每日最新資訊28at.com

遺傳算法的要

適應度函數

適應度函數衡量所考慮的解決方案與問題的最佳解決方案的接近程度。它為人中的每個人提供了適應度水平,描述了當前一代的質量或效率。這個分定義了選擇,更高的適應度值是經過優化的解決方案。VrF28資訊網——每日最新資訊28at.com

比如說,假設我們在處理一個實際的函數f(x)其中x是一組參數。要找到的最優值是x,這樣f(x)就取最大值。VrF28資訊網——每日最新資訊28at.com

選擇

過程決定了當前一代中哪些個體受到青睞,從而繁殖為下一代做出貢獻。可以確定許多選擇方法,每種方法都有自己的特點和適合的上下文。VrF28資訊網——每日最新資訊28at.com

  • 盤選擇

根據個體的適應度水平,選擇個體的概率也是最大的。VrF28資訊網——每日最新資訊28at.com

  • 錦標賽選擇

隨機抽取一組,選其中最好的。VrF28資訊網——每日最新資訊28at.com

  • 基于排序的選擇

根據適合度對人進行排序,選擇機會根據適合度分數按比例分配。VrF28資訊網——每日最新資訊28at.com

交叉

交叉是遺傳算法的一個基本概念,其目的是交換兩個親本的遺傳信息,形成一個或多個后代。這個過程非常類似自然界中發生的生物的交叉和重組。運用遺傳的基本原理,交叉試圖產生具有雙親理想特征的后代,從而在下一代中有更好的適應性。交叉是一個比較寬泛的概念,可以分為幾種類型,每種類型都有其特點和可以有效運用的領域。VrF28資訊網——每日最新資訊28at.com

  • 單點交叉在親本染色體上選擇一個交叉點,實際上只發生一次交叉。這個位置之前的所有基因都取自第一個親本,而這個位置之后的所有基因都取自第二個親本。
  • 兩點交叉選擇兩個斷點,它們之間的部分在兩個親本染色體之間交換。它也有利于遺傳信息的交換,這與單點交叉不一樣。

突變

在遺傳算法中,突變之所以至關重要,是由于它提供了多樣性,多樣性是避免直接向最優解區收斂的關鍵因素。因此,獲得單個突變基因隨機變化,算法可以進入僅通過交叉操作無法企及最優空間的其他區域。這隨機過程保證了無論怎樣群都會進化,或者在遺傳算法確定的搜索空間區域內移動其位置。VrF28資訊網——每日最新資訊28at.com

實現遺傳算法的步驟

不妨用Python實現遺傳算法。VrF28資訊網——每日最新資訊28at.com

問題定義

問題對具體函數進行計算;f (x) = x^2f(x) = x^2x取整VrF28資訊網——每日最新資訊28at.com

適應度函數對于染色體二進制為x的情況,適應度函數的一個例子可f(x)= x^2VrF28資訊網——每日最新資訊28at.com

VrF28資訊網——每日最新資訊28at.com

def fitness(chromosome):  x = int(''.join(map(str, chromosome)), 2) return x ** 2

群初始化

生成一個給定長度的隨機染色體。VrF28資訊網——每日最新資訊28at.com

def generate_chromosome(length): return [random.randint(0, 1) for _ in range(length)]def generate_population(size, chromosome_length): return [generate_chromosome(chromosome_length) for _ in range(size)]population_size = 10chromosome_length = 5population = generate_population(population_size, chromosome_length)

適應度評估

評估人群中每染色體的適應度。VrF28資訊網——每日最新資訊28at.com

fitnesses = [fitness(chromosome) for chromosome in population]

選擇

使用輪盤選擇根據適合度選擇親本染色體。VrF28資訊網——每日最新資訊28at.com

VrF28資訊網——每日最新資訊28at.com

def select_pair(population, fitnesses):   total_fitness = sum(fitnesses) selection_probs = [f / total_fitness for f in fitnesses]   parent1 = population[random.choices(range(len(population)), selection_probs)[0]] parent2 = population[random.choices(range(len(population)), selection_probs)[0]] return parent1, parent2

交叉

使用單點交叉,在父本基因串中選擇一個隨機的交叉位置,并在兩個基因串之間交換這個位置之后的所有基因值。VrF28資訊網——每日最新資訊28at.com

def crossover(parent1, parent2): point = random.randint(1, len(parent1) - 1) offspring1 = parent1[:point] + parent2[point:] offspring2 = parent2[:point] + parent1[point:] return offspring1, offspring2

突變

通過以一定的概率翻轉比特來實現突變。VrF28資訊網——每日最新資訊28at.com

def mutate(chromosome, mutation_rate): return [gene if random.random() > mutation_rate else 1 - gene for gene in chromosome]mutation_rate = 0.01

總之由于模擬物種進化遺傳算法對于解決無法直接解決的優化問題具有一致性和有效性。因此,一旦掌握了遺傳算法的基本要素了解了如何Python實現遺傳算法,解決復雜任務就會容易得多。選擇、交叉和突變使您能夠對解決方案進行修改,并不斷獲得最佳或接近最佳的答案。但愿您已準備好將遺傳算法運用到自己的任務中,從而在不同的任務和問題解決中得到改進。VrF28資訊網——每日最新資訊28at.com

原文標題:Understanding and Implementing Genetic Algorithms in Python,作者:Jayita GulatiVrF28資訊網——每日最新資訊28at.com


VrF28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-98420-0.htmlPython用戶寶典:了解并實現遺傳算法

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: .NET Core MVC 頁面傳值方式詳解

下一篇: 高可用架構下 B 站、小紅書崩了?對于阿里回應,網友認為裁員裁到大動脈

標簽:
  • 熱門焦點
  • 6月iOS設備好評榜:第一蟬聯榜首近一年

    作為安兔兔各種榜單里變化最小的那個,2023年6月的iOS好評榜和上個月相比沒有任何排名上的變化,僅僅是部分設備好評率的下降,長年累月的用戶評價和逐漸退出市場的老款機器讓這
  • JavaScript 混淆及反混淆代碼工具

    介紹在我們開始學習反混淆之前,我們首先要了解一下代碼混淆。如果不了解代碼是如何混淆的,我們可能無法成功對代碼進行反混淆,尤其是使用自定義混淆器對其進行混淆時。什么是混
  • CSS單標簽實現轉轉logo

    轉轉品牌升級后更新了全新的Logo,今天我們用純CSS來實現轉轉的新Logo,為了有一定的挑戰性,這里我們只使用一個標簽實現,將最大化的使用CSS能力完成Logo的繪制與動畫效果。新logo
  • 分布式系統中的CAP理論,面試必問,你理解了嘛?

    對于剛剛接觸分布式系統的小伙伴們來說,一提起分布式系統,就感覺高大上,深不可測。而且看了很多書和視頻還是一臉懵逼。這篇文章主要使用大白話的方式,帶你理解一下分布式系統
  • 一文搞定Java NIO,以及各種奇葩流

    大家好,我是哪吒。很多朋友問我,如何才能學好IO流,對各種流的概念,云里霧里的,不求甚解。用到的時候,現百度,功能雖然實現了,但是為什么用這個?不知道。更別說效率問題了~下次再遇到,
  • 一條抖音4億人圍觀 ! 這家MCN比無憂傳媒還野

    作者:Hiu 來源:互聯網品牌官01 擦邊少女空降熱搜,幕后推手曝光被網友譽為“純欲天花板”的女網紅井川里予,近期因為一組哥特風照片登上熱搜,引發了一場互聯網世界關于
  • 疑似小米14外觀設計圖曝光:后置相機模組變化不大

    下半年的大幕已經開啟,而誰將成為下半年手機圈的主角就成為了大家關注的焦點,其中被傳有望拿下新一代驍龍8 Gen3旗艦芯片的小米14系列更是備受大家矚
  • 2納米決戰2025

    集微網報道 從三強爭霸到四雄逐鹿,2nm的廝殺聲已然隱約傳來。無論是老牌勁旅臺積電、三星,還是誓言重回先進制程領先地位的英特爾,甚至初成立不久的新
  • 英特爾Xe-HP項目終止,將專注Xe-HPC/HPG系列顯卡

    據10 月 31 日消息報道,英特爾高級副總裁兼加速計算系統和圖形事業部總經理 表示,Xe-HP“ Arctic Sound” 系列服務器 GPU 已經應用于 oneAPI devcloud 云服
Top 主站蜘蛛池模板: 什邡市| 荆州市| 东至县| 上虞市| 西吉县| 九龙城区| 三门县| 台江县| 永胜县| 墨玉县| 鄂托克前旗| 隆化县| 盈江县| 克山县| 金溪县| 肃北| 盐池县| 阜阳市| 黑水县| 那坡县| 康乐县| 雷州市| 上林县| 泸溪县| 准格尔旗| 宁明县| 浙江省| 玉门市| 瑞丽市| 延庆县| 青浦区| 阳东县| 靖州| 正阳县| 涞源县| 肃北| 中西区| 尼玛县| 太保市| 敦煌市| 锦屏县|