1 简介

2015 年,Hussain Shareef 等基于闪电的机理提出了一种新型的启发式优化算法———闪电搜索算法( lightning search algorithm,LSA) ,该算法具有调节参数少、收敛精度高和全局寻优能力强等优点,已在函数优化、旅行商问题寻优等方面得到应用。

2 部分代码

%{
Lightning Search Algorithm (LSA)Platform: Matlab 2012a,2013a   Cite this algorithm as;
[1]. Hussain Shareef , Ahmad Asrul Ibrahim, Ammar Hussein Mutlag, Lightning Search Algorithm,
Applied Soft Computing 36 (2015) 315?333.Copyright Notice
Copyright (c) 2015, Hussain Shareef and Ahmad Asrul Ibrahim
All rights reserved.Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.* Redistributions in binary form must reproduce the copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distributionTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.%}clc
clear all
close alltic;%start stopwatch
F_index =6; % Function 1-6 % Refer to other test function 7-24 in [1].
[low,up,dim]=test_functions_range(F_index);N = 20; % population size/number of agents
D = dim; % number of dimension
T = 100; % maximum number of iteration% Set upper bound & lower bound
if size(up,2)==1UB = ones(1,D).*up;LB = ones(1,D).*low;
end
if size(up,2)>1UB = up;LB = low;
end%randomly create 1st population
for d = 1:DDpoint(:,d)= rand(N,1)*(UB(d)-LB(d))+LB(d);
endch_time = 0; % reset
max_ch_time = 10;
fit_old = 10^10*(ones(1,N));
direct = sign(unifrnd(-1,1,1,dim));for t = 1:T
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Evaluate performancefit = evaluateF(Dpoint,F_index); Ec = fit;% update channelch_time = ch_time+1;if ch_time >= max_ch_time[Ms ds]=sort(Ec,'ascend');Dpoint(ds(N),:) = Dpoint(ds(1),:); % Eliminate the worst channelEc(ds(N)) = Ec(ds(1)); % Update  ch_time = 0; % resetend% Rangking the fitness value[Ms ds]=sort(Ec,'ascend');best = Ec(ds(1));worst = Ec(ds(N));Energy = 2.05 - 2*exp(-5*(T-t)/T);% Update energy% update directionfor d = 1:DDpoint_test = Dpoint(ds(1),:);Dpoint_test(d) = Dpoint_test(d)+direct(d)*0.005*(UB(d)-LB(d));fv_test = evaluateF(Dpoint_test,F_index);if fv_test < best % If better, +ve directiondirect(d) = direct(d);elsedirect(d) = -1*direct(d);endend% update positionfor i = 1:Ndist=Dpoint(i,:)-Dpoint(ds(1),:);for d = 1:Dif Dpoint(i,:)==Dpoint(ds(1),:)Dpoint_temp(d) = Dpoint(i,d)+direct(d)*abs(normrnd(0,Energy));elseif dist(d)<0Dpoint_temp(d) = Dpoint(i,d)+exprnd(abs(dist(d)));elseDpoint_temp(d) = Dpoint(i,d)-exprnd(dist(d));endendif (Dpoint_temp(d)>UB(d))||(Dpoint_temp(d)<LB(d))Dpoint_temp(d) = rand(1)*(UB(d)-LB(d))+LB(d); % Re-initializedendendfv = evaluateF(Dpoint_temp,F_index);if fv < Ec(i)Dpoint(i,:) = Dpoint_temp;Ec(i) = fv;% Focking procedureif rand < 0.01for d = 1:D Dpoint_fock(d) = UB(d)+LB(d)-Dpoint_temp(d);% Fockingendfock_fit = evaluateF(Dpoint_fock,F_index); % Evaluateif fock_fit < Ec(i) Dpoint(i,:) = Dpoint_fock; % Replace the channelEc(i) = fock_fit;endendend   endif best == worstbreakend
% record the performancefitness(t) = min(fit);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
end
elapsed_time=toc; % time taken for this algorithm
% select the optimal value
grandmin = min(fitness);
y = fitness;
x = 1:length(y);
plot(x,y,'Linewidth',2)
xlabel('No of Iteration');
ylabel('Fitness Value');
axis([0 max(x) min(y) max(y)]);
fprintf(1,'Optimal value = %f\n', grandmin);

3 仿真结果

4 参考文献

[1]卢玉婷. 元启发式闪电搜索算法及应用研究[D]. 广西大学, 2019.

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

部分理论引用网络文献,若有侵权联系博主删除。

