布谷鸟搜索(CS)算法

1、本质

寻找最值的算法

2、算法的基本思想

此算法结合莱维飞行寻找函数最小值。其中莱维飞行简单来说就是产生一种随机步长的算法,以短步长为主,偶尔产生长步长,避免函数新解取到被求解方程式的局部最小值。

求解最小值的过程中出现最优解的迭代过程主要有两种迭代思路(结合自然界布谷鸟的借巢育子的行为):(1)采用莱维飞行的路径来寻找较优解(布谷鸟首先采用莱维飞行找窝下蛋);(2)找到的较优解有一定的概率Pa被替换,替换后的解最为新的较优解(宿主鸟发现假蛋,将假蛋移除损坏或者重新建立新的巢穴)。两种迭代公式如下:

3、运用CS算法求解函数最优解的操作步骤

  1. 目标函数

  1. 产生n个解的初始集合-------(产生n个寄主的初始群落)

  1. While(t<最大步长)

  1. 随机通过莱维飞行产生一个解

  1. 评估解的质量或者目标函数的值

  1. 从n个解中随机选取一个

  1. 比较两个解,找出一个较优解,作为新解。

  1. 一部分的解会存在一定的概率(Pa)被抛弃,由(2)式产生新解

保留最优解

4、Matlab仿真程序的设计

(1)莱维飞行程序func_levy.m

normrnd函数:生成服从正态分布的随机数;R=normrnd(MU,SIGMA):生成服从正态分布(MU参数代表均值,SIGMA参数代表标准差)的随机数。R=normrnd(MU,SIGMA,m,n):生成m×n形式的正态分布的随机数矩阵。

Mantegna方法,生成服从萊维分布的随机步长的方法如下:

(2)主函数Csmain.m

参数设置;

初始化寄主的鸟巢,随机产生一个解;

通过levy飞行产生一个解;

与上一代比较,更新适应度较优的鸟巢;

根据发现概率舍弃一个鸟巢并建立一个新鸟巢;

列出当前最佳的鸟巢;

更新当代最优鸟巢的位置;

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

matlab代码分享见下节。有这么问题欢迎小伙伴和我一起讨论!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

武力TYの武

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值