粒子群優化演算法
該演算法最早由kennedy和eberhart在2023年提出
particle swarm optimization
靈感**於對鳥類捕食問題的研究。
粒子的概念
適應度函式值評價粒子
沒有選擇交叉變異三個運算元
乙個是個體的極值,乙個是群體的極值。
粒子通過個體極值和群體極值更新自身的速度和位置
多步之後才會出現個體極值的概念。
pso有記憶的功能
粒子群優化演算法既有對個體最優的保留,又有對全域性最優的保留。但是遺傳演算法崇尚的只是全域性最優,比較的範圍只有全域性。
遺傳演算法是互相共享資訊,粒子群演算法是單向的資訊流動。
一般情況下,pso收斂速度比遺傳演算法快,他不會破壞這個「最優」。
matlab自帶工具箱利用一部分,稱為子集
我們外部工具箱用的是全部個體,即全集
如果x產生變化之後超出了限定範圍,則取端點值。
rands(0)從-1到1,rands(0)從0到2
重新加了figure之後,再空一行用plot,這會重新繪製出乙個新的影象,否則會在原有的影象上進行繪製。
mse表示的是期望值和實際值之間的差的平方和。
var表示的是實際值和所有實際值的平均值的差的平方和。
cov表示的是協方差
warning off 可以在命令列中取消警告
cov(協方差)**實現:
cor_up=sum((e-mean(e)).*(d-mean(d)))
var(方差總數)表示的是實際值和所有實際值的平均值的差的平方和。**實現:
var=sum((e-mean(e)).*(e-mean(e)))
mse(期望方差總數)表示的是期望值和實際值之間的差的平方和。**實現:
mse=sum((e-d).*(e-d))
粒子群演算法就好比,乙個人在森林當中走,這個時候別人告訴他東南方向有一片空地,他自己憑藉以前走過的經驗直到正北方向有一片空地,於是他就採取一種折中措施,朝著東偏北的方向前進,認為這兩個方向既然都有空地,那麼他們「中間」出現空地的可能性就很大,於是就靠著這種感覺向「中間」出發,但是這兩個方向到底哪乙個佔的考慮權重更大,這是由引數決定的。
從實際生活經驗來講,在社會經驗和生活經驗中採取折中措施,有一定道理,但是也沒那麼有道理。比如,你知道東北方向有座高山,東南方向也有一座高山,那麼他們中間某個地方有很可能有一片高山嗎?這倒不一定吧,山於山之間是山谷也完全有可能啊。只能說,這種演算法是在已知條件有限的情況下根據這樣一種經驗,或者說「直覺」,作出的一種無奈選擇。
matlab在數學建模中的應用,這本書裡面講ω越大,那麼粒子飛翔的速度和位置更新的幅度也越大。仔細推敲,這一定嗎?三個不確定的向量做合成,其中乙個向量的模增大,那麼總向量的模增大,這不一定。當然在最後的乙個階段內,這一次和上一次的速度是可以看成近似的,因為初始隨機速度隨著迭代代數的增大所起到的作用會越來越小,到最後,一段時間內的速度都可以近似看做是由全域性最優和個體最優點去決定的速度。從而導致可以看成ω越大,保留的近似的上一次的速度越大,速度疊加起來就可以看做是兩個夾角是銳角的向量疊加。但是反過來說,ω越大,那麼這個「看成近似」所需要的代數也就越久,雖然從單詞來講好像增大了步進距離,但是從整體來講「可以看成近似的代數」變少。綜上,這是乙個經驗之談,書上說的,我信了。
協同粒子演算法?這個問題先留著。
plot3(zbest(1), zbest(2), fitnesszbest,'bo','linewidth',1.5)
『bo』,b是blue藍色的意思,o是畫圈,linewidth,線條寬度。
粒子群優化演算法 粒子群演算法
粒子群演算法 particle swarm optimization,pso 屬於進化演算法的一種,該演算法最初是受到飛鳥集群活動的規律性啟發,進而利用群體智慧型建立的乙個簡化模型。粒子群演算法在對動物集群活動行為觀察基礎上,利用群體中的個體對資訊的共享使整個群體的運動在問題求解空間中產生從無序到有...
粒子群演算法簡單實現
pso演算法相關定義 pso中的每個粒子p包含兩個向量 x,v o位置向量x 粒子在解空間中的當前位置 x x1,x2,xdim o速度向量v 粒子在解空間中的飛行速度 v v1,v2,vdim pbest 粒子自身的歷史最優位置 gbest 群體全域性最優向量 粒子速度與位置更新 p.v omeg...
粒子群演算法
如前所述,pso模擬鳥群的捕食行為。設想這樣乙個場景 一群鳥在隨機搜尋食物。在這個區域裡只有一塊食物。所有的鳥都不知道食物在那裡。但是他們知道當前的位置離食物還有多遠。那麼找到食物的最優策略是什麼呢。最簡單有效的就是搜尋目前離食物最近的鳥的周圍區域。pso從這種模型中得到啟示並用於解決優化問題。ps...