Code covered by the BSD License  

Highlights from
Particle Swarm Optimization Research Toolbox

image thumbnail
from Particle Swarm Optimization Research Toolbox by George Evers
Gbest PSO, Lbest PSO, RegPSO, GCPSO, MPSO, OPSO, Cauchy mutation, and hybrid combinations

RegPSO_load_grouping_data.m
%$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Option to Load Each Grouping's Workspace to Reconstruct Each Trial's Data%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%   Copyright 2009, 2010, 2011 George I. Evers.

%Use this to reconstruct the data after all groupings
    %per trial have concluded.  The combined data will then be saved per trial to
    %combine over all trials.
if OnOff_ghist
    ghist_current_trial = [];
end
if OnOff_fghist
    fghist_current_trial = [];
end
if OnOff_lbest
    if OnOff_lhist
        lhist_current_trial = [];
    end
end
if OnOff_fphist
    fphist_current_trial = [];
end
if OnOff_phist
    phist_current_trial = [];
end
if OnOff_fhist
    fhist_current_trial = [];
end
if OnOff_xhist
    xhist_current_trial = [];
end
if OnOff_vhist
    vhist_current_trial = [];
end
%Clear variables to be created to ensure that no data carries
%over from the last trial.
if OnOff_k_after_each_grouping
    if OnOff_MPSO
        MPSO_k_after_each_grouping = []; %The four variables
            %below with names similar to this are so named to reflect that
            %they store data at the end of each grouping over an entire
            %MPSO trial (i.e. over multiple starts of the core algorithm
            %selected).  Note that MPSO as used in this toolbox may
            %be used to restart any algorithm (i.e. it is not restricted
            %to GCPSO only, though it was presented using GCPSO).
    else
        RegPSO_k_after_each_grouping = [];%The four variables
            %below with names similar to this are so named to reflect that
            %they store data at the end of each grouping over one trial
            %of RegPSO without MPSO restarting RegPSO multiple times.
    end
end
if OnOff_fg_after_each_grouping
    if OnOff_MPSO
        MPSO_fg_after_each_grouping = [];
    else
        RegPSO_fg_after_each_grouping = [];
    end
end
if OnOff_g_after_each_grouping
    if OnOff_MPSO
        MPSO_g_after_each_grouping = [];
    else
        RegPSO_g_after_each_grouping = [];
    end
end
if OnOff_range_IS_per_grouping
    if OnOff_MPSO
        MPSO_range_IS_per_grouping = [];
    else
        RegPSO_range_IS_per_grouping = [];
    end
