资源简介
布谷鸟搜索(Cuckoo Search),即杜鹃搜索,由剑桥大学杨新社教授和S.戴布(S.Deb)于2009年提出的一种新兴启发算法。 CS算法是通过模拟某些种属布谷鸟的寄生育雏(Brood Parasitism) ,来有效地求解最优化问题的算法。同时,CS也采用相关的Levy飞行搜索机制。研究表明,布谷鸟搜索比其他群体优化算法更有效。
代码片段和文件信息
% -----------------------------------------------------------------
% Cuckoo Search (CS) algorithm by Xin-She Yang and Suash Deb %
% Programmed by Xin-She Yang at Cambridge University %
% Programming dates: Nov 2008 to June 2009 %
% Last revised: Dec 2009 (simplified version for demo only) %
% -----------------------------------------------------------------
% Papers -- Citation Details:
% 1) X.-S. Yang S. Deb Cuckoo search via Levy flights
% in: Proc. of World Congress on Nature & Biologically Inspired
% Computing (NaBIC 2009) December 2009 India
% IEEE Publications USA pp. 210-214 (2009).
% http://arxiv.org/PS_cache/arxiv/pdf/1003/1003.1594v1.pdf
% 2) X.-S. Yang S. Deb Engineering optimization by cuckoo search
% Int. J. Mathematical Modelling and Numerical Optimisation
% Vol. 1 No. 4 330-343 (2010).
% http://arxiv.org/PS_cache/arxiv/pdf/1005/1005.2908v2.pdf
% ----------------------------------------------------------------%
% This demo program only implements a standard version of %
% Cuckoo Search (CS) as the Levy flights and generation of %
% new solutions may use slightly different methods. %
% The pseudo code was given sequentially (select a cuckoo etc) %
% but the implementation here uses Matlab‘s vector capability %
% which results in neater/better codes and shorter running time. %
% This implementation is different and more efficient than the %
% the demo code provided in the book by
% “Yang X. S. Nature-Inspired metaheuristic Algoirthms %
% 2nd Edition Luniver Press (2010). “ %
% --------------------------------------------------------------- %
% =============================================================== %
% Notes: %
% Different implementations may lead to slightly different %
% behavour and/or results but there is nothing wrong with it %
% as this is the nature of random walks and all metaheuristics. %
% -----------------------------------------------------------------
function [bestnestfmin]=cuckoo_search(n)
if nargin<1
% Number of nests (or different solutions)
n=25;
end
% 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
% Lower bounds
nd=15;
Lb=-5*ones(1nd);
% Upper bounds
Ub=5*ones(1nd);
% Random initial solutions
for i=1:n
nest(i:)=Lb+(Ub-Lb).*rand(size(Lb));
end
% Get the current best
fitness=10^10*ones(n1);
[fminbestnestnestfitness]=get_best_nest(nestnestfitness);
N_iter=0;
%% Starting iterations
while (fmin>Tol)
% Generate new solutions (but keep the current best)
new_nest=get_cuckoos(nestbestnestLbUb);
[fnewbestnestfitness]=get_best_nest(nestnew_nestfitness);
% Update the counter
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 6503 2014-11-10 10:36 cuckoo_search.m
评论
共有 条评论