計算智慧(CI)之粒子群優化演算法(PSO)(一)
歡迎大家關注我們的網站和系列教程:http://www.tensorflownews.com/,學習更多的機器學習、深度學習的知識!
計算智慧(Computational Intelligence , CI)是以生物進化的觀點認識和模擬智慧。按照這一觀點,智慧是在生物的遺傳、變異、生長以及外部環境的自然選擇中產生的。在用進廢退、優勝劣汰的過程中,適應度高的結構被儲存下來,智慧水平也隨之提高。因此計算智慧就是基於結構演化的智慧。計算智慧的主要方法有人工神經網路、遺傳演算法、遺傳程式、演化程式、區域性搜尋、模擬退火等等。這些方法具有以下共同的要素:自適應的結構、隨機產生的或指定的初始狀態、適應度的評測函式、修改結構的操作、系統狀態儲存器、終止計算的條件、指示結果的方法、控制過程的引數。計算智慧的這些方法具有自學習、自組織、自適應的特徵和簡單、通用、魯棒性強、適於並行處理的優點。在並行搜尋、聯想記憶、模式識別、知識自動獲取等方面得到了廣泛的應用。典型的代表如遺傳演算法、免疫演算法、模擬退火演算法、蟻群演算法、微粒群演算法,都是一種仿生演算法,基於“從大自然中獲取智慧”的理念,通過人們對自然界獨特規律的認知,提取出適合獲取知識的一套計算工具。總的來說,通過自適應學習的特性,這些演算法達到了全域性優化的目的。
粒子群優化演算法(Partiele Swarm Optimization , PSO)又翻譯為粒子群演算法、微粒群演算法、或微粒群優化演算法。是通過模擬鳥群覓食行為而發展起來的一種基於群體協作的隨機搜尋演算法。由Kennedy和Eberhart博士於1995年提出,是一種基於群智慧(Swarm Intelligence , SI)方法的演化計算(Evolutionary Computation , EC)技術,可通過微利之間的相互作用發現複雜搜尋空間中的最優區域。
鳥被抽象為沒有質量和體積的微粒(點),並延伸到N維空間,粒子I在N維空間的位置表示為向量Xi=(x1,x2,…,xN),飛行速度表示為向量Vi=(v1,v2,…,vN).每個粒子都有一個由目標函式決定的適應值(fitness value),並且知道自己到目前為止發現的最好位置(pbest)和現在的位置Xi.這個可以看作是粒子自己的飛行經驗.除此之外,每個粒子還知道到目前為止整個群體中所有粒子發現的最好位置(gbest)(gbest是pbest中的最好值).這個可以看作是粒子同伴的經驗.粒子就是通過自己的經驗和同伴中最好的經驗來決定下一步的運動。
Millonas在開發人工生命演算法時(1994年),提出群體智慧概念並提出五點原則:
1.接近性原則:群體應能夠實現簡單的時空計算;
2.優質性原則:群體能夠響應環境要素;
3.變化相應原則:群體不應把自己的活動限制在一狹小範圍;
4.穩定性原則:群體不應每次隨環境改變自己的模式;
5.適應性原則:群體的模式應在計算代價值得的時候改變。
下面介紹最原始的PSO演算法,它公式的內涵也就是基於這5點原則的。
初始化粒子位置:按一定策略,隨機生成一些粒子初試位置(隨機解)。
通過迭代找到最優解。在每一次的迭代中,粒子通過跟蹤兩個“極值”(pbest,gbest)來更新自己。在找到這兩個最優值後,粒子通過下面的公式來更新自己的速度和位置
位置更新公式:
速度更新公式:
更新公式中,i=1,2…,N,N是此群中粒子的總數。rand()用於產生(0,1)之間的隨機數。C1和C2是學習因子,通常設定為C1=C2=2。
改進後的離散二進位制PSO(Binary PSO , BPSO):
PSO主要優化連續實值問題,BPSO主要優化離散空間約束問題;
BPSO是在離散粒子群演算法基礎上,約定位置向量、速度向量均由0、1值構成。
初始化粒子位置:按一定策略,生成二進位制編碼。
速度更新公式:
但沒有原始PSO的粒子位置更新公式,為了表示速度的值是二進位制位取1的概率,速度的值被對映到區間[0,1],對映的方法一般採用(2)式sigmoid函式:
這裡s(vid)表示位置xid取1的概率,粒子通過(3)式更新位置:
BPSO有很強全域性搜尋能力,但不能收斂於全域性最優值,且隨著演算法迭代搜尋隨機性越來越強,缺乏後期的區域性搜尋能力。
實驗:使用BPSO,藉助MATLAB優化函式3*cos(x(1)*x(2)) + x(1) + x(2)^2
引數設定為:
群體粒子個數N=100,粒子維度D=2,最大迭代次數T=200;C1=C2=1.5,慣性權重W∈[0.4,0.8],位置值x∈[-4,4],速度值v∈[-1,1]。
實驗程式碼如下:
實驗結果如下:
從實驗結果可以看出,在迭代大約十次之後,適應度值趨於平穩,說明此值是最優解。
PSO演算法的應用:
由於PSO演算法概念簡單、調參少、容易實現等特點,現已成功的應用於諸多領域。目前主要的應用領域包括以下幾個方面:
- 優化問題的求解。PSO演算法可用於約束優化問題、多目標優化問題、離散空間組合優化問題以及動態跟蹤優化問題的求解。
- 模式識別和影像處理。PSO演算法已在影像分割、影像配準、影像融合、影像識別、影像壓縮和影像合成等方面得到成功應用。
- 神經網路訓練。PSO演算法可完成人工神經網路中的各種任務,包括連線權值的訓練、結構設計、學習規則調整、特徵選擇、連線權值的初始化和規則提取等。
- 電力系統設計。日本的Fuji電力公司的研究人員將電力企業某個著名的RPVC(Reactive Power and Voltage Control)問題簡化為函式的最小值問題,並使用改進的PSO演算法進行優化求解。與傳統方法如專家系統、敏感性分析相比,實驗產生的結果證明了PSO演算法在解決該問題的優勢。
- 半導體器件綜合。半導體器件綜合是在給定的搜尋空間內根據期望得到的器件特性來得到相應的設計引數,一般情況下使用器件模擬器通常得到的特性空間是高度非線性的,因此很難用傳統方法來計算,利用PSO演算法能比遺傳演算法更快更好地找到較高質量的設計引數。
- 其他應用。除了以上領域外,PSO在自動目標檢測、生物訊號識別、決策排程、系統識別以及遊戲訓練等方面也取得了一定的研究成果。
參考文獻
《計算智慧基礎》 主編:張汝波、劉冠群、吳俊偉
《智慧優化演算法及其MATLAB例項》 主編:包子陽、餘繼周
本篇文章出自http://www.tensorflownews.com,對深度學習感興趣,熱愛Tensorflow的小夥伴,歡迎關注我們的網站!
相關文章
- 群體智慧優化演算法之粒子群優化演算法優化演算法
- 利用粒子群優化演算法(PSO)來優化vnpy的量化策略引數優化演算法
- 優化演算法庫DEAP的粒子群優化演算法(PSO)示例程式碼分析優化演算法
- m基於PSO粒子群最佳化的LDPC碼NMS譯碼演算法最優歸一化引數計算和誤位元速率matlab模擬演算法Matlab
- m基於PSO粒子群最佳化的LDPC碼OMS譯碼演算法最優偏移引數計算和誤位元速率matlab模擬演算法Matlab
- 人工智慧導論——智慧計算(進化演算法+群智慧優化)人工智慧演算法優化
- 小科普:機器學習中的粒子群優化演算法!機器學習優化演算法
- 粒子群優化演算法對BP神經網路優化 Matlab實現優化演算法神經網路Matlab
- Android效能優化篇之計算效能優化Android優化
- 併發優化 – 降低鎖顆粒優化
- 併發優化 - 降低鎖顆粒優化
- 進化演算法、遺傳演算法與粒子群演算法之間的比較演算法
- 基於PSO粒子群演算法的三角形採集堆軌道最佳化matlab模擬演算法Matlab
- 基於PSO粒子群最佳化的GroupCNN分組卷積網路時間序列預測演算法matlab模擬CNN卷積演算法Matlab
- 人工智慧之計算智慧人工智慧
- 行轉列計算差值的一種優化優化
- Ta想做一粒智慧的種子
- Python之粒子群演算法(含程式碼例項)Python演算法
- 基於PSO粒子群最佳化的CNN-LSTM的時間序列迴歸預測matlab模擬CNNMatlab
- 基於PSO粒子群最佳化的車間排程問題求解matlab模擬,輸出甘特圖Matlab
- oracle優化一例之sql優化Oracle優化SQL
- Android效能優化之運算篇Android優化
- 業務顆粒化思考
- 使用預計算分割槽優化引數化優化
- Sql優化(二) 快速計算Distinct CountSQL優化
- 地理空間距離計算優化優化
- SQL優化之把運算放在列的另一端SQL優化
- [效能優化]UITableView效能優化的一點感悟及計算UILabel高度的新方法優化UIView
- 【MySQL】效能優化之 order by (一)MySql優化
- [Android]電量優化之app演算法Android優化APP演算法
- COUNT(*)計算行數有哪些優化手段優化
- MySQL效能優化之索引設計MySql優化索引
- oracle之優化一用group by或exists優化distinctOracle優化
- 粒子群演算法和遺傳演算法的比較演算法
- C++ 效能優化篇二《影響優化的計算機行為》C++優化計算機
- MSSQL優化之索引優化SQL優化索引
- CUDA優化之指令優化優化
- 人工智慧在邊緣計算中的優勢人工智慧