## 2 部分代码

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Flower Pollination Algorithm for Multimodal Optimization (MFPA)%Jorge G醠vez, Erik Cuevas and Omar Avalos%%This is the line to execute the code:%%[mem,bestSol,bestFit,optima,FunctionCalls]=FPA([500.255002]);%FitFunc implements the function to be optimized%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function [mem,bestSol,bestFit,optima,FunctionCalls]=FPA(para)% Default parametersif nargin<1,   para=[50 0.25 500];   endn=para(1);           % Population sizep=para(2);           % Probabibility switchN_iter=para (3);  % Number of iterationsphase = 1; %First statephaseIte= [0.5,0.9,1.01]; %State vector%Deb Functiond = 1;Lb = 0;Ub = 1;optima =  [.1;.3;.5;.7;.9];% Initialize the populationfor i=1:n,  Sol(i,:)=Lb+(Ub-Lb).*rand(1,d);  Fitness(i)=fitFunc(Sol(i,:));  %%Evaluate fitness functionend% Initialice the memory[mem,bestSol,bestFit,worstF] = memUpdate(Sol,Fitness, [], zeros(1,d), 100000000, 0, phase,d,Ub,Lb);S = Sol;FunctionCalls = 0;% Main Loopfor ite = 1 : N_iter,                    %For each pollen gamete, modify each position acoording                    %to local or global pollination                    for i = 1 : n,                                % Switch probability                                if rand>p,                                            L=Levy(d);                                            dS=L.*(Sol(i,:)-bestSol);                                            S(i,:)=Sol(i,:)+dS;                                            S(i,:)=simplebounds(S(i,:),Lb,Ub);                                else                                            epsilon=rand;                                            % Find random flowers in the neighbourhood                                            JK=randperm(n);                                            % As they are random, the first two entries also random                                            % If the flower are the same or similar species, then                                            % they can be pollenated, otherwise, no action.                                            % Formula: x_i^{t+1}+epsilon*(x_j^t-x_k^t)                                            S(i,:)=S(i,:)+epsilon*(Sol(JK(1),:)-Sol(JK(2),:));                                            % Check if the simple limits/bounds are OK                                            S(i,:)=simplebounds(S(i,:),Lb,Ub);                                end                                Fitness(i)=fitFunc(S(i,:));                    end                    %Update the memory                    [mem,bestSol,bestFit,worstF] = memUpdate(S,Fitness,mem,bestSol,bestFit,worstF,phase,d,Ub,Lb);                   Sol = get_best_nest(S, mem, p);                   FunctionCalls = FunctionCalls + n;                   if ite/N_iter > phaseIte(phase)                        %Next evolutionary process stage                        phase = phase + 1;                        [m,~]=size(mem);                        %Depurate the memory for each stage                        mem = cleanMemory(mem);                        FunctionCalls = FunctionCalls + m;                   endend%Plot the solutions (mem) founded by the multimodal frameworkx = 0:.01:1;y = ((sin(5.*pi.*x)).^ 6);plot(x,y)hold onplot(mem(:,1),-mem(:,2),'r*');

## 4 参考文献

[1]牛庆、曹爱民、陈潇一、周冬. 基于花朵授粉算法和BP神经网络的短期负荷预测[J]. 电网与清洁能源, 2020, 36(10):5.