目录
一、布谷鸟算法理论
- 一、布谷鸟算法理论
- 二、CS算法应用于函数优化
- 1.流程图
- 3.代码解析
- 3.1 主函数 Csmain.m
- 3.2 Levy飞行 func_levy.m
- 3.3 与上一代比较,返回较优的鸟巢 func_bestNestPop.m
- 3.4 根据发现概率,舍弃一个鸟巢并建立一个新鸟巢 func_newBuildNest.m
- 3.5 目标函数
- 3.6 计算适应度函数
- 三、输出结果
- 四、CS案例MATLAB源码下载
模拟退火算法(SA)、遗传算法(GA)、布谷鸟算法(CS)、人工蜂群算法(ABC)学习笔记—附MATLAB注释代码
二、CS算法应用于函数优化 1.流程图% 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
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?