一、布谷鸟算法理论

模拟退火算法(SA)、遗传算法(GA)、布谷鸟算法(CS)、人工蜂群算法(ABC)学习笔记—附MATLAB注释代码

二、CS算法应用于函数优化

1.流程图

3.代码解析

3.1 主函数 Csmain.m

% Script 布谷鸟算法,求解函数最小值

% @author zhaoyuqiang

%#ok Remove hints of syntax

%#ok

%#ok

clear all ;

close all ;

clc ;

N = 25; % 鸟巢的数量Number of nests(The scale of solution)

D = 10 ; % 问题的维度,一个鸟巢鸟蛋的个数 Dimensionality of solution

T =500 ; %迭代次数的上限 Number of iterations

Xmax = pi ;%%函数上限

Xmin = -pi ;%%函数下限

Pa = 0.25 ; % Probability of building a new nest(After host bird find exotic bird eggs)

nestPop = rand(N,D)*(Xmax-Xmin)+Xmin ; % 初始化寄主的鸟巢Random initial solutions

for t=1:T

levy_nestPop = func_levy(nestPop,Xmax,Xmin) ; % 通过levy飞行产生一个解Generate new solutions by Levy flights

nestPop = func_bestNestPop(nestPop,levy_nestPop); % 与上一代比较,更新适应度较优的鸟巢Choose a best nest among new and old nests

rand_nestPop = func_newBuildNest(nestPop,Pa,Xmax,Xmin); % 根据发现概率舍弃一个鸟巢并建立一个新鸟巢Abandon(Pa) worse nests and build new nests by (Preference random walk )

nestPop = func_bestNestPop(nestPop,rand_nestPop) ; %列出当前最佳的鸟巢 Choose a best nest among new and old nests

[~,index] = max(func_fitness(nestPop)) ; % Best nests更新当代最优鸟巢的位置

trace(t) = func_objValue(nestPop(index,:)) ;

end

[~,index] = max(func_fitness(nestPop)) ; % 查找当前最优鸟巢

%%%输出这个鸟巢里的每个鸟蛋,即是每个解

nestPop(index,:)

figure

plot(trace);

xlabel('迭代次数') ;

ylabel('适应度值') ;

title('适应度进化曲线') ;

3.2 Levy飞行 func_levy.m

说白了就是实现一个随机搜索的公式来更新鸟巢的位置,

Xt+1 = Xt + α \alphaα S

S就是服从Levy分布

Levy~u = t -β \betaβ ,1<= β \betaβ <=3的随机步长。

具体公式解析参考:

通俗易懂的布谷鸟算法与莱维飞行,(附求解函数最小值matlab源码)

function [ result ] = func_levy( nestPop,Xmax,Xmin)

%FUNC_LEVY : Update position of nest by using Levy flights

%@author : zhaoyuqiang

[N,D] = size(nestPop) ;

% Levy flights by Mantegna's algorithm

beta = 1.5 ;

alpha = 1 ;

sigma_u = (gamma(1+beta)*sin(pi*beta/2)/(beta*gamma((1+beta)/2)*2^((beta-1)/2)))^(1/beta) ;

sigma_v = 1 ;

u = normrnd(0,sigma_u,N,D) ;%(第一个参数代表均值,sigma参数代表标准差),生成N×D形式的正态分布的随机数矩阵。

v = normrnd(0,sigma_v,N,D) ;

step = u./(abs(v).^(1/beta)) ;

% alpha = 0.1.*(nestPop(randperm(N),:)-nestPop(randperm(N),:)); % Bad effect

nestPop = nestPop+alpha.*step ;

% Deal with bounds

nestPop(find(nestPop>Xmax)) = Xmax ; %#ok%查找大于Xmax的元素