【闪电搜索算法】基于闪电搜索算法求解单目标优化问题matlab代码相关推荐

  1. 【优化求解】基于自适应模拟退火粒子群优化算法求解单目标优化问题matlab代码

    1 简介 针对PSO算法在求解问题的优化问题中易陷入局部收敛且收敛速度较慢等缺陷,引入一种初始化改进策略,并将模拟退火算法与PSO算法相结合,提出了一种全新的算法.该算法将寻优过程分为两个阶段:为了提 ...

  2. 【蚁狮算法】基于柯西变异的蚁狮优化算法求解单目标优化问题matlab代码

    1 简介 针对蚁狮优化算法较易陷入局部最优停滞,收敛精度低以及收敛速度较慢等问题,将自适应t分布的柯西变异融入到蚁狮优化算法中,提出了基于柯西变异的蚁狮优化算法(CALO).该算法采用轮盘赌的方法挑选 ...

  3. 【优化求解】基于蝗虫算法求解单目标问题附matlab代码

    1 简介 蝗虫算法( Grasshopper Optimization Algorithm,GOA ) 是 由 Saremi 等[1]于2017 年提出的一种元启发式仿生优化算法.具体原理如下: 2 ...

  4. 【优化求解】基于蜘蛛猴算法求解单目标优化问题matlab代码

    1 简介 蜘蛛猴算法( SMO) 是 2014 年由 Jagdish Chand Bansal 等学者提出的,是一种建立在对蜘蛛猴群觅食行为建模基础上产生的新型解决优化问题的数值优化方法. 根据原始 ...

  5. 【樽海鞘算法】基于樽海鞘算法求解单目标问题附matlab代码(Salp Swarm Algorithm,SSA)

    1 简介 2 部分代码 %_________________________________________________________________________________% Salp ...

  6. 【优化求解】基于柯西变异和自适应权重优化的蝴蝶算法求解单目标优化问题matlab代码

    1 简介 针对基本蝴蝶优化算法(Butterfly Optimization Algorithm,BOA)存在的收敛精度较低.容易陷入局部最优解的问题,提出柯西变异和自适应权重优化的蝴蝶算法(Cauc ...

  7. 【优化求解】基于收敛因子和黄金正弦指引机制的蝴蝶优化算法求解单目标优化问题matlab代码(AGSABOA)

    1 简介 针对蝴蝶优化算法(butterfly optimization algorithm,BOA)中存在的局部开采和全局探索能力不均衡,易陷入局部最优值,收敛精度低等缺陷,提出收敛因子和黄金正弦指 ...

  8. 【智能优化算法】基于融合莱维飞行与黄金正弦的蚁狮算法求解单目标优化问题matlab代码

    1 简介 针对蚁狮优化算法较易陷入局部最优停滞.收敛精度低以及收敛速度较慢等问题,将莱维飞行机制和黄金正弦算法融合到蚁狮优化算法中,提出了融合莱维飞行与黄金正弦的蚁狮优化算法( LGSALO) .该算 ...

  9. 【蚁狮算法】基于具有自适应边界与最优引导的莱维飞行蚁狮优化算法(ABLALO)求解单目标优化问题matlab代码

    1 简介 针对蚁狮算法存在探索与开发能力不平衡的缺点,提出了具有自适应边界与最优引导的莱维飞行改进算法.首先蚁狮调整边界范围,蚂蚁做莱维飞行,以此平衡探索与开发能力;其次较差蚁狮做高斯变异,并通过自适 ...

最新文章

  1. LeetCode 547. Friend Circles--Python解法--笔试算法题
  2. 结构控制Switch Case
  3. 马斯克公布火星太空船最新照片:施工已达最后一步,10月有望正式推出
  4. redis 未授权访问利用 两种方式
  5. npm命令 VS yarn命令
  6. 【安全牛学习笔记】SQLMAP自动注入-REQUEST
  7. mysql语句的左外链接_MySQL中的JOIN连接
  8. 单片机小白学步系列(一) 单片机的前世今生
  9. inflate简介,LayoutInflater和inflate()方法的用法
  10. php模板意思,php中的 是什么意思
  11. lingo与matlab部分常用函数总结
  12. 0322Private strand flush not complete
  13. html5 音频事件,HTML5中视频和音频核心事件的相关研究
  14. Android 应用上线安卓市场
  15. 【GEE笔记】最大类间方差法(otsu、大津法)算法实现——计算阈值、图像二值化分割
  16. Linux version 4.19.90-2003.4.0.0036.oe1.aarch64安装carbonData
  17. 可以去视频水印的软件 抖音的玩法和技巧图解
  18. 用计算机和电视机组成家庭影院,如何让我的电脑连上我的家庭影院?
  19. python在线翻译小程序_Python爬虫学习之翻译小程序
  20. Springboot 日志、配置文件、接口数据脱敏

热门文章

  1. node-exporter安装
  2. SpringBoot+MyBatisPlus+Thymeleaf+AdminLTE增删改查实战
  3. 2017年终总结,毕业和工作
  4. 【济州岛新任市长支持优秀ICO项目】
  5. redis下载(windows版)
  6. Centos7安装使用libvirt
  7. supermap新建数据源_supermap iDesktop 处理数据集及生成场景缓存
  8. 接口测试——HtmlUnit、OkHttp
  9. 汇编语言:AX、BX、CX、DX寄存器知识点梳理
  10. CIIP是基于XAF开发的开源信息系统框架