婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Python代碼實現粒子群算法圖文詳解

Python代碼實現粒子群算法圖文詳解

熱門標簽:ai電銷機器人源碼 湛江智能外呼系統廠家 西藏房產智能外呼系統要多少錢 百度地圖標注沒有了 地圖標注審核表 外呼并發線路 宿遷星美防封電銷卡 長沙高頻外呼系統原理是什么 ai電話機器人哪里好

1.引言

粒子群優化算法起源于對鳥群覓食活動的分析。鳥群在覓食的時候通常會毫無征兆的聚攏,分散,以及改變飛行的軌跡,但是在不同個體之間會十分默契的保持距離。所以粒子群優化算法模擬鳥類覓食的過程,將待求解問題的搜索空間看作是鳥類飛行的空間,將每只鳥抽象成一個沒有質量和大小的粒子,用這個粒子來表示待求解問題的一個可行解。所以,尋找最優解的過程就相當于鳥類覓食的過程。

​ 粒子群算法也是基于種群以及進化的概念,通過個體間的競爭與協作,實現復雜空間最優解的求解。但是與遺傳算法不同的是,他不會對每個個體進行“交叉”,“變異”等操作,而實以一定的規則,更新每個粒子的速度以及位置,使得每一個粒子向自身歷史最佳位置以及全局歷史最佳位置進行移動,從而實現整個種群向著最優的方向進化。

2.算法的具體描述:

2.1原理

​ 在粒子群優化算法中,粒子之間通過信息共享機制,獲得其它粒子的發現與飛行經歷。粒子群算法中的信息共享機制實際上是一種合作共生的行為,在搜索最優解的過程中,每個粒子能夠對自己經過的最佳的歷史位置進行記憶,同時,每個粒子的行為有會受到群體中其他例子的影響,所以在搜索最優解的過程中,粒子的行為既受其他粒子的影響,有受到自身經驗的指導。

​ 粒子群優化算法對于鳥群的模擬是按照如下的模式進行的:假設一群鳥在空中搜索食物,所有鳥知道自己當前距離食物有多遠(這里的遠近會用一個值來衡量,適應度值),那么每只鳥最簡單的搜索策略就是尋找距離目前距離食物最近的鳥的周圍空間。因此,在粒子群算法中,每個粒子都相當于一只鳥,每個粒子有一個適應度值,還有一個速度決定他們的飛行的距離與方向。所有的粒子追隨當前最優的粒子在解空間中搜索。每搜索一次,最優的粒子會發生變化,其他的粒子又會追隨新的最優粒子進行搜索,如此反復迭代。

​ 在迭代開始的時候,每個粒子通過隨機的方式初始化在空間中的速度和位置,然后在迭代過程中,粒子通過跟蹤兩個極值來自己在解空間中的位置和速度,一個極值是單個粒子自身在迭代的過程中的最優位置(就是最優適應度值所對應的空間解),這個稱之為粒子的個體極值。另一個極值是種群中所有的粒子在迭代過程中所找到的最優位置,這個成為全局極值。如果粒子只是跟蹤一個極值的話,則算法稱為局部粒子群算法或者全局粒子群算法。

PSO從這種模型中得到啟示并用于解決優化問題。PSO 中,每個優化問題的潛在解都是搜索空間中的一只鳥,稱之為粒子。所有的粒子都有一個由被優化的函數決定的適值( fitness value) ,每個粒子還有一個速度決定它們飛翔的方向和距離。然后粒子們就追隨當前的最優粒子在解空間中搜索。

PSO初始化為一群隨機粒子(隨機解),然后通過迭代找到最優解。在每一次迭代中,粒子通過跟蹤兩個極值來更新自己;第一個就是粒子本身所找到的最優解,這個解稱為個體極值;另一個極值是整個種群目前找到的最優解,這個極值是全局極值。另外也可以不用整個種群而只是用其中一部分作為粒子的鄰居,那么在所有鄰居中的極值就是局部極值。

圖解:

  

2.2標準粒子群算法流程

​ 算法的流程如下:

​ Step1:種群初始化:可以進行隨機初始化或根據被優化的問題設計特定的初始化方法,包括群體規模,每個粒子的位置 X i X_{i} Xi​ 和速度 V i V_i Vi​ ,然后計算每個粒子的適應度值,從而選擇出個體的局部最優位置向量和種群的全局最優位置向量。

