%% FOA封装程序
clc;
clear;
for gen=1:30
%% 初始化参数
maxgen=100; %最大迭代次数
sizepop=50;
dim=30;
L=1;
%% 初始化矩阵
X_best=zeros(maxgen,dim);
Y_best=zeros(maxgen,dim);
Smell_best=zeros(1,maxgen);
%% 初始化果蝇坐标;
X_axis=10*rand(1,dim);
Y_axis=10*rand(1,dim);
%% 生成果蝇群
[Si,X,Y]=gengrate_foa(X_axis,Y_axis,sizepop,dim,L);
%% 寻找最优个体
[BestSmell,Index]=find_Sum_Square(Si);
SmellBest=BestSmell; %SmellBest为全局最优
%% 取出最优个体的两个维度的X,Y坐标
X_axis=X(Index,:);
Y_axis=Y(Index,:);
for g=1:maxgen
%% 生成果蝇群
[Si,X,Y]=gengrate_foa(X_axis,Y_axis,sizepop,dim,L);
%% 寻找最优个体
[BestSmell,Index]=find_Sum_Square(Si);
if BestSmell<SmellBest
X_axis=X(Index,:);
Y_axis=Y(Index,:);
%更新极值
SmellBest=BestSmell;
end
Smell_best(g)=SmellBest;
X_best(g,:)=X_axis;
Y_best(g,:)=Y_axis;
end
S(gen)=SmellBest;
end
%% 输出最终值
SmellBest;
%% 绘制图像
figure(1)
plot(Smell_best,'b'); %绘制每一代最优浓度值
figure(2)
hold on
plot(X_best(:,1),Y_best(:,1),'r.');%绘制果蝇群X_axis,Y_axis的变化
plot(X_best(:,2),Y_best(:,2),'b.');
plot(X_best(:,3),Y_best(:,3),'k.');
figure(3)
plot(X(:,1),Y(:,1),'b.');%绘制最后一代的果蝇群;
mean(S)
min(S)
std(S)