野狗智能优化算法(Dingo Optimization Algorithm DOA)是期刊“MATHEMATICAL PROBLEMS IN ENGINEERING”的2021年智能优化算法
01.引言
野狗智能优化算法(Dingo Optimization Algorithm DOA)该算法的灵感来自野狗的狩猎策略,即迫害攻击,分组策略和清除行为。为了提高该方法的整体效率和性能,在DOA中制定了与四个规则相关联的三种搜索策略。这些策略和规则在搜索空间的强化(开发)和多样化(探索)之间提供了一个很好的平衡。
02.优化算法的流程
3.论文中算法对比图
04.部分代码
function [vMin,theBestVct,Convergence_curve]=DOA(SearchAgents_no,Max_iter,lb,ub,dim,fobj)
P= 0.5; % Hunting or Scavenger? rate. See section 3.0.4, P and Q parameters analysis
Q= 0.7; % Group attack or persecution?
beta1= -2 + 4* rand(); % -2 < beta < 2 Used in Eq. 2,
beta2= -1 + 2* rand(); % -1 < beta2 < 1 Used in Eq. 2,3, and 4
naIni= 2; % minimum number of dingoes that will attack
naEnd= SearchAgents_no /naIni; % maximum number of dingoes that will attack
na= round(naIni + (naEnd-naIni) * rand()); % number of dingoes that will attack, used in Attack.m Section 2.2.1: Group attack
Positions=initialization(SearchAgents_no,dim,ub,lb);for i=1:size(Positions,1)Fitness(i)=fobj(Positions(i,:)); % get fitness end
[vMin minIdx]= min(Fitness); % the min fitness value vMin and the position minIdx
theBestVct= Positions(minIdx,:); % the best vector
[vMax maxIdx]= max(Fitness); % the max fitness value vMax and the position maxIdx
Convergence_curve=zeros(1,Max_iter);
Convergence_curve(1)= vMin;
survival= survival_rate(Fitness,vMin,vMax); % Section 2.2.4 Dingoes'survival rates
t=0;% Loop counter
% Main loop
for t=1:Max_iter for r=1:SearchAgents_nosumatory=0;if rand() < P % If Hunting?sumatory= Attack( SearchAgents_no, na, Positions, r ); % Section 2.2.1, Strategy 1: Part of Eq.2 if rand() < Q % If group attack? v(r,:)= beta1 * sumatory-theBestVct; % Strategy 1: Eq.2else % Persecutionr1= round(1+ (SearchAgents_no-1)* rand()); % v(r,:)= theBestVct + beta1*(exp(beta2))*((Positions(r1,:)-Positions(r,:))); % Section 2.2.2, Strategy 2: Eq.3end else % Scavengerr1= round(1+ (SearchAgents_no-1)* rand());v(r,:)= (exp(beta2)* Positions(r1,:)-((-1)^getBinary)*Positions(r,:))/2; % Section 2.2.3, Strategy 3: Eq.4endif survival(r) <= 0.3 % Section 2.2.4, Algorithm 3 - Survival procedureband=1; while band r1= round(1+ (SearchAgents_no-1)* rand());r2= round(1+ (SearchAgents_no-1)* rand());if r1 ~= r2 band=0;endendv(r,:)= theBestVct + (Positions(r1,:)-((-1)^getBinary)*Positions(r2,:))/2; % Section 2.2.4, Strategy 4: Eq.6end % Return back the search agents that go beyond the boundaries of the search space . Flag4ub=v(r,:)>ub;Flag4lb=v(r,:)<lb;v(r,:)=(v(r,:).*(~(Flag4ub+Flag4lb)))+ub.*Flag4ub+lb.*Flag4lb;% Evaluate new solutionsFnew= fobj(v(r,:));% Update if the solution improvesif Fnew <= Fitness(r)Positions(r,:)= v(r,:);Fitness(r)= Fnew;endif Fnew <= vMintheBestVct= v(r,:);vMin= Fnew;end endConvergence_curve(t+1)= vMin; [vMax maxIdx]= max(Fitness);survival= survival_rate( Fitness, vMin, vMax); % Section 2.2.4 Dingoes'survival ratesend
%_____________________________________________________End DOA Algorithm]%
04.本代码效果图
获取代码请关注MATLAB科研小白的个人公众号(即文章下方二维码),并回复智能优化算法本公众号致力于解决找代码难,写代码怵。各位有什么急需的代码,欢迎后台留言~不定时更新科研技巧类推文,可以一起探讨科研,写作,文献,代码等诸多学术问题,我们一起进步。