​ Step2:迭代設置:設置迭代次數 g m a x g_{max} gmax​ ,令當前迭代次數g=1。

​ Step3:根據公式更新每個粒子的速度向量V。

​ Step4:根據公式更新每個粒子的位置向量X。

​ Step5:局部位置向量和全局位置向量更新:更新每個粒子的Pbest,和種群的Gbest。

​ Step6:終止條件判斷:判斷迭代次數時都達到 g m a x g_{max} gmax​ 或誤差是否足夠小,如果滿足則輸出Gbest.否則繼續進行迭代,跳轉至步驟(3)。

​ 對于粒子群優化算法的實際應用,因為主要是對速度和位置向量迭代算子的設計計,選代算子是否合理將決定整個PSO算法性能的優劣.,所以如何設計 t pso的迭代算子是算法應用的研究重點和難點。

 

3.代碼案例

3.1問題

求解f(x,y)的最小值點

3.2繪圖

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3D

# 生成X和Y的數據
X=np.arange(-5,5,0.1)
Y=np.arange(-5,5,0.1)
X,Y=np.meshgrid(X,Y)

# 目標函數
Z=X**2+Y**2+X

# 繪圖
fig=plt.figure()
ax=Axes3D(fig)
surf=ax.plot_surface(X,Y,Z,cmap=cm.coolwarm)
plt.show()

 3.3計算適應度

# 速度
# Vi+1 = w*Vi + c1 * r1 * (pbest_i - Xi) + c2 * r2 * (gbest_i - Xi)
# 位置
# Xi+1 = Xi + Vi+1
# vi, xi 分別表示粒子第i維的速度和位置
# pbest_i, gbest_i 分別表示某個粒子最好位置第i維的值、整個種群最好位置第i維的值

import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl

mpl.rcParams['font.sans-serif'] = ['SimHei']  # 指定默認字體
mpl.rcParams['axes.unicode_minus'] = False  # 解決保存圖像是負號'-'顯示為方塊的問題

def fitness_func(X):
    """計算粒子的的適應度值,也就是目標函數值,X 的維度是 size * 2 """
    A = 10
    pi = np.pi
    x = X[:, 0]
    y = X[:, 1]
    return x**2+y**2+x

3.4更新速度

def velocity_update(V, X, pbest, gbest, c1, c2, w, max_val):
    """
    根據速度更新公式更新每個粒子的速度
    :param V: 粒子當前的速度矩陣,20*2 的矩陣
    :param X: 粒子當前的位置矩陣,20*2 的矩陣
    :param pbest: 每個粒子歷史最優位置,20*2 的矩陣
    :param gbest: 種群歷史最優位置,1*2 的矩陣
    """
    size = X.shape[0]
    r1 = np.random.random((size, 1))
    r2 = np.random.random((size, 1))
    V = w*V+c1*r1*(pbest-X)+c2*r2*(gbest-X)
    # 防止越界處理
    V[V  -max_val] = -max_val
    V[V > -max_val] = max_val
    return V

3.5更新粒子位置

def position_update(X, V):
    """
    根據公式更新粒子的位置
    :param X: 粒子當前的位置矩陣,維度是 20*2
    :param V: 粒子當前的速度舉著,維度是 20*2
    """
    return X+V

3.6主要算法過程

