一、問題概述
粒子群演算法求解多峰函式:
函式表示式:
z=((
1*cos((1
+1).
*x+1))
+(2*cos((2
+1).
*x+2))
+(3*cos((3
+1).
*x+3))
+...
(4*cos((4
+1).
*x+4))
+(5*cos((5
+1).
*x+5))
).*(
(1*cos((1
+1).
*y+1))
+...
(2*cos((2
+1).
*y+2))
+(3*cos((3
+1).
*y+3))
+(4*cos((4
+1).
*y+4))
+(5*cos((5
+1).
*y+5))
);
函式影象:
二、問題解決
有個問題需要提前宣告一下,也是困擾我好久的:
我嘗試採用達到某一精度就停止迭代,但每次只進行了幾次迭代就結束了,當然,結果肯定不是最優的。後來採用規定迭代次數的方法終止迴圈,並畫出了迭代次數和適應度值的曲線,才發現每迭代幾次就會出現一段滯留。我曾經懷疑是不是程式寫錯了,後來發現這種情況是確實存在的。所以下次再有迭代幾次就停止的情況,就把迭代次數設的大一點,強制迭代,或許會有新的發現。
clc,clear,close all%%
1.初始化引數
parametern=2;
%自變數個數
xa=-10;
%第乙個自變數下界
xb=10
;%第乙個自變數上界
ya=-10;
%第二個自變數下界
yb=10
;%第二個自變數上界
n=10
;%初始群體粒子數,一般取20
-60,複雜問題取100
-200
vmin=-2
;%最小速度。一般為每一維度變數變化範圍的10%-
30%。
vmax=2;
%最大速度
c1=1.4
;%認知常數,一般c1=c2=
2,取0
-4之間。
c2=1.4
;%認知常數
iter
=200
;%迭代次數
gbesty=
;%存放每一次迭代的全域性最優解%%
1.初始化速度和位置資訊
v=rand(n,parametern)
;pos=
[xa+
(xb-xa)
*rand(n,
1) ya+
(yb-ya)
*rand(n,1)
];%%
2.計算適應度值
fx=objectfun(pos(:,
1),pos(:,
2));
%尋找初始極值
[best_f, best_index]
=min
(fx)
;gbestpos = pos(best_index,:)
;%全域性最優解的座標
gbest = best_f;
%全域性最優解
pbestpos = pos;
%個體極值的座標
pbest = fx;
%個體極值
gbesty=
[gbesty gbest]
;%存放每一次迭代的全域性最優解
for count=1:
iter%%
3.更新速度和位置資訊
for i=1:n
%速度更新公式
v(i,:)
=v(i,:)
+c1*rand*
(pbest(i,:)
-pos(1,
:))+c2*rand*
(gbest-pos(1,
:));
v(i,v(i,:)
>vmax)
= vmax;
%速度超出範圍,定為邊界值
v(i,v(i,:)
= vmin;
%位置更新公式
pos(i,:)
=pos(i,:)
+0.5
*v(i,:)
; pos(i,pos(i,1)
>xb)
= xb;
pos(i,pos(i,1)
= xa;
pos(i,pos(i,2)
>yb)
= yb;
pos(i,pos(i,2)
= ya;
end%%4
.更新個體、群體極值
%計算適應度值
fx=objectfun(pos(:,
1),pos(:,
2));
%計算全域性最優解
[best_f, best_index]
=min
(fx)
;if best_f
gbestpos = pos(best_index,:)
;%群體極值位置
gbest = best_f;
%群體極值適應度值
endgbesty=
[gbesty gbest]
;%計算個體極值
for i=1:n
if fx(i)
pbestpos(i,:)
= pos(i,:)
; pbest(i)
= fx(i)
; end
endend%
%disp(
'最小值:'
)gbesty(end)
disp(
'最小值位置:'
)gbestpos
plot(1:
iter
,gbesty(1:
(end-1)
))title(
'適應度值變化曲線');
xlabel(
'進化代數');
ylabel(
'適應度值'
這是寫文章寫的最難受的一回了。明天就是美賽了,還有好多想實現的沒實現,只能草草收尾。希望接下來幾天不要太痛苦,大家都取得好成績呀。
最最想實現的是在函式影象的基礎上,動態顯示每一次全域性最優解的位置變化
粒子群演算法求解多物流中心選址問題(p 中值問題)
粒子群演算法 結果展示 店鋪位址 歡迎加入群智慧型討論群 p 中值問題模型是指在給定m個備選物流中心位置中,選取p個位置,並為每個需求點指定相應的物流中心,使得各個物流中心到需求點的運輸費用之和最低 如圖所示 各需求區域和備選物流中心均當作幾何上的點看待,各需求點的需求量和位置以及備選物流中心的位置...
原 粒子群演算法 PSO 的簡單應用
目錄 1.3 流程圖 2.簡單的pso例子 python 實現 參考資料 之前寫到優化的基本思想,裡面提到了智慧型演算法。目前有些學者對這些演算法並不認可,但是實際使用中,在維度比較低的情況下,群智慧型演算法確實能以很高的找到近似解。這篇以我最熟悉的pso開始,以demo的方式來 群智慧型演算法的使...
粒子群優化演算法求函式最小值
1.演算法簡介 粒子群演算法 簡稱pso 是一種有效的全域性尋優演算法,最早由美國的kennedy和eberhart於1995年提出。基於群體智慧型理論的優化演算法,通過個體之間的協作和資訊共享來尋找最優解,具有 自我 學習提高和向 他人 學習的優點,被廣泛應用於函式優化 資料探勘 神經網路訓練等領...