布谷鸟优化算法 matlab,布谷鸟算法(Cuckoo Search,CS)MATLAB案例详细解析
一、布谷鸟算法理论
模拟退火算法(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案例详细解析相关推荐
- 布谷鸟算法(Cuckoo Search,CS)MATLAB案例详细解析
目录 一.布谷鸟算法理论 二.CS算法应用于函数优化 1.流程图 3.代码解析 3.1 主函数 Csmain.m 3.2 Levy飞行 func_levy.m 3.3 与上一代比较,返回较优的鸟巢 f ...
- 模拟退火算法(Simulated Annealing,SA)MATLAB案例详细解析
目录 一.理论 二.模拟退火算法应用于函数优化 1.流程图 2.代码解析 3.运行计算结果 二.模拟退火算法应用于旅行商问题(TSP) 1.流程图 2.代码解析 3.运行计算结果 一.理论 模拟退火算 ...
- 人工蜂群算法(Artificial Bee Colony, ABC)MATALAB代码详细解析
目录 一.人工蜂群算法理论 二.算法流程图 二.代码讲解 1. ABC.m文件 2.Sephere.m文件 3.RouletteWheelSelection.m文件 二.源码下载 该代码是Matlab ...
- C语言四川麻将算法,四川麻将中番种是如何计算的详细解析
同城游中的四川麻将里都是有番数的,不过对新手玩家而言,计番是个头疼的问题,那么麻将中有都哪些番数呢?现在赶紧来看看四川麻将番种是如何计算的详细解析吧. 四川麻将中基础牌型(格)与基本番数 平胡:普通的 ...
- 【算法】禁忌搜索算法(Tabu Search,TS)超详细通俗解析附C++代码实例
01 什么是禁忌搜索算法? 1.1 先从爬山算法说起 爬山算法从当前的节点开始,和周围的邻居节点的值进行比较. 如果当前节点是最大的,那么返回当前节点,作为最大值 (既山峰最高点):反之就用最高的邻居 ...
- cgns matlab,MATLABSimulink系统建模与仿真实验报告(详细解析)(word文档良心出品).docx...
MATLAB Simuli nk 电力系统建模与仿真 ******实验报告 ****** 姓名: 专业?电气工程及其自动化 班级: ******************* 学号: ********** ...
- 【GMM时间序列预测】基于matlab布谷鸟算法优化GMM时间序列预测【含Matlab源码 1244期】
⛄一.布谷鸟算法简介 布谷鸟算法,英文叫做Cuckoo search (CS algorithm).首先还是同样,介绍一下这个算法的英文含义, Cuckoo是布谷鸟的意思,啥是布谷鸟呢,是一种叫做布谷 ...
- 【优化求解】基于布谷鸟算法结合灰狼算法求解最优目标matlab代码
1 简介 布谷鸟搜索(Cuckoo Search, CS)算法是 2009 年 Xin-She Yang 与 Susash Deb 提出的一种新型的启发算法[61].算法灵感来源于一些布谷鸟种属(Cu ...
- 【灰色神经预测】基于布谷鸟算法优化灰色神经网络模型实现数据回归预测含Matlab源码
1 简介 人工神经网络已成功应用到许多领域,如模式识别.机器学习.信号处理和信息融合等,但是,如果神经网络的学习算法或拓扑结构选择不当,可能导致出现神经网络的预测准确度低的问题.为此,许多研究者开始将 ...
- [算法学习]模拟退火算法(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 ...
最新文章
- Error:Unsupported method: BaseConfig.getApplicationIdSuffix(). The version o
- 智销功能_Shiro权限框架
- Java-学习笔记-1-概述
- mc pe Linux服务器,MC 基岩版(PE) 服务器来了
- 第八周项目一-数组作数据成员(1)
- Cisco PIX防火墙配置命令大全
- 7道Python函数相关的练习题
- VsCode常用设置,新手必备!
- 2020德勤面试开始了吗_2020国考面试开始,近期面试公告汇总,附结构化小组面试流程...
- elon函数_看看Elon Musk的Hyperloop竞赛
- sa linux,sa | 搜索结果 | Linux运维部落
- 软考数据库系统工程师教程知识点总结
- win7计算机usb解除禁用,win7
- css行内样式的属性设置,css的外部样式的设置
- 多品种小批量产品怎么做精益生产?
- 国产高清卫星影像时代来了,打造中国版“谷歌地球”!
- 2021年工作报告词频词云分析
- android 获取粗略位置_android – 如何使用Wifi或GSM或GPS获取粗略的位置,以哪一个可用?...
- HTML中照片的各种常用属性
- Kaldi语音识别技术