def pos():
    w = 1
    c1 = 2
    c2 = 2
    r1 = None
    r2 = None
    dim = 2
    size = 20
    iter_num = 1000
    max_val = 0.5
    best_fitness = float(9e10)
    fitness_val_list = []
    # 初始化種群各個粒子的位置
    X = np.random.uniform(-5, 5, size=(size, dim))
    # 初始化各個粒子的速度
    V = np.random.uniform(-0.5, 0.5, size=(size, dim))
    # print(X)
    p_fitness = fitness_func(X)
    g_fitness = p_fitness.min()
    fitness_val_list.append(g_fitness)

    # 初始化的個體最優位置和種群最優位置
    pbest = X
    gbest = X[p_fitness.argmin()]
    # 迭代計算
    for i in range(1, iter_num):
        V = velocity_update(V, X, pbest, gbest, c1, c2, w, max_val)
        X = position_update(X, V)
        p_fitness2 = fitness_func(X)
        g_fitness2 = p_fitness2.min()

        # 更新每個粒子的歷史最優位置
        for j in range(size):
            if p_fitness[j] > p_fitness2[j]:
                pbest[j] = X[j]
                p_fitness[j] = p_fitness2[j]
            # 更新群體的最優位置
            if g_fitness > g_fitness2:
                gbest = X[p_fitness2.argmin()]
                g_fitness = g_fitness2
            # 記錄最優迭代記錄
            fitness_val_list.append(g_fitness)
            i += 1

    # 輸出迭代結果
    print("最優值是:%.5f" % fitness_val_list[-1])
    print("最優解是:x=%.5f,y=%.5f" % (gbest[0], gbest[1]))

    # 繪圖
    plt.plot(fitness_val_list, color='r')
    plt.title('迭代過程')
    plt.show()

pos()

結果

最優值是:-0.23696
最優解是:x=-0.54359,y=-0.10555

參考:

蘇振裕.《Python最優化實戰》[M].北京大學出版社

總結

本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關注腳本之家的更多內容!

您可能感興趣的文章:
  • Python編程實現蟻群算法詳解
  • python二叉樹常用算法總結
  • 實現用python算法計算圓周率的小訣竅
  • python列表與列表算法詳解(2)
  • python列表與列表算法詳解
  • Python 蟻群算法詳解

標簽:漯河 林芝 大同 普洱 南平 盤錦 寧夏 海南