end
if OnOff_MPSO
    for Internal_i = 1:MPSO_grouping_counter
        DateString = Internal_date_string_array(Internal_i, :); %Restore DateString used to save.
        if OnOff_num_gs_identical_b4_refinement %If "reg_fact" can change, keep an array of values...
            reg_fact = reg_fact_array(Internal_i); %used to load files.
        end
        fg = fg_array(Internal_i);
        Rand_seq_start_point = Rand_seq_start_point_array(Internal_i);
        if OnOff_func_evals
            if Reg_Method == 1 %which implies for now that OnOff_NormR_stag_det == 1
                if OnOff_w_linear == 0
                    GroupingDataCarrier = load(['Data/', DateString_dir, '/WS/MPSORM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',',  objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                        num2str(stag_thresh), ',', num2str(reg_fact),...
                        ',', num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                        num2str(c1), ',', num2str(c2), ',', num2str(OnOff_w_linear), ',', num2str(w),...
                        ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                        num2str(num_trials), ',Fm', num2str(max_FEs_per_grouping), ',', num2str(fg), ',',...
                        DateString, '.mat']);
                    if OnOff_Autodelete_Grouping_Data
                        delete(['Data/', DateString_dir, '/WS/MPSORM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',',  objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                            num2str(stag_thresh), ',', num2str(reg_fact),...
                            ',', num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                            num2str(c1), ',', num2str(c2), ',', num2str(OnOff_w_linear), ',', num2str(w),...
                            ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                            num2str(num_trials), ',Fm', num2str(max_FEs_per_grouping), ',', num2str(fg), ',',...
                            DateString, '.mat'])
                    end
                else
                    GroupingDataCarrier = load(['Data/', DateString_dir, '/WS/MPSORM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',',  objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                        num2str(stag_thresh), ',', num2str(reg_fact),...
                        ',', num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                        num2str(c1), ',', num2str(c2), ',',...
                        num2str(OnOff_w_linear), ',', num2str(w_i), ',', num2str(w_f)...
                        ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                        num2str(num_trials), ',Fm', num2str(max_FEs_per_grouping), ',', num2str(fg), ',',...
                        DateString, '.mat']);
                    if OnOff_Autodelete_Grouping_Data
                        delete(['Data/', DateString_dir, '/WS/MPSORM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',',  objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                            num2str(stag_thresh), ',', num2str(reg_fact),...
                            ',', num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                            num2str(c1), ',', num2str(c2), ',',...
                            num2str(OnOff_w_linear), ',', num2str(w_i), ',', num2str(w_f)...
                            ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                            num2str(num_trials), ',Fm', num2str(max_FEs_per_grouping), ',', num2str(fg), ',',...
                            DateString, '.mat'])
                    end
                end
            else %(i.e. Reg_Method == 2)
                if OnOff_NormR_stag_det
                    if OnOff_w_linear == 0
                        GroupingDataCarrier = load(['Data/', DateString_dir, '/WS/MPSORM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',', objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                            num2str(stag_thresh), ',', num2str(num_runs_b4_reduction), ',', ...
                            num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                            num2str(c1), ',', num2str(c2), ',', num2str(OnOff_w_linear), ',', num2str(w),...
                            ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                            num2str(num_trials), ',Fm', num2str(max_FEs_per_grouping), ',', num2str(fg), ',',...
                            DateString, '.mat']);
                        if OnOff_Autodelete_Grouping_Data
                            delete(['Data/', DateString_dir, '/WS/MPSORM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',', objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                                num2str(stag_thresh), ',', num2str(num_runs_b4_reduction), ',', ...
                                num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                                num2str(c1), ',', num2str(c2), ',', num2str(OnOff_w_linear), ',', num2str(w),...
                                ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                                num2str(num_trials), ',Fm', num2str(max_FEs_per_grouping), ',', num2str(fg), ',',...
                                DateString, '.mat'])
                        end
                    else
                        GroupingDataCarrier = load(['Data/', DateString_dir, '/WS/MPSORM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',', objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                            num2str(stag_thresh), ',', num2str(num_runs_b4_reduction), ',', ...
                            num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                            num2str(c1), ',', num2str(c2), ',',...
                            num2str(OnOff_w_linear), ',', num2str(w_i), ',', num2str(w_f)...
                            ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                            num2str(num_trials), ',Fm', num2str(max_FEs_per_grouping), ',', num2str(fg), ',',...
                            DateString, '.mat']);
                        if OnOff_Autodelete_Grouping_Data
                            delete(['Data/', DateString_dir, '/WS/MPSORM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',', objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                                num2str(stag_thresh), ',', num2str(num_runs_b4_reduction), ',', ...
                                num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                                num2str(c1), ',', num2str(c2), ',',...
                                num2str(OnOff_w_linear), ',', num2str(w_i), ',', num2str(w_f)...
                                ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                                num2str(num_trials), ',Fm', num2str(max_FEs_per_grouping), ',', num2str(fg), ',',...
                                DateString, '.mat'])
                        end
                    end
                else %(i.e. OnOff_NormR_stag_det ~=1 and presumably == 0, in which case "stag_thresh" is removed from the filename)
                    if OnOff_w_linear == 0
                        GroupingDataCarrier = load(['Data/', DateString_dir, '/WS/MPSORM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',', objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                            num2str(num_runs_b4_reduction), ',', num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                            num2str(c1), ',', num2str(c2), ',', num2str(OnOff_w_linear), ',', num2str(w),...
                            ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                            num2str(num_trials), ',Fm', num2str(max_FEs_per_grouping), ',', num2str(fg), ',',...
                            DateString, '.mat']);
                        if OnOff_Autodelete_Grouping_Data
                            delete(['Data/', DateString_dir, '/WS/MPSORM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',', objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                                num2str(num_runs_b4_reduction), ',', num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                                num2str(c1), ',', num2str(c2), ',', num2str(OnOff_w_linear), ',', num2str(w),...
                                ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                                num2str(num_trials), ',Fm', num2str(max_FEs_per_grouping), ',', num2str(fg), ',',...
                                DateString, '.mat'])
                        end
                    else
                        GroupingDataCarrier = load(['Data/', DateString_dir, '/WS/MPSORM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',', objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                            num2str(num_runs_b4_reduction), ',', num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                            num2str(c1), ',', num2str(c2), ',',...
                            num2str(OnOff_w_linear), ',', num2str(w_i), ',', num2str(w_f)...
                            ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                            num2str(num_trials), ',Fm', num2str(max_FEs_per_grouping), ',', num2str(fg), ',',...
                            DateString, '.mat']);
                        if OnOff_Autodelete_Grouping_Data
                            delete(['Data/', DateString_dir, '/WS/MPSORM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',', objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                                num2str(num_runs_b4_reduction), ',', num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                                num2str(c1), ',', num2str(c2), ',',...
                                num2str(OnOff_w_linear), ',', num2str(w_i), ',', num2str(w_f)...
                                ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                                num2str(num_trials), ',Fm', num2str(max_FEs_per_grouping), ',', num2str(fg), ',',...
                                DateString, '.mat'])
                        end
                    end                                
                end
            end
        else %i.e. if iterations are to be used instead of function evaluations
            if Reg_Method == 1 %which implies for now that OnOff_NormR_stag_det == 1
                if OnOff_w_linear == 0
                    GroupingDataCarrier = load(['Data/', DateString_dir, '/WS/MPSORM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',',  objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                        num2str(stag_thresh), ',', num2str(reg_fact),...
                        ',', num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                        num2str(c1), ',', num2str(c2), ',', num2str(OnOff_w_linear), ',', num2str(w),...
                        ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                        num2str(num_trials), ',Fm', num2str(max_iter_per_grouping), ',', num2str(fg), ',',...
                        DateString, '.mat']);
                    if OnOff_Autodelete_Grouping_Data
                        delete(['Data/', DateString_dir, '/WS/MPSORM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',',  objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                            num2str(stag_thresh), ',', num2str(reg_fact),...
                            ',', num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                            num2str(c1), ',', num2str(c2), ',', num2str(OnOff_w_linear), ',', num2str(w),...
                            ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                            num2str(num_trials), ',Fm', num2str(max_iter_per_grouping), ',', num2str(fg), ',',...
                            DateString, '.mat'])
                    end
                else
                    GroupingDataCarrier = load(['Data/', DateString_dir, '/WS/MPSORM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',',  objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                        num2str(stag_thresh), ',', num2str(reg_fact),...
                        ',', num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                        num2str(c1), ',', num2str(c2), ',',...
                        num2str(OnOff_w_linear), ',', num2str(w_i), ',', num2str(w_f)...
                        ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                        num2str(num_trials), ',Fm', num2str(max_iter_per_grouping), ',', num2str(fg), ',',...
                        DateString, '.mat']);
                    if OnOff_Autodelete_Grouping_Data
                        delete(['Data/', DateString_dir, '/WS/MPSORM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',',  objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                            num2str(stag_thresh), ',', num2str(reg_fact),...
                            ',', num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                            num2str(c1), ',', num2str(c2), ',',...
                            num2str(OnOff_w_linear), ',', num2str(w_i), ',', num2str(w_f)...
                            ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                            num2str(num_trials), ',Fm', num2str(max_iter_per_grouping), ',', num2str(fg), ',',...
                            DateString, '.mat'])
                    end
                end
            else %(i.e. Reg_Method == 2)
                if OnOff_NormR_stag_det
                    if OnOff_w_linear == 0
                        GroupingDataCarrier = load(['Data/', DateString_dir, '/WS/MPSORM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',', objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                            num2str(stag_thresh), ',', num2str(num_runs_b4_reduction), ',', ...
                            num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                            num2str(c1), ',', num2str(c2), ',', num2str(OnOff_w_linear), ',', num2str(w),...
                            ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                            num2str(num_trials), ',Fm', num2str(max_iter_per_grouping), ',', num2str(fg), ',',...
                            DateString, '.mat']);
                        if OnOff_Autodelete_Grouping_Data
                            delete(['Data/', DateString_dir, '/WS/MPSORM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',', objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                                num2str(stag_thresh), ',', num2str(num_runs_b4_reduction), ',', ...
                                num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                                num2str(c1), ',', num2str(c2), ',', num2str(OnOff_w_linear), ',', num2str(w),...
                                ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                                num2str(num_trials), ',Fm', num2str(max_iter_per_grouping), ',', num2str(fg), ',',...
                                DateString, '.mat'])
                        end
                    else
                        GroupingDataCarrier = load(['Data/', DateString_dir, '/WS/MPSORM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',', objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                            num2str(stag_thresh), ',', num2str(num_runs_b4_reduction), ',', ...
                            num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                            num2str(c1), ',', num2str(c2), ',',...
                            num2str(OnOff_w_linear), ',', num2str(w_i), ',', num2str(w_f)...
                            ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                            num2str(num_trials), ',Fm', num2str(max_iter_per_grouping), ',', num2str(fg), ',',...
                            DateString, '.mat']);
                        if OnOff_Autodelete_Grouping_Data
                            delete(['Data/', DateString_dir, '/WS/MPSORM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',', objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                                num2str(stag_thresh), ',', num2str(num_runs_b4_reduction), ',', ...
                                num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                                num2str(c1), ',', num2str(c2), ',',...
                                num2str(OnOff_w_linear), ',', num2str(w_i), ',', num2str(w_f)...
                                ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                                num2str(num_trials), ',Fm', num2str(max_iter_per_grouping), ',', num2str(fg), ',',...
                                DateString, '.mat'])
                        end
                    end
                else %(i.e. OnOff_NormR_stag_det ~=1 and presumably == 0, in which case "stag_thresh" is removed from the filename)
                    if OnOff_w_linear == 0
                        GroupingDataCarrier = load(['Data/', DateString_dir, '/WS/MPSORM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',', objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                            num2str(num_runs_b4_reduction), ',', num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                            num2str(c1), ',', num2str(c2), ',', num2str(OnOff_w_linear), ',', num2str(w),...
                            ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                            num2str(num_trials), ',Fm', num2str(max_iter_per_grouping), ',', num2str(fg), ',',...
                            DateString, '.mat']);
                        if OnOff_Autodelete_Grouping_Data
                            GroupingDataCarrier = load(['Data/', DateString_dir, '/WS/MPSORM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',', objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                                num2str(num_runs_b4_reduction), ',', num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                                num2str(c1), ',', num2str(c2), ',', num2str(OnOff_w_linear), ',', num2str(w),...
                                ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                                num2str(num_trials), ',Fm', num2str(max_iter_per_grouping), ',', num2str(fg), ',',...
                                DateString, '.mat'])
                        end
                    else
                        GroupingDataCarrier = load(['Data/', DateString_dir, '/WS/MPSORM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',', objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                            num2str(num_runs_b4_reduction), ',', num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                            num2str(c1), ',', num2str(c2), ',',...
                            num2str(OnOff_w_linear), ',', num2str(w_i), ',', num2str(w_f)...
                            ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                            num2str(num_trials), ',Fm', num2str(max_iter_per_grouping), ',', num2str(fg), ',',...
                            DateString, '.mat']);
                        if OnOff_Autodelete_Grouping_Data
                            delete(['Data/', DateString_dir, '/WS/MPSORM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',', objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                                num2str(num_runs_b4_reduction), ',', num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                                num2str(c1), ',', num2str(c2), ',',...
                                num2str(OnOff_w_linear), ',', num2str(w_i), ',', num2str(w_f)...
                                ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                                num2str(num_trials), ',Fm', num2str(max_iter_per_grouping), ',', num2str(fg), ',',...
                                DateString, '.mat'])
                        end
                    end                                
                end
            end
        end
        if OnOff_ghist
            ghist_current_trial = [ghist_current_trial; GroupingDataCarrier.ghist];
        end
        if OnOff_fghist
            fghist_current_trial = [fghist_current_trial, GroupingDataCarrier.fghist];
        end
        if OnOff_lbest
            if OnOff_lhist
                lhist_current_trial = [lhist_current_trial, GroupingDataCarrier.lhist];
            end
        end
        if OnOff_fphist
            fphist_current_trial = [fphist_current_trial, GroupingDataCarrier.fphist];
        end
        if OnOff_phist
            phist_current_trial = [phist_current_trial, GroupingDataCarrier.phist];
        end
        if OnOff_fhist
            fhist_current_trial = [fhist_current_trial, GroupingDataCarrier.fhist];
        end
        if OnOff_xhist
            xhist_current_trial = [xhist_current_trial, GroupingDataCarrier.xhist];
        end
        if OnOff_vhist
            vhist_current_trial = [vhist_current_trial, GroupingDataCarrier.vhist];
        end
        if OnOff_k_after_each_grouping
            if Internal_i ~= 1
                MPSO_k_after_each_grouping = [MPSO_k_after_each_grouping, MPSO_k + GroupingDataCarrier.RegPSO_k];
            end
        end
        if OnOff_fg_after_each_grouping
            MPSO_fg_after_each_grouping = [MPSO_fg_after_each_grouping, GroupingDataCarrier.fg];
        end
        if OnOff_g_after_each_grouping
            MPSO_g_after_each_grouping = [MPSO_g_after_each_grouping; GroupingDataCarrier.g(1, :)];
        end
        if OnOff_range_IS_per_grouping
            MPSO_range_IS_per_grouping = [MPSO_range_IS_per_grouping; GroupingDataCarrier.range_IS(1, :)];
        end
    end
