日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

人工智能——微粒群优化算法

發布時間:2024/8/1 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 人工智能——微粒群优化算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

粒子群優化算法(Particle Swarm optimization,PSO)又翻譯為粒子群算法、微粒群算法、或微粒群優化算法。是通過模擬鳥群覓食行為而發展起來的一種基于群體協作的隨機搜索算法。通常認為它是群集智能 (Swarm intelligence, SI) 的一種。它可以被納入多主體優化系統(Multiagent Optimization System, MAOS)。粒子群優化算法是由Eberhart博士和kennedy博士發明。

場景假設

一群鳥隨機的尋找食物,在這個區域里面只有一塊食物,所有的鳥,都不知道食物在哪里,但他們都知道當前的位置距離食物還有多遠,那么尋找到食物的最優策略是什么?

最簡單有效的就是搜尋目前離食物最近的鳥的周圍區域。

鳥群在整個搜尋的過程中,通過相互傳遞各自的信息,讓其他的鳥知道自己的位置,通過這樣的協作,來判斷自己找到的是不是最優解,同時也將最優解的信息傳遞給整個鳥群,最終,整個鳥群都能聚集在食物源周圍,即找到了最優解。

PSO中,每個優化問題的解都是搜索空間中的一只鳥。我們稱之為“粒子”。所有的粒子都有一個由被優化的函數決定的適應值(fitness value),每個粒子還有一個速度決定他們飛翔的方向和距離。然后粒子們就追隨當前的最優粒子在解空間中搜索。

基本原理

PSO初始化為一群隨機粒子,然后通過迭代找到最優解。在每一次迭代中,粒子通過跟蹤兩個“極值”來更新自己。第一個就是粒子本身所找到的最優解,這個解稱為個體極值。另個一是整個種群目前找到的最優解,這個解稱為全局極值。

算法定義

在n維連續搜索空間,對粒子群中的第i(1,2,3,…,m)進行定義。
xi(k)=[x1ix2i...xni]T:表示搜索空間中粒子的當前位置x^i(k) = [x^i_1 \ x^i_2 \ ... \ x^i_n]^T:表示搜索空間中粒子的當前位置 xi(k)=[x1i??x2i??...?xni?]T:

pi(k)=[p1ip2i...pni]T:表示粒子至今所獲得具有最優適應度fpi(k)的位置p^i(k) = [p^i_1 \ p^i_2 \ ... \ p^i_n]^T:表示粒子至今所獲得具有最優適應度f^i_p(k)的位置 pi(k)=[p1i??p2i??...?pni?]T:fpi?(k)

vi(k)=[v1iv2i...vni]T:表示該粒子的搜索方向v^i(k) = [v^i_1 \ v^i_2 \ ... \ v^i_n]^T:表示該粒子的搜索方向 vi(k)=[v1i??v2i??...?vni?]T:

如果每個粒子經歷過的最優位置(pbest)記作
pi(k)=[p1ip2i...pni]Tp^i(k) = [p^i_1 \ p^i_2 \ ... \ p^i_n]^T pi(k)=[p1i??p2i??...?pni?]T
群體經歷過的最優位置(gbest)記作
pg(k)=[p1gp2g...png]Tp^g(k) = [p^g_1 \ p^g_2 \ ... \ p^g_n]^T pg(k)=[p1g??p2g??...?png?]T
這樣可以得到基本的POS算法為:
vji(k+1)=ω(k)vji(k)+φ1rand(0,a1)(pji(k)?xji(k))+φ2rand(0,a2)(pjg(k)?xji(k))xji(k+1)=xji(k)+vji(k+1)i=1,2,?,m;j=1,2,?,n;\begin{aligned} v^i_j(k+1)&=\omega(k)v^i_j(k)+\varphi_1rand(0,a_1)(p^i_j(k)- x^i_j(k))+\varphi_2rand(0,a_2)(p^g_j(k)-x^i_j(k)) \\ x^i_j(k+1)&=x^i_j(k)+v^i_j(k+1) \\ i&=1,2,\cdots,m; \\ j&=1,2,\cdots,n; \end{aligned} vji?(k+1)xji?(k+1)ij?=ω(k)vji?(k)+φ1?rand(0,a1?)(pji?(k)?xji?(k))+φ2?rand(0,a2?)(pjg?(k)?xji?(k))=xji?(k)+vji?(k+1)=1,2,?,m;=1,2,?,n;?
其中ω是慣性權重因子φ1,φ2是加速度常數,均為非負值。

rand(0,a1)和 rand(0,a2)為[0,a1]、[0,a2]范圍內的具有均勻分布的隨機數,a1與a2為相應的控制參數。
ω(k)vji(k)\omega(k)v^i_j(k) ω(k)vji?(k)

  • 第一部分:是粒子在前一刻的速度;

φ1rand(0,a1)(pji(k)?xji(k))\varphi_1rand(0,a_1)(p^i_j(k)-x^i_j(k)) φ1?rand(0,a1?)(pji?(k)?xji?(k))

  • 第二部分:為個體“認知”分量,表示粒子本身的思考,將現有的位置和曾經經歷過的最優位置相比。

φ2rand(0,a2)(pjg(k)?xji(k))\varphi_2rand(0,a_2)(p^g_j(k)-x^i_j(k)) φ2?rand(0,a2?)(pjg?(k)?xji?(k))

  • 第三部分:是群體“社會”分量,表示粒子間的信息共享和互相合作。
  • φ1,φ2分別為控制個體認知分量和群體社會分量的相對貢獻的學習率。
  • 隨機系數增加了搜索方向的隨機性和算法的多樣性。

PSO模型

  • φ1 > 0, φ2 > 0; 為PSO全模型
  • φ1 > 0, φ2 = 0; 為PSO認知模型
  • φ1 = 0, φ2 > 0; 為PSO社會模型
  • φ1 = 0, φ2 > 0 && g ≠ i; 為PSO無私模型

算法執行過程

  • 初始化每個粒子。在允許范圍內隨機設置每個粒子的初始位置和速度。
  • 評價每個粒子的適應度。計算每個粒子的目標函數。
  • 設置每個粒子的Pi。對于每個粒子,將其適應度與其經歷的最好位置Pi進行比較,維持Pi最優。
  • 設置全局最優值Pg。對于每個粒子,將其適應度與群體經歷的最好位置Pg進行比較,位置Pg最優。
  • 更新粒子的速度和位置。通過上面的公式。
  • 檢查終止條件。沒有達到預設條件則重新從第二步開始。
  • 算法流程圖

    總結

    以上是生活随笔為你收集整理的人工智能——微粒群优化算法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。