%%蜂群算法pso%%
%%------初始格式化-----------%%
%--part1:創(chuàng)世--%
clc;
%第一日,上帝說要有光,于是便有了光
clear all;
%第二日,上帝說諸水之向要有空氣隔開
format long;
%第三日,上帝說普天之下的水要匯聚在一處,讓旱地露出來
%......
%%------初始化蜂群-----------%%
%--part2:預(yù)謀--%
%世間本是混沌,直到某日,上帝厭惡了世間的惡,企圖降下滔天的洪水清洗人間的罪。
N=40;
%米伽耶勸誡上帝,要相信人間尚有善意可循。便創(chuàng)造了40個(gè)名為查拉圖斯特拉(查)的化身,希望找到克服原罪的方法教會(huì)世人,便可獲救贖。
D=10;
%上帝為米伽耶指引道:人間有10宗罪行不可饒恕,去讓去他們?nèi)ト碎g克服這10宗罪行,便可的獲得救贖。
for i=1:N
%米伽耶告訴每個(gè)名為查拉圖斯特拉的化身:“你們生而為人,具有人的肉體,卻被我賦予了神的智慧和靈性。”
for j=1:D
%“你們每位,皆背負(fù)著人間10種罪行中的一種。”
x(i,j)=randn;
%米伽耶告訴每個(gè)查拉圖斯特拉:“你們將被我隨機(jī)派往不同的人生、踏上不同的旅途、去扮演不同的人。”
v(i,j)=randn;
%“唯有當(dāng)你們中都某一位領(lǐng)悟了人生的真諦、體會(huì)到神性之時(shí),便可找到真理達(dá)到神的境界 。”
end
%然而查拉圖斯特拉作為神性的代理。卻受到了米伽耶的詛咒,將永生無法窺見真理的全貌。
end
%米伽耶殺死了上帝
%%------定義每只蜂的狀態(tài)-----------%%
%--part3:流亡--%
for i=1:N
%一位查拉圖斯特拉逃往了人間
p(i)=fitness2(x(i,:),D);
%這時(shí)他在林中遇到一位老者向他說 “上帝已死,尋找救贖的道路不過是枉然。”
y(i,:)=x(i,:);
%查嘆息道:“我所追尋的并非是已死上帝的真理,我將要發(fā)現(xiàn)的是屬于我自己的真理啊”便堅(jiān)定的繼續(xù)向前走去。
end
pg=x(1,:);
%路旁的尼采高呼著 超越者查拉圖斯特拉啊 你要的不是結(jié)果,而是意志和態(tài)度
for i=2:N
%另一位 讀者 扮演著 查拉圖斯特拉 從高處走來
if fitness2(x(i,:),D)<fitness2(pg,D)
%查拉圖斯特拉深知自己無法得到真理的全貌,但是讀者可以從自己的一生中獲得經(jīng)驗(yàn)
pg=x(i,:);
%因此每個(gè)查拉圖斯特拉都將自己的故事告訴路邊的尼采
end
%尼采走出了森林
end
%他拿著所有查拉圖斯特拉的記憶,準(zhǔn)備打破上帝的詛咒,復(fù)活查拉圖斯特拉
%%------蜂群搜索得出最優(yōu)值---------%%
%--復(fù)仇--%
%尼采的本子上記載著復(fù)活 查拉圖斯特拉 所需的:
w=0.7298; %本我
c1=1.4962; %自我
c2=1.4962; %超我
MaxDT=1000; %時(shí)間
eps=10^(-6); %理想
for t=1:MaxDT %新生的人類睜開了雙眼
for i=1:N %此刻的他 既不是 讀者 也不是 查拉圖斯特拉
v(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:))+c2*rand*(pg-x(i,:)); %他每走一步
x(i,:)=x(i,:)+v(i,:); %都在創(chuàng)造著新的自己
if fitness2(x(i,:),D)<p(i) %他說到“如果真理不是我所定義和創(chuàng)造的”
p(i)=fitness2(x(i,:),D); %“那么神所創(chuàng)造的 虛偽、無聊的真理 不要也罷”
y(i,:)=x(i,:); %“我就是我的真理”
end %“任憑是神也無法撼動(dòng)我的存在”
if p(i)<fitness2(pg,D) %然而 查拉圖斯特拉 并不知道 上帝并沒有死
pg=y(i,:); %而是借由尼采復(fù)活查拉圖斯特拉之際 也復(fù)活了自己
end %他成為了新的上帝
end %此刻的他 既是 上帝 也是 查拉圖斯特拉
Pbest(t)=fitness2(pg,D); %他舉起雙手
end %在世間降下了洪水
%一切又陷入了混沌