else %i.e. no multi-start of the core algorithm
    for Internal_i = 1:RegPSO_grouping_counter
        DateString = Internal_date_string_array(Internal_i, :); %Restore DateString used to save.
        if OnOff_num_gs_identical_b4_refinement %If "reg_fact" can change, keep an array of values...
            reg_fact = reg_fact_array(Internal_i); %used to load files.
        end
        fg = fg_array(Internal_i);
        if OnOff_func_evals
            if Reg_Method == 1 %which implies for now that OnOff_NormR_stag_det == 1
                if OnOff_w_linear == 0
                    GroupingDataCarrier = load(['Data/', DateString_dir, '/WS/RM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',',  objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                        num2str(stag_thresh), ',', num2str(reg_fact),...
                        ',', num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                        num2str(c1), ',', num2str(c2), ',', num2str(OnOff_w_linear), ',', num2str(w),...
                        ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                        num2str(num_trials), ',Fm', num2str(max_FEs_per_grouping), ',', num2str(fg), ',',...
                        DateString, '.mat']);
                    if OnOff_Autodelete_Grouping_Data
                        delete(['Data/', DateString_dir, '/WS/RM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',',  objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                            num2str(stag_thresh), ',', num2str(reg_fact),...
                            ',', num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                            num2str(c1), ',', num2str(c2), ',', num2str(OnOff_w_linear), ',', num2str(w),...
                            ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                            num2str(num_trials), ',Fm', num2str(max_FEs_per_grouping), ',', num2str(fg), ',',...
                            DateString, '.mat'])
                    end
                else
                    GroupingDataCarrier = load(['Data/', DateString_dir, '/WS/RM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',',  objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                        num2str(stag_thresh), ',', num2str(reg_fact),...
                        ',', num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                        num2str(c1), ',', num2str(c2), ',',...
                        num2str(OnOff_w_linear), ',', num2str(w_i), ',', num2str(w_f)...
                        ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                        num2str(num_trials), ',Fm', num2str(max_FEs_per_grouping), ',', num2str(fg), ',',...
                        DateString, '.mat']);
                    if OnOff_Autodelete_Grouping_Data
                        delete(['Data/', DateString_dir, '/WS/RM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',',  objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                            num2str(stag_thresh), ',', num2str(reg_fact),...
                            ',', num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                            num2str(c1), ',', num2str(c2), ',',...
                            num2str(OnOff_w_linear), ',', num2str(w_i), ',', num2str(w_f)...
                            ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                            num2str(num_trials), ',Fm', num2str(max_FEs_per_grouping), ',', num2str(fg), ',',...
                            DateString, '.mat'])
                    end
                end
            else %(i.e. Reg_Method == 2)
                if OnOff_NormR_stag_det
                    if OnOff_w_linear == 0
                        GroupingDataCarrier = load(['Data/', DateString_dir, '/WS/RM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',', objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                            num2str(stag_thresh), ',', num2str(num_runs_b4_reduction), ',', ...
                            num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                            num2str(c1), ',', num2str(c2), ',', num2str(OnOff_w_linear), ',', num2str(w),...
                            ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                            num2str(num_trials), ',Fm', num2str(max_FEs_per_grouping), ',', num2str(fg), ',',...
                            DateString, '.mat']);
                        if OnOff_Autodelete_Grouping_Data
                            delete(['Data/', DateString_dir, '/WS/RM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',', objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                                num2str(stag_thresh), ',', num2str(num_runs_b4_reduction), ',', ...
                                num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                                num2str(c1), ',', num2str(c2), ',', num2str(OnOff_w_linear), ',', num2str(w),...
                                ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                                num2str(num_trials), ',Fm', num2str(max_FEs_per_grouping), ',', num2str(fg), ',',...
                                DateString, '.mat'])
                        end
                    else
                        GroupingDataCarrier = load(['Data/', DateString_dir, '/WS/RM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',', objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                            num2str(stag_thresh), ',', num2str(num_runs_b4_reduction), ',', ...
                            num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                            num2str(c1), ',', num2str(c2), ',',...
                            num2str(OnOff_w_linear), ',', num2str(w_i), ',', num2str(w_f)...
                            ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                            num2str(num_trials), ',Fm', num2str(max_FEs_per_grouping), ',', num2str(fg), ',',...
                            DateString, '.mat']);
                        if OnOff_Autodelete_Grouping_Data
                            delete(['Data/', DateString_dir, '/WS/RM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',', objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                                num2str(stag_thresh), ',', num2str(num_runs_b4_reduction), ',', ...
                                num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                                num2str(c1), ',', num2str(c2), ',',...
                                num2str(OnOff_w_linear), ',', num2str(w_i), ',', num2str(w_f)...
                                ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                                num2str(num_trials), ',Fm', num2str(max_FEs_per_grouping), ',', num2str(fg), ',',...
                                DateString, '.mat'])
                        end
                    end
                else %(i.e. OnOff_NormR_stag_det ~=1 and presumably == 0, in which case "stag_thresh" is removed from the filename)
                    if OnOff_w_linear == 0
                        GroupingDataCarrier = load(['Data/', DateString_dir, '/WS/RM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',', objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                            num2str(num_runs_b4_reduction), ',', num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                            num2str(c1), ',', num2str(c2), ',', num2str(OnOff_w_linear), ',', num2str(w),...
                            ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                            num2str(num_trials), ',Fm', num2str(max_FEs_per_grouping), ',', num2str(fg), ',',...
                            DateString, '.mat']);
                        if OnOff_Autodelete_Grouping_Data
                            delete(['Data/', DateString_dir, '/WS/RM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',', objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                                num2str(num_runs_b4_reduction), ',', num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                                num2str(c1), ',', num2str(c2), ',', num2str(OnOff_w_linear), ',', num2str(w),...
                                ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                                num2str(num_trials), ',Fm', num2str(max_FEs_per_grouping), ',', num2str(fg), ',',...
                                DateString, '.mat'])
                        end
                    else
                        GroupingDataCarrier = load(['Data/', DateString_dir, '/WS/RM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',', objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                            num2str(num_runs_b4_reduction), ',', num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                            num2str(c1), ',', num2str(c2), ',',...
                            num2str(OnOff_w_linear), ',', num2str(w_i), ',', num2str(w_f)...
                            ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                            num2str(num_trials), ',Fm', num2str(max_FEs_per_grouping), ',', num2str(fg), ',',...
                            DateString, '.mat']);
                        if OnOff_Autodelete_Grouping_Data
                            delete(['Data/', DateString_dir, '/WS/RM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',', objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                                num2str(num_runs_b4_reduction), ',', num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                                num2str(c1), ',', num2str(c2), ',',...
                                num2str(OnOff_w_linear), ',', num2str(w_i), ',', num2str(w_f)...
                                ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                                num2str(num_trials), ',Fm', num2str(max_FEs_per_grouping), ',', num2str(fg), ',',...
                                DateString, '.mat'])
                        end
                    end                                
                end
            end
        else %i.e. if iterations are to be used instead of function evaluations
            if Reg_Method == 1 %which implies for now that OnOff_NormR_stag_det == 1
                if OnOff_w_linear == 0
                    GroupingDataCarrier = load(['Data/', DateString_dir, '/WS/RM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',',  objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                        num2str(stag_thresh), ',', num2str(reg_fact),...
                        ',', num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                        num2str(c1), ',', num2str(c2), ',', num2str(OnOff_w_linear), ',', num2str(w),...
                        ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                        num2str(num_trials), ',Fm', num2str(max_iter_per_grouping), ',', num2str(fg), ',',...
                        DateString, '.mat']);
                    if OnOff_Autodelete_Grouping_Data
                        delete(['Data/', DateString_dir, '/WS/RM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',',  objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                            num2str(stag_thresh), ',', num2str(reg_fact),...
                            ',', num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                            num2str(c1), ',', num2str(c2), ',', num2str(OnOff_w_linear), ',', num2str(w),...
                            ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                            num2str(num_trials), ',Fm', num2str(max_iter_per_grouping), ',', num2str(fg), ',',...
                            DateString, '.mat'])
                    end
                else
                    GroupingDataCarrier = load(['Data/', DateString_dir, '/WS/RM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',',  objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                        num2str(stag_thresh), ',', num2str(reg_fact),...
                        ',', num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                        num2str(c1), ',', num2str(c2), ',',...
                        num2str(OnOff_w_linear), ',', num2str(w_i), ',', num2str(w_f)...
                        ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                        num2str(num_trials), ',Fm', num2str(max_iter_per_grouping), ',', num2str(fg), ',',...
                        DateString, '.mat']);
                    if OnOff_Autodelete_Grouping_Data
                        delete(['Data/', DateString_dir, '/WS/RM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',',  objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                            num2str(stag_thresh), ',', num2str(reg_fact),...
                            ',', num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                            num2str(c1), ',', num2str(c2), ',',...
                            num2str(OnOff_w_linear), ',', num2str(w_i), ',', num2str(w_f)...
                            ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                            num2str(num_trials), ',Fm', num2str(max_iter_per_grouping), ',', num2str(fg), ',',...
                            DateString, '.mat'])
                    end
                end
            else %(i.e. Reg_Method == 2)
                if OnOff_NormR_stag_det
                    if OnOff_w_linear == 0
                        GroupingDataCarrier = load(['Data/', DateString_dir, '/WS/RM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',', objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                            num2str(stag_thresh), ',', num2str(num_runs_b4_reduction), ',', ...
                            num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                            num2str(c1), ',', num2str(c2), ',', num2str(OnOff_w_linear), ',', num2str(w),...
                            ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                            num2str(num_trials), ',Fm', num2str(max_iter_per_grouping), ',', num2str(fg), ',',...
                            DateString, '.mat']);
                        if OnOff_Autodelete_Grouping_Data
                            delete(['Data/', DateString_dir, '/WS/RM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',', objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                                num2str(stag_thresh), ',', num2str(num_runs_b4_reduction), ',', ...
                                num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                                num2str(c1), ',', num2str(c2), ',', num2str(OnOff_w_linear), ',', num2str(w),...
                                ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                                num2str(num_trials), ',Fm', num2str(max_iter_per_grouping), ',', num2str(fg), ',',...
                                DateString, '.mat'])
                        end
                    else
                        GroupingDataCarrier = load(['Data/', DateString_dir, '/WS/RM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',', objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                            num2str(stag_thresh), ',', num2str(num_runs_b4_reduction), ',', ...
                            num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                            num2str(c1), ',', num2str(c2), ',',...
                            num2str(OnOff_w_linear), ',', num2str(w_i), ',', num2str(w_f)...
                            ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                            num2str(num_trials), ',Fm', num2str(max_iter_per_grouping), ',', num2str(fg), ',',...
                            DateString, '.mat']);
                        if OnOff_Autodelete_Grouping_Data
                            delete(['Data/', DateString_dir, '/WS/RM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',', objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                                num2str(stag_thresh), ',', num2str(num_runs_b4_reduction), ',', ...
                                num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                                num2str(c1), ',', num2str(c2), ',',...
                                num2str(OnOff_w_linear), ',', num2str(w_i), ',', num2str(w_f)...
                                ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                                num2str(num_trials), ',Fm', num2str(max_iter_per_grouping), ',', num2str(fg), ',',...
                                DateString, '.mat'])
                        end
                    end
                else %(i.e. OnOff_NormR_stag_det ~=1 and presumably == 0, in which case "stag_thresh" is removed from the filename)
                    if OnOff_w_linear == 0
                        GroupingDataCarrier = load(['Data/', DateString_dir, '/WS/RM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',', objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                            num2str(num_runs_b4_reduction), ',', num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                            num2str(c1), ',', num2str(c2), ',', num2str(OnOff_w_linear), ',', num2str(w),...
                            ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                            num2str(num_trials), ',Fm', num2str(max_iter_per_grouping), ',', num2str(fg), ',',...
                            DateString, '.mat']);
                        if OnOff_Autodelete_Grouping_Data
                            delete(['Data/', DateString_dir, '/WS/RM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',', objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                                num2str(num_runs_b4_reduction), ',', num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                                num2str(c1), ',', num2str(c2), ',', num2str(OnOff_w_linear), ',', num2str(w),...
                                ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                                num2str(num_trials), ',Fm', num2str(max_iter_per_grouping), ',', num2str(fg), ',',...
                                DateString, '.mat'])
                        end
                    else
                        GroupingDataCarrier = load(['Data/', DateString_dir, '/WS/RM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',', objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                            num2str(num_runs_b4_reduction), ',', num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                            num2str(c1), ',', num2str(c2), ',',...
                            num2str(OnOff_w_linear), ',', num2str(w_i), ',', num2str(w_f)...
                            ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                            num2str(num_trials), ',Fm', num2str(max_iter_per_grouping), ',', num2str(fg), ',',...
                            DateString, '.mat']);
                        if OnOff_Autodelete_Grouping_Data
                            delete(['Data/', DateString_dir, '/WS/RM', num2str(Reg_Method), ',Gr', num2str(Internal_i), ',', objective(1:2), ',', num2str(dim), ',', num2str(np), ',',...
                                num2str(num_runs_b4_reduction), ',', num2str(vmax_perc), ',', num2str(OnOff_v_clamp), ',', num2str(OnOff_v_reset), ',',...
                                num2str(c1), ',', num2str(c2), ',',...
                                num2str(OnOff_w_linear), ',', num2str(w_i), ',', num2str(w_f)...
                                ',', num2str(Rand_seq_start_point), ',', num2str(max_num_groupings), ',',...
                                num2str(num_trials), ',Fm', num2str(max_iter_per_grouping), ',', num2str(fg), ',',...
                                DateString, '.mat'])
                        end
                    end                                
                end
            end
        end
        if OnOff_ghist
            ghist_current_trial = [ghist_current_trial; GroupingDataCarrier.ghist];
        end
        if OnOff_fghist
            fghist_current_trial = [fghist_current_trial, GroupingDataCarrier.fghist];
        end
        if OnOff_lbest
            if OnOff_lhist
                lhist_current_trial = [lhist_current_trial, GroupingDataCarrier.lhist];
            end
        end
        if OnOff_fphist
            fphist_current_trial = [fphist_current_trial, GroupingDataCarrier.fphist];
        end
        if OnOff_phist
            phist_current_trial = [phist_current_trial, GroupingDataCarrier.phist];
        end
        if OnOff_fhist
            fhist_current_trial = [fhist_current_trial, GroupingDataCarrier.fhist];
        end
        if OnOff_xhist
            xhist_current_trial = [xhist_current_trial, GroupingDataCarrier.xhist];
        end
        if OnOff_vhist
            vhist_current_trial = [vhist_current_trial, GroupingDataCarrier.vhist];
        end
        if OnOff_k_after_each_grouping
            if Internal_i ~= 1
                RegPSO_k_after_each_grouping = [RegPSO_k_after_each_grouping, GroupingDataCarrier.RegPSO_k];
            end
        end
        if OnOff_fg_after_each_grouping
            RegPSO_fg_after_each_grouping = [RegPSO_fg_after_each_grouping, GroupingDataCarrier.fg];
        end
        if OnOff_g_after_each_grouping
            RegPSO_g_after_each_grouping = [RegPSO_g_after_each_grouping; GroupingDataCarrier.g(1, :)];
        end
        if OnOff_range_IS_per_grouping
            RegPSO_range_IS_per_grouping = [RegPSO_range_IS_per_grouping; GroupingDataCarrier.range_IS(1, :)];
        end
    end
end
Internal_date_string_array = [];
clear DateString GroupingDataCarrier %Reduce workspace clutter by clearing this internally used variable once it has been used.

Contact us