% 不使用粒子群算法
clc
clear all
close all
N = 500; % 运算次数
Q = N+1;
for i = 1:N
%% 基础粒子群算法
[g1,Gbest1,N1,gb1,t1] = example_4;
X1(i) = g1(1); Y1(i) = g1(2); GB1(i) = Gbest1; N11(i) = N1; T1(i) = t1;
%% 标准粒子群
[g2,Gbest2,N2,gb2,t2] = example_5_1;
X2(i) = g2(1); Y2(i) = g2(2); GB2(i) = Gbest2; N22(i) = N2; T2(i) = t2;
%% 压缩因子粒子群算法
[g3,Gbest3,N3,gb3,t3] = example_5_2;
X3(i) = g3(1); Y3(i) = g3(2); GB3(i) = Gbest3; N33(i) = N3; T3(i) = t3;
%% 离散粒子群算法
[g4,Gbest4,N4,gb4,t4] = example_5_3;
X4(i) = g4(1); Y4(i) = g4(2); GB4(i) = Gbest4; N44(i) = N4; T4(i) = t4;
%% 结合自适应惯性权重的混合粒子群算法
[g5,Gbest5,N5,gb5,t5] = example_5_4;
X5(i) = g5(1); Y5(i) = g5(2); GB5(i) = Gbest5; N55(i) = N5; T5(i) = t5;
%% 动态调整惯性权重改进粒子群算法(IDWPSO)
[g6,Gbest6,N6,gb6,t6] = example_5_5;
X6(i) = g6(1); Y6(i) = g6(2); GB6(i) = Gbest6; N66(i) = N6; T6(i) = t6;
end
%% 基础粒子群算法
X1 = X1'; Y1 = Y1'; GB1 = GB1'; N11 = N11'; T1 = T1';
% 初始化结果(使用cell结构,与输出同尺寸,每个元素对应Excel一个格子)
data1 = cell(Q,5);
% 建立表头
title = {'x取值','y取值','目标函数值','迭代次数','运行时间',};
% 格式调整(普通数组通过以下函数转为同尺寸cell格式)
x = num2cell(X1); y = num2cell(Y1); Gbest = num2cell(GB1); N = num2cell(N11); t = num2cell(T1);
% 整合
data1(1,:)=title; data1(2:end,1)=x; data1(2:end,2)=y; data1(2:end,3)=Gbest; data1(2:end,4)=N; data1(2:end,5)=t;
xlswrite('data1.xls',data1,'基础粒子群算法');
i = 1:500;
%hold on
%set(gca,'FontSize',20);
%subplot(3,1,1); plot(i,N11); xlabel('运行次数','FontSize',16); ylabel('首次获得最终函数值时的迭代次数','FontSize',16); title('迭代次数曲线','FontSize',16);
%subplot(3,1,2); plot(i,T1); xlabel('运行次数','FontSize',16); ylabel('每次运行时间','FontSize',16); title('时间曲线','FontSize',16);
%subplot(3,1,3); plot(i,GB1); xlabel('运行次数','FontSize',16); ylabel('每次目标函数值','FontSize',16); title('目标函数值曲线','FontSize',16);
%% 标准粒子群
X2 = X2'; Y2 = Y2'; GB2 = GB2'; N22 = N22'; T2 = T2';
%初始化结果(使用cell结构,与输出同尺寸,每个元素对应Excel一个格子)
data1 = cell(Q,5);
%建立表头
title = {'x取值','y取值','目标函数值','迭代次数','运行时间',};
%格式调整(普通数组通过以下函数转为同尺寸cell格式)
x = num2cell(X2); y = num2cell(Y2); Gbest = num2cell(GB2); N = num2cell(N22); t = num2cell(T2);
%整合
data1(1,:)=title; data1(2:end,1)=x; data1(2:end,2)=y; data1(2:end,3)=Gbest; data1(2:end,4)=N; data1(2:end,5)=t;
xlswrite('data1.xls',data1,'标准粒子群');
%% 压缩因子粒子群算法
X3 = X3'; Y3 = Y3'; GB3 = GB3'; N33 = N33'; T3 = T3';
%初始化结果(使用cell结构,与输出同尺寸,每个元素对应Excel一个格子)
data1 = cell(Q,5);
%建立表头
title = {'x取值','y取值','目标函数值','迭代次数','运行时间',};
%格式调整(普通数组通过以下函数转为同尺寸cell格式)
x = num2cell(X3); y = num2cell(Y3); Gbest = num2cell(GB3); N = num2cell(N33); t = num2cell(T3);
%整合
data1(1,:)=title; data1(2:end,1)=x; data1(2:end,2)=y; data1(2:end,3)=Gbest; data1(2:end,4)=N; data1(2:end,5)=t;
xlswrite('data1.xls',data1,'压缩因子粒子群算法');
%% 离散粒子群算法
X4 = X4'; Y4 = Y4'; GB4 = GB4'; N44 = N44'; T4 = T4';
%初始化结果(使用cell结构,与输出同尺寸,每个元素对应Excel一个格子)
data1 = cell(Q,5);
%建立表头
title = {'x取值','y取值','目标函数值','迭代次数','运行时间',};
%格式调整(普通数组通过以下函数转为同尺寸cell格式)
x = num2cell(X4); y = num2cell(Y4); Gbest = num2cell(GB4); N = num2cell(N44); t = num2cell(T4);
%整合
data1(1,:)=title; data1(2:end,1)=x; data1(2:end,2)=y; data1(2:end,3)=Gbest; data1(2:end,4)=N; data1(2:end,5)=t;
xlswrite('data1.xls',data1,'离散粒子群算法');
%% 结合自适应惯性权重的混合粒子群算法
X5 = X5'; Y5 = Y5'; GB5 = GB5'; N55 = N55'; T5 = T5';
%初始化结果(使用cell结构,与输出同尺寸,每个元素对应Excel一个格子)
data1 = cell(Q,5);
%建立表头
title = {'x取值','y取值','目标函数值','迭代次数','运行时间',};
%格式调整(普通数组通过以下函数转为同尺寸cell格式)
x = num2cell(X5); y = num2cell(Y5); Gbest = num2cell(GB5); N = num2cell(N55); t = num2cell(T5);
%整合
data1(1,:)=title; data1(2:end,1)=x; data1(2:end,2)=y; data1(2:end,3)=Gbest; data1(2:end,4)=N; data1(2:end,5)=t;
xlswrite('data1.xls',data1,'自适应惯性权重');
%% 动态调整惯性权重改进粒子群算法(IDWPSO)
X6 = X6'; Y6 = Y6'; GB6 = GB6'; N66 = N66'; T6 = T6';
%初始化结果(使用cell结构,与输出同尺寸,每个元素对应Excel一个格子)
data1 = cell(Q,5);
%建立表头
title = {'x取值','y取值','目标函数值','迭代次数','运行时间',};
%格式调整(普通数组通过以下函数转为同尺寸cell格式)
x = num2cell(X6); y = num2cell(Y6); Gbest = num2cell(GB6); N = num2cell(N6); t = num2cell(T6);
%整合
data1(1,:)=title; data1(2:end,1)=x; data1(2:end,2)=y; data1(2:end,3)=Gbest; data1(2:end,4)=N; data1(2:end,5)=t;
xlswrite('data1.xls',data1,'IDWPSO');