【智能优化算法】基于三重动态调整的花授粉算法求解单标目优化问题附matlab代码

1 简介

针对花授粉算法存在的收敛速度慢,易陷入局部最优及收敛精度低等缺点,提出了基于三重动态调整的改进花授粉算法.采用动态转换概率切换算法的搜索模式,在全局搜索更新机制中引入新型动态因子,并在局部开发更新机制中引入正余弦步长因子.通过对7个测试函数的仿真实验结果和与FPA,CS,ASCSA等算法相比,表明改进的花授粉算法具有更强的全局搜索能力和跳出局部最优能力.

2 部分代码

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%Flower Pollination Algorithm for Multimodal Optimization (MFPA)

%%This is the line to execute the code:

%%[mem,bestSol,bestFit,optima,FunctionCalls]=FPA([50 0.25 500 2]);

%FitFunc implements the function to be optimized

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function [mem,bestSol,bestFit,optima,FunctionCalls]=FPA(para)

% Default parameters

if nargin<1,

   para=[50 0.25 500];   

end

n=para(1);           % Population size

p=para(2);           % Probabibility switch

N_iter=para (3);  % Number of iterations

phase = 1; %First state

phaseIte= [0.5,0.9,1.01]; %State vector

%Deb Function

d = 1;

Lb = 0;

Ub = 1;

optima =  [.1;.3;.5;.7;.9];

% Initialize the population

for i=1:n,

  Sol(i,:)=Lb+(Ub-Lb).*rand(1,d);

  Fitness(i)=fitFunc(Sol(i,:));  %%Evaluate fitness function

end

% Initialice the memory

[mem,bestSol,bestFit,worstF] = memUpdate(Sol,Fitness, [], zeros(1,d), 100000000, 0, phase,d,Ub,Lb);

S = Sol;

FunctionCalls = 0;

% Main Loop

for 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;

                   end

end

%Plot the solutions (mem) founded by the multimodal framework

x = 0:.01:1;

y = ((sin(5.*pi.*x)).^ 6);

plot(x,y)

hold on

plot(mem(:,1),-mem(:,2),'r*');

3 仿真结果

4 参考文献

[1]洪露, 贺兴时, 杨新社. 基于三重动态调整的花授粉算法[J]. 西安工程大学学报, 2021, 35(2):7.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。完整代码获取关注微信公众号天天matlab

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,718评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,683评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,207评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,755评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,862评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,050评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,136评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,882评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,330评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,651评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,789评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,477评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,135评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,864评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,099评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,598评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,697评论 2 351

推荐阅读更多精彩内容