最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python人工智能算法之差分進化算法的實現(xiàn)

 更新時間:2023年08月11日 09:30:23   作者:微小冷  
DE基于GA,正如進化基于遺傳,和遺傳算法相比,差分進化引入了差分變異模式,相當于開辟了一條嶄新的進化路徑,下面就來看看差分優(yōu)化算法是如何實現(xiàn)的吧

遺傳算法: 純Python實現(xiàn)遺傳算法

DE基于GA,正如進化基于遺傳。和遺傳算法相比,差分進化引入了差分變異模式,相當于開辟了一條嶄新的進化路徑。

初始化

首先,初始種群隨機產生解空間(L,R)范圍的向量

(0)表示第0代。

變異

初始化后,進行變異操作,其第t tt代變異向量為

vi?(t)=xr1??(t)+rand⋅(xr2??(t)−xr3??(t))

其中r1?,r2?,r3?為隨機挑選出的與i ii互不相同的序號,相當于隨機抽選三個值進行基因突變。

交叉

接下來,開始種群繁衍,即種群交叉

其中,r為隨機數,cr是預設的交叉概率因子;rj?為隨機生成的某個整數,代表第rj?個分量必為突變分量。

選擇

最后,進行下一代的選擇,就是在目標個體和實驗個體中,選擇最優(yōu)秀的那個。

xi?(t+1)=argmin(ui?(t),xi?(t))

Python實現(xiàn)

首先,做一個DE算法的迭代函數

import numpy as np
from random import sample, randint, random
def evolve(xs,cr,func):
    # 變異
    vs = []
    N = len(xs[0])
    for _ in range(len(xs)):
        x = xs.pop(0)
        r1, r2, r3 = sample(xs, 3)
        xs.append(x)
        vs.append(r1 + random()*(r2-r3))
    # 交叉
    us = []
    for i in range(len(xs)):
        us.append(vs[i] if random() < cr else xs[i])
        j = randint(0, N-1)
        us[i][j] = vs[i][j]
    # 選擇
    xNext = []
    for x,u in zip(xs, us):
        xNext.append(x if func(x)<func(u) else u)
    return xNext

其中,變異過程要求隨機則取三個不同的個體,并且這個個體不能是當前個體,所以采取的方案是先彈出當前個體,再從里面隨機挑選三個,最后再將當前個體放回去。

交叉過程通過兩個隨機數,來決定下一代的成分。首先是通過浮點型隨機數來決定是用原有的解還是用新解;然后用一個整型隨機數,來判定采取變異解的元素序號。

然后寫出主循環(huán)

# N為個體數;nDim為解維度;nIter為迭代次數
def de(N, nDim, xRange, cr, func, nIter):
    xs = [uniRand(*xRange, nDim) for _ in range(N)]
    for _ in range(nIter):
        xs = evolve(xs, cr, func)
    fs = [func(x) for x in xs]
    xBest = xs[np.argmin(fs)]
    msg = f"當前最優(yōu)結果為{np.min(fs)},參數為"
    msg += ", ".join([f"{x:.4f}" for x in xBest])
    print(msg)

測試

最后寫個函數測試一下

def test(xs):
    _sum = 0.0
    for i in range(len(xs)):
        _sum = _sum + np.cos((xs[i]*i)/5)*(i+1)
    return _sum
???????if __name__ == "__main__":
    de(20, 5, (-5,5), 0.5, test, 100)

最終效果為

>python de.py
當前最優(yōu)結果為-12.864706361994342,參數為6.2566, 15.7407, 148.7103, 193.4160, 3.9136

到此這篇關于python人工智能算法之差分進化算法的實現(xiàn)的文章就介紹到這了,更多相關python差分進化內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • python?requests實現(xiàn)上傳excel數據流

    python?requests實現(xiàn)上傳excel數據流

    這篇文章主要介紹了python?requests實現(xiàn)上傳excel數據流,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Python中unittest模塊做UT(單元測試)使用實例

    Python中unittest模塊做UT(單元測試)使用實例

    這篇文章主要介紹了Python中unittest模塊做UT(單元測試)使用實例,本文直接給出待測試的類、測試類和測試結果以及測試總結,需要的朋友可以參考下
    2015-06-06
  • NumPy數組復制與視圖詳解

    NumPy數組復制與視圖詳解

    NumPy 數組的復制和視圖是兩種不同的方式來創(chuàng)建新數組,它們之間存在著重要的區(qū)別,本文將給大家詳細介紹一下NumPy數組復制與視圖,并通過代碼示例講解的非常詳細,需要的朋友可以參考下
    2024-05-05
  • Python3.9環(huán)境搭建RobotFramework的詳細過程

    Python3.9環(huán)境搭建RobotFramework的詳細過程

    Robot Framework是一個基于Python的,可擴展的關鍵字驅動的測試自動化框架,用于端到端驗收測試和驗收測試驅動開發(fā)(ATDD),這篇文章主要介紹了Python3.9環(huán)境搭建RobotFramework的詳細過程,需要的朋友可以參考下
    2023-01-01
  • Python實現(xiàn)計算兩個時間之間相差天數的方法

    Python實現(xiàn)計算兩個時間之間相差天數的方法

    這篇文章主要介紹了Python實現(xiàn)計算兩個時間之間相差天數的方法,涉及Python針對日期時間的相關運算操作技巧,需要的朋友可以參考下
    2017-05-05
  • Python實現(xiàn)的個人所得稅計算器示例

    Python實現(xiàn)的個人所得稅計算器示例

    這篇文章主要介紹了Python實現(xiàn)的個人所得稅計算器,涉及Python條件判斷與數值運算相關操作技巧,需要的朋友可以參考下
    2018-06-06
  • Python轉換時間的圖文方法

    Python轉換時間的圖文方法

    在本篇文章里小編給大家整理的是關于Python轉換時間的方法以及具體步驟流程,需要的朋友們參考下。
    2019-07-07
  • 解決python打開https出現(xiàn)certificate verify failed的問題

    解決python打開https出現(xiàn)certificate verify failed的問題

    這篇文章主要介紹了解決python打開https出現(xiàn)certificate verify failed的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Python3中zip()函數知識點小結

    Python3中zip()函數知識點小結

    本文主要介紹了Python3中zip()函數知識點小結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • Python 比較兩個 CSV 文件的三種方法并打印出差異

    Python 比較兩個 CSV 文件的三種方法并打印出差異

    這篇文章主要介紹了Python 比較兩個 CSV 文件并打印出差異,本文將討論比較兩個 CSV 文件的各種方法,我們將包括執(zhí)行此操作的最“Pythonic”方式和可幫助簡化此任務的外部 Python 模塊,需要的朋友可以參考下
    2023-06-06

最新評論

凤冈县| 鄂尔多斯市| 惠州市| 丰原市| 昭苏县| 遂平县| 铁岭市| 淮阳县| 芮城县| 沅陵县| 阿图什市| 阜新| 秀山| 山东省| 道孚县| 宝兴县| 洪湖市| 普格县| 黄骅市| 绥芬河市| 蒲城县| 东城区| 芮城县| 大理市| 白银市| 墨玉县| 滨海县| 云南省| 资兴市| 常宁市| 汕尾市| 固始县| 台南县| 西华县| 怀安县| 抚远县| 梅河口市| 苏尼特右旗| 耿马| 龙泉市| 化隆|