1 简介
为了提高核极限学习机(KELM)的分类正确率,采用哈里斯鹰算法(HHO)对惩罚系数,宽度参数两个参数进行优化.首先,根据乳腺良恶性肿瘤数据库训练集并利用哈里斯鹰算法优化核极限学习机;然后,通过HHO-KELM和KELM对测试集进行分类诊断;最后,对比分析HHO-KELM和KELM的分类性能,测试结果表明,HHO-KELM的总体诊断正确率相较于KELM提高了10%,且恶性肿瘤的诊断正确率明显优于KELM.
2 部分代码
% Developed in MATLAB R2013b% Source codes demo version 1.0% _____________________________________________________% Main paper:% Harris hawks optimization: Algorithm and applications% Ali Asghar Heidari, Seyedali Mirjalili, Hossam Faris, Ibrahim Aljarah, Majdi Mafarja, Huiling Chen% Future Generation Computer Systems,% DOI: https://doi.org/10.1016/j.future.2019.02.028% https://www.sciencedirect.com/science/article/pii/S0167739X18313530% _____________________________________________________% You can run the HHO code online at codeocean.com https://doi.org/10.24433/CO.1455672.v1% You can find the HHO code at https://github.com/aliasghar68/Harris-hawks-optimization-Algorithm-and-applications-.git% _____________________________________________________% Author, inventor and programmer: Ali Asghar Heidari,% PhD research intern, Department of Computer Science, School of Computing, National University of Singapore, Singapore% Exceptionally Talented Ph. DC funded by Iran's National Elites Foundation (INEF), University of Tehran% 03-03-2019% Researchgate: https://www.researchgate.net/profile/Ali_Asghar_Heidari% e-Mail: as_heidari@ut.ac.ir, aliasghar68@gmail.com,% e-Mail (Singapore): aliasgha@comp.nus.edu.sg, t0917038@u.nus.edu% _____________________________________________________% Co-author and Advisor: Seyedali Mirjalili%% e-Mail: ali.mirjalili@gmail.com% seyedali.mirjalili@griffithuni.edu.au%% Homepage: http://www.alimirjalili.com% _____________________________________________________% Co-authors: Hossam Faris, Ibrahim Aljarah, Majdi Mafarja, and Hui-Ling Chen% Homepage: http://www.evo-ml.com/2019/03/02/hho/% _____________________________________________________%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Harris's hawk optimizer: In this algorithm, Harris' hawks try to catch the rabbit.% T: maximum iterations, N: populatoin size, CNVG: Convergence curve% To run HHO: [Rabbit_Energy,Rabbit_Location,CNVG]=HHO(N,T,lb,ub,dim,fobj)function [Rabbit_Energy,Rabbit_Location,CNVG]=HHO(N,T,lb,ub,dim,fobj)disp('HHO is now tackling your problem')tic% initialize the location and Energy of the rabbitRabbit_Location=zeros(1,dim);Rabbit_Energy=inf;%Initialize the locations of Harris' hawksX=initialization(N,dim,ub,lb);CNVG=zeros(1,T);t=0; % Loop counterwhile t<Tfor i=1:size(X,1)% Check boundriesFU=X(i,:)>ub;FL=X(i,:)<lb;X(i,:)=(X(i,:).*(~(FU+FL)))+ub.*FU+lb.*FL;% fitness of locationsfitness=fobj(X(i,:));% Update the location of Rabbitif fitness<Rabbit_EnergyRabbit_Energy=fitness;Rabbit_Location=X(i,:);endendE1=2*(1-(t/T)); % factor to show the decreaing energy of rabbit% Update the location of Harris' hawksfor i=1:size(X,1)E0=2*rand()-1; %-1<E0<1Escaping_Energy=E1*(E0); % escaping energy of rabbitif abs(Escaping_Energy)>=1%% Exploration:% Harris' hawks perch randomly based on 2 strategy:q=rand();rand_Hawk_index = floor(N*rand()+1);X_rand = X(rand_Hawk_index, :);if q<0.5% perch based on other family membersX(i,:)=X_rand-rand()*abs(X_rand-2*rand()*X(i,:));elseif q>=0.5% perch on a random tall tree (random site inside group's home range)X(i,:)=(Rabbit_Location(1,:)-mean(X))-rand()*((ub-lb)*rand+lb);endelseif abs(Escaping_Energy)<1%% Exploitation:% Attacking the rabbit using 4 strategies regarding the behavior of the rabbit%% phase 1: surprise pounce (seven kills)% surprise pounce (seven kills): multiple, short rapid dives by different hawksr=rand(); % probablity of each eventif r>=0.5 && abs(Escaping_Energy)<0.5 % Hard besiegeX(i,:)=(Rabbit_Location)-Escaping_Energy*abs(Rabbit_Location-X(i,:));endif r>=0.5 && abs(Escaping_Energy)>=0.5 % Soft besiegeJump_strength=2*(1-rand()); % random jump strength of the rabbitX(i,:)=(Rabbit_Location-X(i,:))-Escaping_Energy*abs(Jump_strength*Rabbit_Location-X(i,:));end%% phase 2: performing team rapid dives (leapfrog movements)if r<0.5 && abs(Escaping_Energy)>=0.5, % Soft besiege % rabbit try to escape by many zigzag deceptive motionsJump_strength=2*(1-rand());X1=Rabbit_Location-Escaping_Energy*abs(Jump_strength*Rabbit_Location-X(i,:));if fobj(X1)<fobj(X(i,:)) % improved move?X(i,:)=X1;else % hawks perform levy-based short rapid dives around the rabbitX2=Rabbit_Location-Escaping_Energy*abs(Jump_strength*Rabbit_Location-X(i,:))+rand(1,dim).*Levy(dim);if (fobj(X2)<fobj(X(i,:))), % improved move?X(i,:)=X2;endendendif r<0.5 && abs(Escaping_Energy)<0.5, % Hard besiege % rabbit try to escape by many zigzag deceptive motions% hawks try to decrease their average location with the rabbitJump_strength=2*(1-rand());X1=Rabbit_Location-Escaping_Energy*abs(Jump_strength*Rabbit_Location-mean(X));if fobj(X1)<fobj(X(i,:)) % improved move?X(i,:)=X1;else % Perform levy-based short rapid dives around the rabbitX2=Rabbit_Location-Escaping_Energy*abs(Jump_strength*Rabbit_Location-mean(X))+rand(1,dim).*Levy(dim);if (fobj(X2)<fobj(X(i,:))), % improved move?X(i,:)=X2;endendend%%endendt=t+1;CNVG(t)=Rabbit_Energy;% Print the progress every 100 iterations% if mod(t,100)==0% display(['At iteration ', num2str(t), ' the best fitness is ', num2str(Rabbit_Energy)]);% endendtocend% ___________________________________function o=Levy(d)beta=1.5;sigma=(gamma(1+beta)*sin(pi*beta/2)/(gamma((1+beta)/2)*beta*2^((beta-1)/2)))^(1/beta);u=randn(1,d)*sigma;v=randn(1,d);step=u./abs(v).^(1/beta);o=step;end
3 仿真结果

4 参考文献
[1]吴丁杰, 温立书. 一种基于哈里斯鹰算法优化的核极限学习机[J]. 长江信息通信, 2021, 34(11):3.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。










