【機器學習|學習筆記】粒子群優化(Particle Swarm Optimization, PSO)詳解,附代碼。

【機器學習|學習筆記】粒子群優化(Particle Swarm Optimization, PSO)詳解,附代碼。

【機器學習|學習筆記】粒子群優化(Particle Swarm Optimization, PSO)詳解,附代碼。


文章目錄

  • 【機器學習|學習筆記】粒子群優化(Particle Swarm Optimization, PSO)詳解,附代碼。
  • 前言
    • 起源
    • 發展
      • 參數收斂與穩定性分析
      • 算法變體
      • 元啟發式與混合優化
    • 原理
      • 基本算法
      • 收斂機制
    • 應用
    • Python代碼實現


歡迎鐵子們點贊、關注、收藏!
祝大家逢考必過!逢投必中!上岸上岸上岸!upupup

大多數高校碩博生畢業要求需要參加學術會議,發表EI或者SCI檢索的學術論文會議論文。詳細信息可關注VX “學術會議小靈通”或參考學術信息專欄:https://blog.csdn.net/2401_89898861/article/details/147567533


前言

  • PSO 以極少的參數和簡單的公式模擬鳥群或魚群的社會行為,通過粒子間的信息共享不斷迭代逼近最優解;
  • 自1995年Kennedy和Eberhart提出以來,它因易于實現、無需梯度信息且適用大規模連續優化而廣泛流行。
  • 本文結合機器學習專業視角,系統回顧PSO的理論基礎、主要變體及典型應用,并給出完整的Python示例代碼。

起源

  • 1995年,James?Kennedy(社會心理學家)和Russell?Eberhart(電氣工程師)首次將社會行為模擬與進化計算相結合,提出了粒子群優化算法,用以模擬鳥群覓食或魚群游動的群體智能行為,從而在連續空間中進行優化搜索
  • 該算法最初旨在研究社會心理學中的“個體—群體”互動模型,后簡化為無隱喻的優化范式。
  • PSO的直接學術淵源還包括Craig?Reynolds于1987年提出的Boids模型,該模型用簡單規則成功模擬鳥群飛行的渦流與聚集現象
  • 1995年Kennedy與Eberhart在IEEE會議上發表的原始論文詳細回顧了社會仿真向優化算法演變的各階段,并展示了PSO在基準函數與工程設計問題上的初步成功

發展

參數收斂與穩定性分析

  • Clerc 和?Kennedy于2002年在IEEE Trans. EC上分析了PSO的“爆炸—收斂”行為,提出了收縮因子(constriction factor)方法,為參數(慣性權重 w w w、學習因子 φ p φ? φp? φ g φ_g φg?)提供了理論收斂域
  • 這一貢獻使PSO在高維空間中的穩定性大幅提升,并成為SPSO?2011標準的理論基礎。

算法變體

  • Bare?Bones PSO:2003年Kennedy提出無需顯式速度更新的簡化版本,通過正態分布直接采樣新位置,降低了參數依賴并在若些測試函數上提升了性能
  • Accelerated PSO (APSO):Yang等人于2011年提出在無速度結構下通過全局最優和隨機擾動快速收斂的APSO變體,進一步簡化并加速了收斂
  • 多目標與多群體為解決多目標優化和防止提前收斂,研究者發展了多群體PSO(multi?swarm)和Pareto?PSO,使算法能同時逼近Pareto前沿
  • 離散與二值PSO:Kennedy &?Eberhart在1997年將PSO推廣到二值空間,用于組合優化,后續Clerc等人提出基于集合運算的通用離散PSO理論。

元啟發式與混合優化

  • PSO常與遺傳算法(GA)、差分進化(DE)、貝葉斯優化等方法混合,以利用不同算法優勢。例如,將PSO用于GA的初代群體生成,或結合DE的變異策略增強全局搜索能力。

原理

基本算法

  • 設目標函數 f : R n → R f:R^n→R f:RnR 待最小化。令粒子數為 S S S,第 i i i 個粒子在迭代 t t t 的位置與速度分別為 x i t x_i^t xit? v i t v_i^t vit?,個體最優位置 p i p_i pi? 與群體最優 g g g。更新公式為:

在這里插入圖片描述

  • 其中 r p , r g ~ U ( 0 , 1 ) r_p ,r_g~U(0,1) rp?,rg?U(0,1) 為隨機向量, w w w 為慣性權重, ? p , ? g ?_p,?_g ?p?,?g? 為學習因子。慣性權重 w w w 平衡全局與局部搜索,典型取值在 (0.4,0.9);學習因子通常取 1–3。

收斂機制

  • PSO通過粒子間共享“最佳位置”信息,使得搜索既保留個體探索性又具備群體協同,隨著迭代,速度趨于0而位置收斂至局部或全局最優。

應用

