目录

一、预备知识

1. 分布

2. 随机游走

二、设计思想

1. 设计思想概括

2. 布谷鸟行为分析

三、理想化规则

四、实现过程/基本流程

五、Matlab实现

1. 代码

2. 输出


一、预备知识

1. 分布

(1)Thin-detailed Distribution:以指数分布为分界线,x趋于无穷时,下降速率更快,如正态分布68-95-99.7

(2)Exponential Distribution:x趋于无穷时,指数分布以指数的速率下降并趋近于0

(3)Heavy-detailed Distribution:x趋于无穷时,下降速率慢于指数分布(离峰值较远的事件也有相当的概率发生)

① Fat-detailed Distribution:罕见的事件发生的概率虽然低,但是也要考虑到,如柯西分布;

② Long-detailed Distribution:如帕累托法则/二八定律

③ Subexponential Distribution

2. 随机游走

(1) 定义

在任意维度的空间里,一个点随机地向任意方向前进任意长度的距离。

(2) 举例

① Levy飞行

一类非高斯随机过程,其平稳增量服从莱维稳定分布。在飞行过程中,步长较小的短距离行走与偶尔较大步长的长距离行走相互交替,有利于增加种群多样性、扩大搜索范围,不至于陷入局部最优。每一步完全随机且各向同性,步长分布重尾分布。

② 布朗运动

步长分布正态分布。

二、设计思想

1. 设计思想概括

模拟布谷鸟的Levy飞行和巢寄生机制/寄生式育雏

2. 布谷鸟行为分析

(1)寄生式育雏

(2)积极的繁殖策略

(3)产蛋时机的把握

(4)Levy飞行:间歇无标度的搜索模式(一系列直线飞行和突然的90°转变)

三、理想化规则

1. 每只布谷鸟每次只下一个蛋, 并将其放入随机选择的巢中;

2. 具有优质蛋的最佳巢会被带到下一代中;

3. 可用的寄生巢数量固定,且宿主以概率Pa发现布谷鸟放的蛋;此时,宿主可以选择换巢或者消灭该蛋<=>n个巢以Pa的概率被新巢(新的随机解)替换。

P:基于上述3条规则,可以认为,鸟寻找鸟窝下单的过程就是在n维空间内寻找解的过程,鸟窝的好坏/蛋是否能被宿主孵化并茁壮成长象征着解的好坏

四、实现过程/基本流程

1. 初始化:目标函数f(x)、鸟巢个数n、最大迭代次数MaxGeneration、最大发现概率Pa,解空间上下界Lb与Ub等;

2. 随机产生初始解x(i)(鸟巢位置),计算相应的初始适应度值F(i),并记录当前的最优函数值;

3. 利用Levy飞行更新解(产生新的鸟蛋),计算相应的适应度值F(j);

4. 比较Fi与Fj适应度值,如果Fj(新解)更小,将该适应度值及鸟蛋所代表的解赋给原来的鸟巢x(i);

5. 判断鸟蛋是否会被发现:用随机数r与最大发现概率Pa比较,若r>Pa,被发现,宿主找新家,鸟巢位置x(i)随机改变,反之,则不变;

6. 对各解(鸟巢位置或者鸟巢中的鸟蛋)进行适应度值排序,保留最优适应度值的解(鸟巢位置或鸟巢中的鸟蛋);

7. 循环步骤3-6,直至达到最大迭代次数或者满足终止条件,则算法终止。

五、Matlab实现

1. 代码

%% CS 主函数%% 清空工作空间
clear;
close all;
clc;%% 计时区
tic%% STEP1 初始化参数
% Number of nests
n = 25;% Discovery rate of alien eggs/solutions
pa = 0.25;% Change this if you want to get better results
% Tolerance
Tol = 1.0e-5;  % Simple bounds of the search domain [-5,5]
% Lower bounds
nd = 2;
Lb = -5 * ones(1,nd);
% Upper bounds
Ub = 5 * ones(1,nd);
fitness = 10^10*ones(n,1);%% STEP2 随机产生初始解,并计算相应的适应度值
% Random initial solutions
for i = 1:nnest(i,:) = Lb + (Ub-Lb) .* rand(size(Lb));
end% Get the current best[fmin,bestnest,nest,fitness] = get_best_nest(nest,nest,fitness);%% STEP3 Levy飞行,开始更新
% Starting iterations
N_iter = 0;
while (fmin > Tol)% Generate new solutions (but keep the current best)new_nest = get_cuckoos(nest,bestnest,Lb,Ub);[fnew,best,nest,fitness] = get_best_nest(nest,new_nest,fitness);% Update the counterN_iter = N_iter + n;% Discovery and randomizationnew_nest = empty_nests(nest,Lb,Ub,pa) ;% Evaluate this set of solutions[fnew,best,nest,fitness] = get_best_nest(nest,new_nest,fitness);% Update the counter againN_iter = N_iter+n;% Find the best objective so farif fnew < fminfmin = fnew;bestnest = best;endscatter(N_iter,fmin,'p');hold on%trace(N_iter) = fmin;
end
% fmin_c = nonzeros(trace);%% STEP4 Display
disp(strcat('Total number of iterations =',num2str(N_iter)));
disp(strcat('最小适应度值:',num2str(fmin)));
disp('最优解:');
disp(bestnest)
%plot(fmin_c,'r-.');%% 计时区
toc