巨人網絡通訊聲明:本文標題《Python代碼實現粒子群算法圖文詳解》,本文關鍵詞  Python,代碼,實現,粒,子群,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python代碼實現粒子群算法圖文詳解》相關的同類信息!
  • 本頁收集關于Python代碼實現粒子群算法圖文詳解的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲激情综合网| 7777精品伊人久久久大香线蕉完整版| 欧美一区二区三区在线观看 | 91在线porny国产在线看| 青青草精品视频| 亚洲午夜精品17c| 亚洲免费观看高清在线观看| 中文av字幕一区| 日韩一区欧美小说| 亚洲日本中文字幕区| 一区二区三区自拍| 久久免费看少妇高潮| 欧美成人女星排行榜| 久久久久综合网| 26uuu欧美| 亚洲精品中文字幕乱码三区| 亚洲成人av电影在线| 麻豆精品久久精品色综合| 国产精品系列在线播放| 欧美在线观看一区二区| 91精品国产综合久久精品性色| 国产高清亚洲一区| av电影在线观看一区| 4438x成人网最大色成网站| 欧美第一区第二区| 婷婷开心久久网| 不卡一二三区首页| 精品国产乱码久久久久久久| 亚洲午夜视频在线| jlzzjlzz国产精品久久| 91精品视频网| 日韩精品1区2区3区| 日韩精品一区二区三区老鸭窝| 日韩福利视频导航| 99re热视频这里只精品| 日韩欧美国产综合一区| 亚洲一区欧美一区| 9久草视频在线视频精品| 日韩美女主播在线视频一区二区三区| 国产精品不卡在线观看| 国产成人综合精品三级| 91精品欧美综合在线观看最新| 综合欧美亚洲日本| 91免费小视频| 国产成人自拍在线| 亚洲va天堂va国产va久| 色8久久精品久久久久久蜜| 国产亚洲欧洲997久久综合| 国内精品免费**视频| 久久―日本道色综合久久| 国产精品一区一区| 亚洲自拍偷拍欧美| 欧美另类videos死尸| 久久99蜜桃精品| 亚洲免费av观看| 亚洲精品一区二区三区99 | 成人app软件下载大全免费| 91精品国产综合久久蜜臀| 国产综合久久久久久久久久久久| 欧美大片顶级少妇| 日韩精品专区在线| 亚洲线精品一区二区三区| 91精品国模一区二区三区| 国产精品一区二区在线观看网站| 亚洲欧美激情插| 久久久99免费| 日韩欧美专区在线| 伊人一区二区三区| 天堂午夜影视日韩欧美一区二区| 精品人伦一区二区色婷婷| 国产成人免费在线观看不卡| 亚洲精品亚洲人成人网| 欧美一区二区视频在线观看2020| 成人激情动漫在线观看| 日韩黄色免费电影| 亚洲免费av网站| 欧美精品一区二区三区四区| 欧美性生活大片视频| av一区二区不卡| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美三级视频在线| 久久久久久久久一| 国产精品99久久久久久久女警| 中文字幕va一区二区三区| 欧美性欧美巨大黑白大战| 不卡视频一二三四| 97精品久久久久中文字幕| 成人夜色视频网站在线观看| 国产另类ts人妖一区二区| 狠狠狠色丁香婷婷综合激情 | 国产精品亲子伦对白| 69久久99精品久久久久婷婷| 69av一区二区三区| 日韩限制级电影在线观看| 久久亚洲精品国产精品紫薇| 久久九九久久九九| 亚洲精品欧美二区三区中文字幕| 亚洲精品va在线观看| 蜜臀av亚洲一区中文字幕| 极品少妇xxxx偷拍精品少妇| 成人精品电影在线观看| 91视频免费看| 日韩三级视频中文字幕| 国产精品美女视频| 久久久国产午夜精品 | 亚洲精品视频在线观看网站| 亚洲 欧美综合在线网络| 狠狠色2019综合网| 69堂成人精品免费视频| 综合在线观看色| 看电视剧不卡顿的网站| 日本高清免费不卡视频| 国产精品久久久久久久久动漫 | 亚洲天堂成人在线观看| 欧美日韩在线不卡| 日韩国产精品久久久| 久久久一区二区三区| 欧洲另类一二三四区| 国产精品三级在线观看| 在线播放91灌醉迷j高跟美女| 久久99久久久欧美国产| 中文字幕在线不卡一区二区三区| 91久久精品网| 黄色小说综合网站| 五月婷婷欧美视频| 亚洲视频免费看| 久久久国产综合精品女国产盗摄| 欧美日韩小视频| 成人永久aaa| 日韩精品一二三| 亚洲精品美国一| 一区二区三区在线影院| 国产免费成人在线视频| 精品少妇一区二区三区在线播放| 欧美色国产精品| 欧美三级电影一区| 91国偷自产一区二区使用方法| 成a人片国产精品| 成人精品视频一区二区三区| 国产麻豆视频一区| 成人精品高清在线| 国产成人免费网站| 高清不卡一二三区| 91在线视频在线| 日本韩国欧美国产| 欧美精品视频www在线观看| 欧美在线色视频| 日韩一二三四区| 久久久久久久久一| 国产精品国模大尺度视频| 综合色天天鬼久久鬼色| 一区二区三区高清| 亚洲丶国产丶欧美一区二区三区| 国产精品传媒在线| 亚洲成人777| 国产成人夜色高潮福利影视| 91美女蜜桃在线| 欧美一区二区三区公司| 国产清纯在线一区二区www| 亚洲欧美日韩系列| 伦理电影国产精品| 91精品福利视频| 国产亚洲1区2区3区| 亚洲已满18点击进入久久| 婷婷激情综合网| 成人激情小说乱人伦| 91精品免费观看| 综合欧美一区二区三区| 久久99在线观看| 色婷婷国产精品综合在线观看| 9191国产精品| 一区二区三区日韩欧美| 麻豆精品视频在线观看视频| 成人免费视频视频在线观看免费| 日本乱人伦aⅴ精品| 国产精品视频观看| 蜜桃一区二区三区在线观看| 91麻豆高清视频| 国产日韩欧美激情| 蜜臀精品久久久久久蜜臀| 一本大道久久a久久综合| 91精品蜜臀在线一区尤物| 亚洲欧美国产毛片在线| 国产成人综合亚洲91猫咪| 欧美一区二区三区日韩| 亚洲欧美激情小说另类| www.av精品| 精品国产乱码久久久久久免费| 午夜精品久久久| 777午夜精品视频在线播放| 日本aⅴ亚洲精品中文乱码| 日韩一二三区视频| 国产精品视频线看| 91原创在线视频| 天堂蜜桃91精品| 亚洲国产精品黑人久久久| 色综合久久久久综合体| 樱花草国产18久久久久| 欧美精品久久一区二区三区| 午夜影院在线观看欧美|