PSO已被成功應用于工程、計算機科學、經濟學等眾多領域:

  • 神經網絡訓練:用PSO優化權重和結構參數,加速收斂并提升精度。
  • 控制系統設計:如PID參數整定、無人機軌跡規劃、機器人路徑優化。
  • 電力負荷預測:結合PSO與支持向量回歸(SVR)實現短期負荷精準預測。
  • 圖像處理:濾波器參數優化、圖像分割能量函數最小化。
  • 組合優化:旅行商、作業調度、網絡拓撲優化等離散和混合問題。
  • 經濟與金融:資產組合優化、風險管理和策略回測參數調優。

Python代碼實現

  • 下面給出基于NumPy的簡易PSO實現示例,可直接用于任意連續優化問題。
import numpy as npdef pso(func, lb, ub, dim, num_particles=30, max_iter=100, w=0.7, c1=1.5, c2=1.5):# 初始化X = np.random.uniform(lb, ub, (num_particles, dim))        # 粒子位置V = np.random.uniform(-(ub-lb), ub-lb, (num_particles, dim))  # 粒子速度P = X.copy()  # 個體最優位置Pbest = np.array([func(x) for x in P])g_idx = np.argmin(Pbest)G = P[g_idx].copy()  # 全局最優位置for t in range(max_iter):r1, r2 = np.random.rand(), np.random.rand()# 更新速度與位置V = w*V + c1*r1*(P - X) + c2*r2*(G - X)X = X + V# 邊界處理X = np.clip(X, lb, ub)# 更新個體/全局最優fitness = np.array([func(x) for x in X])better = fitness < PbestP[better] = X[better]Pbest[better] = fitness[better]if fitness.min() < Pbest.min():G = X[fitness.argmin()]return G, func(G)# 示例:Rosenbrock 函數優化
def rosen(x):return sum(100.0*(x[1:]-x[:-1]**2.0)**2.0 + (1-x[:-1])**2.0)best_pos, best_val = pso(rosen, lb=-5, ub=5, dim=3)
print("Best position:", best_pos, "Best value:", best_val)
  • 以上代碼實現了PSO的核心機制,包括隨機初始化、速度/位置更新、個體與全局最優跟蹤,以及邊界處理,用戶可調整參數或替換目標函數以滿足不同優化需求。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/83656.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/83656.shtml
英文地址,請注明出處:http://en.pswp.cn/web/83656.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

深度剖析:AI 社媒矩陣營銷工具,如何高效獲客?

在社交媒體營銷領域&#xff0c;競爭日益激烈&#xff0c;傳統的社媒矩陣運營方式面臨諸多挑戰。而 AI 社媒矩陣營銷工具的出現&#xff0c;正以前所未有的方式重構社媒矩陣的底層架構&#xff0c;為營銷人員帶來了全新的機遇與變革。接下來&#xff0c;我們將從技術破局、實戰…

Spring XML 常用命名空間配置

Spring XML 常用命名空間配置 下面是一個綜合性的Spring XML配置樣例&#xff0c;展示了各種常用命名空間的使用方式&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans&quo…

UE5場景漫游——開始界面及關卡跳轉

UE中實現UMG游戲界面搭建及藍圖控制&#xff0c;點擊游戲界面中的按鈕實現關卡的跳轉效果。 一、游戲界面顯示。1.創建UMG&#xff0c;2.搭建UI。3.關卡藍圖控制顯示 二、點擊按鈕之后實現關卡跳轉

CSS 外邊距合并(Margin Collapsing)問題研究

在 CSS 中&#xff0c;margin-top 屬性會導致外部 DIV 移動的現象主要是由于 外邊距合并&#xff08;Margin Collapsing&#xff09; 造成的。這是 CSS 盒模型的一個特性&#xff0c;可能會與直覺相悖。 外邊距合并的原理 當一個元素&#xff08;如內部 DIV&#xff09;的 ma…

清理電腦C磁盤,方法N:使用【360軟件】中的【清理C盤空間】

1、先下載并打開【360安全衛士】&#xff0c;點擊如下位置&#xff1a; 之后&#xff0c;可以把這個東西&#xff0c;創建快捷方式到電腦桌面&#xff0c;方便以后使用&#xff1a;

微服務集成seata分布式事務 at模式快速驗證

微服務集成Seata分布式事務 本次demo代碼地址業務場景&#xff1a;一般用于以下場景&#xff1a;使用 AT 模式的優勢&#xff08;適用于快速驗證&#xff09;&#xff1a;快速驗證建議步驟&#xff1a;注意事項&#xff1a; 工具環境微服務版本選擇Nacos 環境搭建與啟動nacos 下…

LLM基礎5_從零開始實現 GPT 模型

基于GitHub項目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 設計 LLM 的架構 GPT 模型基于 Transformer 的 decoder-only 架構&#xff0c;其主要特點包括&#xff1a; 順序生成文本 參數數量龐大&#xff08;而非代碼量復雜&#xff09; 大量重復…

Android 中 linux 命令查詢設備信息

一、getprop 命令 在 Linux 系統中&#xff0c; getprop 命令通常用于獲取 Android 設備的系統屬性&#xff0c;這些屬性包括設備型號、Android 版本、電池狀態等。 1、獲取 Android 版本號 adb shell getprop ro.build.version.release2、獲取設備型號 adb shell getprop …

26考研 | 王道 | 計算機組成原理 | 六、總線