2. 输出

(1)结果输出:迭代次数+最小适应度值+最优解+算法运行时间

(2)图像输出:“迭代次数-适应度值”散点图

【群体智能】布谷鸟搜索算法相关推荐

  1. 【SVM回归预测】布谷鸟搜索算法优化SVM回归预测【含Matlab源码 1525期】

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

  2. 基于捕捉漂移布谷鸟搜索算法的函数寻优算法

    文章目录 一.理论基础 1.布谷鸟搜索算法 2.捕捉漂移布谷鸟搜索算法 (1)自适应 p a {p_a} pa​ (2)信息共享方法 (3)SDCS算法伪代码 二.仿真实验与结果分析 三.参考文献 一 ...

  3. 智能优化算法:布谷鸟搜索算法-附代码

    智能优化算法:布谷鸟搜索算法-附代码 文章目录 智能优化算法:布谷鸟搜索算法-附代码 1.算法原理 2.算法结果 3.参考文献 4.Matlab代码 摘要:谷鸟搜索算法(cuckoo search , ...

  4. MATLAB算法实战应用案例精讲-【智能优化算法】多目标布谷鸟搜索算法(MOCS) (附MATLAB代码实现)

    目录 前言 算法原理 算法思想 标准布谷鸟算法模型 多目标优化问题

  5. 基于启发式蝙蝠算法、粒子群算法、花轮询算法和布谷鸟搜索算法的换热器PI控制器优化(Matlab代码实现)

  6. 布谷鸟搜索算法的改进及其在优化问题中的应用(Matlab代码实现)

      

  7. 群体智能优化算法之布谷鸟搜索(CS)

    获取更多资讯,赶快关注上面的公众号吧! 文章目录 第六章 布谷鸟搜索[1] 6.1 介绍 6.2 人工布谷鸟搜索 6.2.1 随机变量 6.2.2 随机游走 6.2.2.1 幂律 6.2.3 赫维赛德 ...

  8. 【图像分割】基于布谷鸟算法实现二维Tsallis熵、kapur、oust多阈值图像分割附matlab代码

    1 内容介绍 本文介绍了一种基于布谷鸟算法的多级阈值(MT)算法.布谷鸟优化算法[CuckooSearch (CS)],也叫杜鹃搜索,是智能算法的其中一种,于2009年由剑桥大学Xin-SheYang ...

  9. 【SVM回归预测】布谷鸟算法优化SVM回归预测【含Matlab源码 1422期】

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

最新文章

  1. 如何快速使用Leangoo看板工具进行项目协作?
  2. 安徽师范大学计算机专业导师,安徽师范大学数学计算机科学学院导师介绍:罗永龙...
  3. ACE之Proactor模式使用实例
  4. php和asp.net下SQLite3的执行速度对比
  5. Python 爬虫开发:Ajax请求响应json案例
  6. MySQL-8.0.x 新特性之索引页合并
  7. mongodb如何快速进行版本升级
  8. sql 中实现打乱数据的排序
  9. 168.167Excle表列整数字符和字符整数的互相转化
  10. C# WebBrower1控件提示“该文档已被修改,是否保存修改结果”解决方法 .
  11. MySQL + MyBatis 批量插入时存在则忽略或更新记录
  12. 组装我的计算机社会实践活动,暑期电脑销售社会实践心得体会
  13. cbv继承view是哪个包_包你一眼就心动!两款帅爆国产轿车来袭,选谁都不错
  14. 微课|中学生可以这样学Python(例11.2):tkinter猜数游戏(1)
  15. Java和线性代数的关系_高等数学,线性代数与计算机的关系?
  16. UVA 1411 - Ants(二分图完美匹配)
  17. MySQL学习笔记(七)使用AutoMySQLBackup工具自动备份MySQL数据库
  18. 云计算时代的数据库研究
  19. 【剑指offer】31、栈的压入和弹出序列
  20. 联通服务器光信号亮红灯移动,光纤猫los红灯闪什么原因

热门文章

  1. 365天英语口语学习_01,起床
  2. 最新行政区划代码省市区数据库(2018年5月1日 )
  3. 什么是 MetaTrader 4(MT4) 以及如何使用它?
  4. SQL查询成绩表中的每科第三名
  5. Python 基础 驾考题库练习
  6. android:windowbackground 透明,windowIsTranslucent和windowBackground对比
  7. 大厂面试官喜欢这样问Redis,双写一致性、并发竞争、线程模型,我整理好了
  8. Juniper SSG恢复出厂默认值
  9. mysql如何删掉_请问如何把mysql干干净净的删掉?
  10. Spark---JVM调优之调节executor离堆内存与连接等待时长