genexpdata.m

来自「本人编辑的标准PSO算法」· M 代码 · 共 55 行

M
55
字号
%-----------------------------------------------------------%
%--Run Experiments for different dimensions and SwarmSizes--%
%-----------------------------------------------------------%
function GenExpData(numberofRuns, psoOptions)

% swarmsize = [20. 40. 80]; %设置粒子数;
% DimIters = [10, 20, 30; ...   %设置维数;    
%     1000, 1500, 2000];    %Corresponding iterations,设置相应迭代次数;
swarmsize = [80]; %设置粒子数;
DimIters = [10; ...   %设置维数;    
    2000];    %Corresponding iterations,设置相应迭代次数;

for x = DimIters;
    psoOptions.Vars.Dim = x(1,:);
    psoOptions.Vars.Iterations = x(2,:);
    for size = swarmsize;
        psoOptions.Vars.SwarmSize = size;
        RnS(numberofRuns, psoOptions);
    end
end

%----------------%
%---Run & save---%
%----------------%
function RnS(numberofRuns, psoOptions)

disp(sprintf('This experiment will optimize %s function for %d times.', psoOptions.Obj.fitnessfunction, numberofRuns));
disp(sprintf('Population Size: %d\t\tDimensions: %d.', psoOptions.Vars.SwarmSize, psoOptions.Vars.Dim));
fVal = 0;
History=[];
disp(sprintf('Run \t\t Best objVal'));
for i = 1:numberofRuns
    [tfxmin, xmin, Swarm, tHistory ,tmark_fGBest] = PSO(psoOptions);

    fVal(i,:) = tfxmin;
    Best_P(i,:) = xmin;
    History(:,i) = tHistory;
    mark_fGBest(i,:) = tmark_fGBest;
    % disp(sprintf('%4d \t%10f', i, tfxmin)); %输出最优适应度函数;
    % disp(sprintf('%4d \t%5f', i, xmin)); %输出最优粒子位置; 
    tfxmin,xmin
    figure(i);
    % plot( mark_fGBest );
    semilogy(mark_fGBest(i,:),'r:');
end
Avg = sum(fVal)/numberofRuns;
disp(sprintf('Avg. \t\t%10f\n\n', Avg))

fFile = strcat('f_', psoOptions.Obj.fitnessfunction, '_', int2str(psoOptions.Vars.SwarmSize), 'Particles', int2str(psoOptions.Vars.Dim), 'Dim'); %e.g. f_Rastrigrin_10d20p
BPFile = strcat('B_', psoOptions.Obj.fitnessfunction, '_', int2str(psoOptions.Vars.SwarmSize), 'Particles',int2str(psoOptions.Vars.Dim), 'Dim');
hFile = strcat('h_', psoOptions.Obj.fitnessfunction, '_', int2str(psoOptions.Vars.SwarmSize), 'Particles',int2str(psoOptions.Vars.Dim), 'Dim');
% save(fFile, 'fVal', '-ascii');
% save(BPFile, 'Best_P', '-ascii');
% save(hFile, 'History', '-ascii');

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?