26考研 | 王道 | 計算機組成原理 | 六、總線 文章目錄 26考研 | 王道 | 計算機組成原理 | 六、總線6.1 總線概述1. 總線概述2. 總線的性能指標 6.2 總線仲裁&#xff08;考綱沒有&#xff0c;看了留個印象&#xff09;6.3 總線操作和定時6.4 總線標準&#xff08;考綱沒有&…

SE(Secure Element)加密芯片與MCU協同工作的典型流程

以下是SE&#xff08;Secure Element&#xff09;加密芯片與MCU協同工作的典型流程&#xff0c;綜合安全認證、數據保護及防篡改機制&#xff1a; 一、基礎認證流程&#xff08;參數保護方案&#xff09; 密鑰預置? SE芯片與MCU分別預置相同的3DES密鑰&#xff08;Key1、Key2…

數據庫——MongoDB

一、介紹 1. MongoDB 概述 MongoDB 是一款由 C 語言編寫的開源 NoSQL 數據庫&#xff0c;采用分布式文件存儲設計。作為介于關系型和非關系型數據庫之間的產品&#xff0c;它是 NoSQL 數據庫中最接近傳統關系數據庫的解決方案&#xff0c;同時保留了 NoSQL 的靈活性和擴展性。…

WebSocket 前端斷連原因與檢測方法

文章目錄 前言WebSocket 前端斷連原因與檢測方法常見 WebSocket 斷連原因及檢測方式聊天系統場景下的斷連問題與影響行情推送場景下的斷連問題與影響React 前端應對斷連的穩健策略自動重連機制的設計與節流控制心跳機制的實現與保持連接存活連接狀態管理與 React 集成錯誤提示與…

2025年真實面試問題匯總(三)

線上數據庫數據丟失如何恢復 線上數據庫數據丟失的恢復方法需要根據數據丟失原因、備份情況及數據庫類型&#xff08;如MySQL、SQL Server、PostgreSQL等&#xff09;綜合處理&#xff0c;以下是通用的分步指南&#xff1a; 一、緊急止損&#xff1a;暫停寫入&#xff0c;防止…

Android音視頻多媒體開源框架基礎大全

安卓多媒體開發框架中&#xff0c;從音頻采集&#xff0c;視頻采集&#xff0c;到音視頻處理&#xff0c;音視頻播放顯示分別有哪些常用的框架&#xff1f;分成六章&#xff0c;這里一次幫你總結完。 音視頻的主要流程是錄制、處理、編解碼和播放顯示。本文也遵循這個流程展開…

安卓上架華為應用市場、應用寶、iosAppStore上架流程,保姆級記錄(1)

上架前請準備好apk、備案、軟著、企業開發者賬號&#xff01;&#xff01;&#xff01;其余準備好app相關的截圖、介紹、測試賬號&#xff0c;沒講解明白的評論區留言~ 華為應用市場 1、登錄賬號 打開 華為開發者平臺 https://developer.huawei.com/consumer/cn/ 2.登錄企…

【Docker】docker 常用命令

目錄 一、鏡像管理 二、容器操作 三、網絡管理 四、存儲卷管理 五、系統管理 六、Docker Compose 常用命令 一、鏡像管理 命令參數解說示例說明docker pull鏡像名:標簽docker pull nginx:alpine拉取鏡像&#xff08;默認從 Docker Hub&#xff09;docker images-a&#x…

OSPF域內路由

簡介 Router-LSA Router-LSA&#xff08;Router Link State Advertisement&#xff09;是OSPF&#xff08;Open Shortest Path First&#xff09;協議中的一種鏈路狀態通告&#xff08;LSA&#xff09;&#xff0c;它由OSPF路由器生成&#xff0c;用于描述路由器自身的鏈路狀態…

torch 高維矩陣乘法分析,一文說透

文章目錄 簡介向量乘法二維矩陣乘法三維矩陣乘法廣播 高維矩陣乘法開源 簡介 一提到矩陣乘法&#xff0c;大家對于二維矩陣乘法都很了解&#xff0c;即 A 矩陣的行乘以 B 矩陣的列。 但對于高維矩陣乘法可能就不太清楚&#xff0c;不知道高維矩陣乘法是怎么在計算。 建議使用…

瑞薩RA-T系列芯片馬達類工程TCM加速化設置

本篇介紹在使用RA8-T系列芯片&#xff0c;建立馬達類工程應用時&#xff0c;如何將電流環部分的指令和變量設置到TCM單元&#xff0c;以提高電流環執行速度&#xff0c;從而提高系統整體的運行性能&#xff0c;在伺服和高端工業領域有很高的實用價值。本文以RA8T1為范例&#x…

獲取Unity節點路徑

解決目的&#xff1a; 避免手動拼寫節點路徑的時候&#xff0c;出現路徑錯誤導致獲取不到節點的情況。解決效果&#xff1a; 添加如下腳本之后&#xff0c;將自動復制路徑到剪貼板中&#xff0c;在代碼中通過 ctrlv 粘貼路徑代碼如下&#xff1a; public class CustomMenuItems…