nestPop(find(nestPop

3.3 与上一代比较,返回较优的鸟巢 func_bestNestPop.m

function [ nestPop ] = func_bestNestPop( nestPop,new_nestPop )

%FUNC_ 此处显示有关此函数的摘要

%@author zhaoyuqiang

index = find(func_fitness(nestPop)

3.4 根据发现概率,舍弃一个鸟巢并建立一个新鸟巢 func_newBuildNest.m

function [ nestPop ] = func_newBuildNest( nestPop ,Pa ,Xmax,Xmin)

%FUNC_NEWBUILDNEST new solutions are generated by using the similarity

% between the existing eggs/solutions and the host eggs/solutions with a discovery rate pa .

%@author zhaoyuqiang

[N,D] = size(nestPop) ;

%%根据发现概率发现鸟蛋,舍弃鸟窝

nestPop = nestPop+rand.*heaviside(rand(N,D)-Pa).*(nestPop(randperm(N),:)-nestPop(randperm(N),:));

% Deal with bounds

nestPop(find(nestPop>Xmax)) = Xmax ; %#ok建立新的鸟窝

nestPop(find(nestPop

3.5 目标函数

function [ result ] = func_objValue( pop )

%FUNC_OBJVALUE 计算目标函数

objValue = sum(pop.^2,2);

result = objValue ;

end

三、输出结果

适应度变化曲线

打印最优解

四、CS案例MATLAB源码下载

布谷鸟算法应用与函数优化详细解析代码以及参考资料.zip

布谷鸟优化算法 matlab,布谷鸟算法(Cuckoo Search,CS)MATLAB案例详细解析相关推荐

  1. 布谷鸟算法(Cuckoo Search,CS)MATLAB案例详细解析

    目录 一.布谷鸟算法理论 二.CS算法应用于函数优化 1.流程图 3.代码解析 3.1 主函数 Csmain.m 3.2 Levy飞行 func_levy.m 3.3 与上一代比较,返回较优的鸟巢 f ...

  2. 模拟退火算法(Simulated Annealing,SA)MATLAB案例详细解析

    目录 一.理论 二.模拟退火算法应用于函数优化 1.流程图 2.代码解析 3.运行计算结果 二.模拟退火算法应用于旅行商问题(TSP) 1.流程图 2.代码解析 3.运行计算结果 一.理论 模拟退火算 ...

  3. 人工蜂群算法(Artificial Bee Colony, ABC)MATALAB代码详细解析

    目录 一.人工蜂群算法理论 二.算法流程图 二.代码讲解 1. ABC.m文件 2.Sephere.m文件 3.RouletteWheelSelection.m文件 二.源码下载 该代码是Matlab ...

  4. C语言四川麻将算法,四川麻将中番种是如何计算的详细解析

    同城游中的四川麻将里都是有番数的,不过对新手玩家而言,计番是个头疼的问题,那么麻将中有都哪些番数呢?现在赶紧来看看四川麻将番种是如何计算的详细解析吧. 四川麻将中基础牌型(格)与基本番数 平胡:普通的 ...

  5. 【算法】禁忌搜索算法(Tabu Search,TS)超详细通俗解析附C++代码实例

    01 什么是禁忌搜索算法? 1.1 先从爬山算法说起 爬山算法从当前的节点开始,和周围的邻居节点的值进行比较. 如果当前节点是最大的,那么返回当前节点,作为最大值 (既山峰最高点):反之就用最高的邻居 ...

  6. cgns matlab,MATLABSimulink系统建模与仿真实验报告(详细解析)(word文档良心出品).docx...

    MATLAB Simuli nk 电力系统建模与仿真 ******实验报告 ****** 姓名: 专业?电气工程及其自动化 班级: ******************* 学号: ********** ...

  7. 【GMM时间序列预测】基于matlab布谷鸟算法优化GMM时间序列预测【含Matlab源码 1244期】

    ⛄一.布谷鸟算法简介 布谷鸟算法,英文叫做Cuckoo search (CS algorithm).首先还是同样,介绍一下这个算法的英文含义, Cuckoo是布谷鸟的意思,啥是布谷鸟呢,是一种叫做布谷 ...

  8. 【优化求解】基于布谷鸟算法结合灰狼算法求解最优目标matlab代码

    1 简介 布谷鸟搜索(Cuckoo Search, CS)算法是 2009 年 Xin-She Yang 与 Susash Deb 提出的一种新型的启发算法[61].算法灵感来源于一些布谷鸟种属(Cu ...

  9. 【灰色神经预测】基于布谷鸟算法优化灰色神经网络模型实现数据回归预测含Matlab源码

    1 简介 人工神经网络已成功应用到许多领域,如模式识别.机器学习.信号处理和信息融合等,但是,如果神经网络的学习算法或拓扑结构选择不当,可能导致出现神经网络的预测准确度低的问题.为此,许多研究者开始将 ...

  10. [算法学习]模拟退火算法(SA)、遗传算法(GA)、布谷鸟算法(CS)、人工蜂群算法(ABC)学习笔记---附MATLAB注释代码

    目录 1.模拟退火算法(Simulated Annealing,SA) 1.1 本质: 1.2 算法思想 1.3 SA流程图 1.4 模拟退火过程 1.5 SA解决TSP问题 1.6 SA改进方向 1 ...

最新文章

  1. Error:Unsupported method: BaseConfig.getApplicationIdSuffix(). The version o
  2. 智销功能_Shiro权限框架
  3. Java-学习笔记-1-概述
  4. mc pe Linux服务器,MC 基岩版(PE) 服务器来了
  5. 第八周项目一-数组作数据成员(1)
  6. Cisco PIX防火墙配置命令大全
  7. 7道Python函数相关的练习题
  8. VsCode常用设置,新手必备!
  9. 2020德勤面试开始了吗_2020国考面试开始,近期面试公告汇总,附结构化小组面试流程...
  10. elon函数_看看Elon Musk的Hyperloop竞赛
  11. sa linux,sa | 搜索结果 | Linux运维部落
  12. 软考数据库系统工程师教程知识点总结
  13. win7计算机usb解除禁用,win7
  14. css行内样式的属性设置,css的外部样式的设置
  15. 多品种小批量产品怎么做精益生产?
  16. 国产高清卫星影像时代来了,打造中国版“谷歌地球”!
  17. 2021年工作报告词频词云分析
  18. android 获取粗略位置_android – 如何使用Wifi或GSM或GPS获取粗略的位置,以哪一个可用?...
  19. HTML中照片的各种常用属性
  20. Kaldi语音识别技术

热门文章

  1. 微软更新补丁手动下载地址
  2. PHP安卓获取gpgga,这个单片机程序中 感觉GPS的 GPGGA这条信息没有被保存
  3. 联想 M7400 两种清零方法
  4. 【静态ip保姆级教程他来了】
  5. WPS Office政府机关单位专用版[安卓+Windows]
  6. 系统识别matlab,系统辨识MATLAB
  7. matlab 灰度图像矩阵,MatLab矩阵运算——图像灰度化
  8. 2015-2022年历年真题考研数学二难度概述
  9. 阿里代码规范pdf_5年老码农的代码规范,值得学习!
  10. IntelliJ IDEA 记学习笔《装阿里代码规范插件》