资源简介

布谷鸟搜索(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

评论

共有 条评论

相关资源