%%蜂群算法pso%%
%%------初始格式化-----------%%
%--part1:创世--%
clc;
%第一日,上帝说要有光,于是便有了光
clear all;
%第二日,上帝说诸水之向要有空气隔开
format long;
%第三日,上帝说普天之下的水要汇聚在一处,让旱地露出来
%......
%%------初始化蜂群-----------%%
%--part2:预谋--%
%世间本是混沌,直到某日,上帝厌恶了世间的恶,企图降下滔天的洪水清洗人间的罪。
N=40;
%米伽耶劝诫上帝,要相信人间尚有善意可循。便创造了40个名为查拉图斯特拉(查)的化身,希望找到克服原罪的方法教会世人,便可获救赎。
D=10;
%上帝为米伽耶指引道:人间有10宗罪行不可饶恕,去让去他们去人间克服这10宗罪行,便可的获得救赎。
for i=1:N
%米伽耶告诉每个名为查拉图斯特拉的化身:“你们生而为人,具有人的肉体,却被我赋予了神的智慧和灵性。”
for j=1:D
%“你们每位,皆背负着人间10种罪行中的一种。”
x(i,j)=randn;
%米伽耶告诉每个查拉图斯特拉:“你们将被我随机派往不同的人生、踏上不同的旅途、去扮演不同的人。”
v(i,j)=randn;
%“唯有当你们中都某一位领悟了人生的真谛、体会到神性之时,便可找到真理达到神的境界 。”
end
%然而查拉图斯特拉作为神性的代理。却受到了米伽耶的诅咒,将永生无法窥见真理的全貌。
end
%米伽耶杀死了上帝
%%------定义每只蜂的状态-----------%%
%--part3:流亡--%
for i=1:N
%一位查拉图斯特拉逃往了人间
p(i)=fitness2(x(i,:),D);
%这时他在林中遇到一位老者向他说 “上帝已死,寻找救赎的道路不过是枉然。”
y(i,:)=x(i,:);
%查叹息道:“我所追寻的并非是已死上帝的真理,我将要发现的是属于我自己的真理啊”便坚定的继续向前走去。
end
pg=x(1,:);
%路旁的尼采高呼着 超越者查拉图斯特拉啊 你要的不是结果,而是意志和态度
for i=2:N
%另一位 读者 扮演着 查拉图斯特拉 从高处走来
if fitness2(x(i,:),D)<fitness2(pg,D)
%查拉图斯特拉深知自己无法得到真理的全貌,但是读者可以从自己的一生中获得经验
pg=x(i,:);
%因此每个查拉图斯特拉都将自己的故事告诉路边的尼采
end
%尼采走出了森林
end
%他拿着所有查拉图斯特拉的记忆,准备打破上帝的诅咒,复活查拉图斯特拉
%%------蜂群搜索得出最优值---------%%
%--复仇--%
%尼采的本子上记载着复活 查拉图斯特拉 所需的:
w=0.7298; %本我
c1=1.4962; %自我
c2=1.4962; %超我
MaxDT=1000; %时间
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,:); %都在创造着新的自己
if fitness2(x(i,:),D)<p(i) %他说到“如果真理不是我所定义和创造的”
p(i)=fitness2(x(i,:),D); %“那么神所创造的 虚伪、无聊的真理 不要也罢”
y(i,:)=x(i,:); %“我就是我的真理”
end %“任凭是神也无法撼动我的存在”
if p(i)<fitness2(pg,D) %然而 查拉图斯特拉 并不知道 上帝并没有死
pg=y(i,:); %而是借由尼采复活查拉图斯特拉之际 也复活了自己
end %他成为了新的上帝
end %此刻的他 既是 上帝 也是 查拉图斯特拉
Pbest(t)=fitness2(pg,D); %他举起双手
end %在世间降下了洪水
%一切又陷入了混沌