【Matlab】智能优化算法_蜻蜓优化算法DA

  • 1.背景介绍
  • 2.灵感
  • 3.公式推导
    • 3.1 勘探和开发操作
  • 4.算法流程图
  • 5.文件结构
  • 6.伪代码
  • 7.详细代码及注释
    • 7.1 DA.m
    • 7.2 distance.m
    • 7.3 func_plot.m
    • 7.4 Get_Functions_details.m
    • 7.5 initialization.m
    • 7.5 Levy.m
    • 7.5 main.m
  • 8.运行结果
  • 9.参考文献

1.背景介绍

提出了一种新的群智能优化技术——蜻蜓算法。DA算法的主要灵感来源于自然界中蜻蜓的静态和动态群集行为。优化的两个重要阶段,探索和开发,是通过建模蜻蜓在导航、寻找食物和躲避敌人时的社交互动来设计的。

2.灵感

蜻蜓是一种奇特的昆虫。全世界有近3000种不同种类的这种昆虫。如图1所示,蜻蜓的生命周期包括两个主要里程碑:若虫和成虫。它们一生中的大部分时间都在若虫身上度过,并经过变质作用成为成虫。

蜻蜓被认为是捕食自然界中几乎所有其他小昆虫的小型食肉动物。蜻蜓也捕食其他海洋昆虫,甚至是小型鱼类。蜻蜓的有趣之处在于它们独特而罕见的群集行为。蜻蜓群集的目的只有两个:狩猎和迁徙。前者被称为静态(进食)群体,后者被称为动态(迁徙)群体。
在静止的群体中,蜻蜓组成小团体,在一小块区域内来回飞行,捕食蝴蝶和蚊子等其他飞行猎物。飞行轨迹的局部运动和突变是静止蜂群的主要特征。然而,在动态群中,大量的蜻蜓会在长距离内向一个方向移动。
DA算法的主要灵感来源于静态和动态群集行为。这两种群集行为与使用元启发式优化的两个主要阶段非常相似:探索和开发。蜻蜓会产生亚群,并以静态群的形式飞越不同的区域,这是探索阶段的主要目标。然而,在静态群体中,蜻蜓以更大的群体沿着一个方向飞行,这在开发阶段是有利的。这两个阶段在以下部分中进行了数学实现。

3.公式推导

3.1 勘探和开发操作

蜂群的行为遵循三个基本原理

  • 分离,是指个体与附近其他个体之间的静态碰撞避免。
  • 对齐,表示个体与附近其他个体的速度匹配。
  • 凝聚力,指的是个人倾向于社区的中心。

任何蜂群的主要目标都是生存,所以所有的个体都应该被吸引到食物来源和分散外部敌人的注意力。考虑到这两种行为,群体中个体的位置更新有五个主要因素,如图2所示。

这些行为的数学模型如下:分离计算如下

其中X是当前个体的位置,Xj表示第j个相邻个体的位置并且N是相邻个体的数量。路线计算如下:

其中Xj表示第j个相邻个体的速度。内聚力计算如下:

其中X是当前个体的位置,N是邻域的数量,Xj表示第j个相邻个体的位置。

对食物来源的吸引力计算如下:

其中X是当前个人的位置,X+显示食物来源的位置。
向外分散敌人注意力的计算方法如下:

其中X是当前个人的位置,X-表示敌人的位置。
本文假设蜻蜓的行为是这五种矫正模式的结合。
为了更新人工蜻蜓在搜索空间中的位置并模拟它们的运动,考虑了两个向量:步长(△X)和位置(X)。步长向量类似于粒子群算法中的速度向量,DA算法是在粒子群算法框架的基础上开发的。步长矢量显示了蜻蜓的运动方向,定义如下(注意,人工蜻蜓的位置更新模型是在一维中定义的,但引入的方法可以扩展到更高的维度):

其中s表示分离权重,Si表示第i个个体的分离,a是排列权重,a是第i个个人的排列,c表示附着权重,Ci是第i个人的内聚力,f是食物因子,Fi是第i个个体的食物源,e是敌人因子,Ei是第i-个个体的敌人位置,w是惯性权重,t是迭代计数器。
在计算步长矢量之后,位置矢量计算如下:

其中t是当前迭代。
通过分离、对齐、内聚、食物和敌人因素(s、a、c、f和e),可以在优化过程中实现不同的探索和探索行为。
蜻蜓的邻居非常重要,因此假设每只人工蜻蜓周围都有一定半径的邻居(2D空间中的圆圈、3D空间中的球体或nD空间中的超球体)。使用所提出的数学模型,蜻蜓随着邻域半径的增加而群集行为的一个例子如图3所示。

如前一小节所述,蜻蜓只表现出两种类型的群体:静态和动态,如图4所示。从这张图中可以看出,蜻蜓倾向于对齐飞行,同时在动态的群体中保持适当的分离和凝聚力。然而,在一个静止的群体中,结盟度很低,而攻击猎物的凝聚力很高。因此,我们在探索搜索空间时为蜻蜓分配高对齐和低内聚权重,在开发搜索空间时分配低对齐和高内聚权重。对于勘探和开发之间的过渡,邻域的半径与迭代次数成比例地增加。
平衡勘探和开发的另一种方法是在优化过程中自适应地调整群集因子(s、a、c、f、e和w)。

这里可能会出现一个问题,即如何在优化过程中保证蜻蜓的收敛性。为了从探索空间过渡到利用搜索空间,需要阻力自适应地改变其权重。还假设,随着优化过程的进行,蜻蜓往往会看到更多的蜻蜓来调整飞行路径。换句话说,邻域面积也增加了,从而群在优化的最后阶段成为一组,以收敛到全局最优。食物来源和敌人是从迄今为止发现的整个蜂群的最佳和最差解决方案中选择的。这导致向搜索空间的有希望的区域收敛,并向外发散搜索空间的无希望的区域。

为了提高人工蜻蜓的随机性、随机行为和探索性,当没有相邻的解决方案时,它们需要使用随机行走(Le´vy flight)在搜索空间周围飞行。在这种情况下,蜻蜓的位置使用以下方程进行更新:

其中t是当前迭代,d是位置向量的维度。

Le´vy的计算公式:

其中r1,r2是[0,1]中的两个随机数,贝塔是常数(在本工作中等于1.5)

r(x) = (x-1)!

4.算法流程图

5.文件结构

DA.m                         % 蚁狮优化算法
distance.m                      % 计算欧几里得距离
func_plot.m                     % 绘制的基准函数
Get_Functions_details.m         % 基准的全部信息和实现
initialization.m                % 初始化
Levy.m                          % Levy指数和系数
main.m                          % 主函数

6.伪代码

7.详细代码及注释

7.1 DA.m

function [Best_score,Best_pos,cg_curve]=DA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj)display('DA is optimizing your problem');
cg_curve=zeros(1,Max_iteration);if size(ub,2)==1ub=ones(1,dim)*ub;lb=ones(1,dim)*lb;
end%The initial radius of gragonflies' neighbourhoods
r=(ub-lb)/10;
Delta_max=(ub-lb)/10;Food_fitness=inf;
Food_pos=zeros(dim,1);Enemy_fitness=-inf;
Enemy_pos=zeros(dim,1);X=initialization(SearchAgents_no,dim,ub,lb);
Fitness=zeros(1,SearchAgents_no);DeltaX=initialization(SearchAgents_no,dim,ub,lb);for iter=1:Max_iterationr=(ub-lb)/4+((ub-lb)*(iter/Max_iteration)*2);w=0.9-iter*((0.9-0.4)/Max_iteration);my_c=0.1-iter*((0.1-0)/(Max_iteration/2));if my_c<0my_c=0;ends=2*rand*my_c; % Seperation weighta=2*rand*my_c; % Alignment weightc=2*rand*my_c; % Cohesion weightf=2*rand;      % Food attraction weighte=my_c;        % Enemy distraction weightfor i=1:SearchAgents_no %Calculate all the objective values firstFitness(1,i)=fobj(X(:,i)');if Fitness(1,i)<Food_fitnessFood_fitness=Fitness(1,i);Food_pos=X(:,i);endif Fitness(1,i)>Enemy_fitnessif all(X(:,i)<ub') && all( X(:,i)>lb')Enemy_fitness=Fitness(1,i);Enemy_pos=X(:,i);endendendfor i=1:SearchAgents_noindex=0;neighbours_no=0;clear Neighbours_DeltaXclear Neighbours_X%find the neighbouring solutionsfor j=1:SearchAgents_noDist2Enemy=distance(X(:,i),X(:,j));if (all(Dist2Enemy<=r) && all(Dist2Enemy~=0))index=index+1;neighbours_no=neighbours_no+1;Neighbours_DeltaX(:,index)=DeltaX(:,j);Neighbours_X(:,index)=X(:,j);endend% Seperation%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Eq. (3.1)S=zeros(dim,1);if neighbours_no>1for k=1:neighbours_noS=S+(Neighbours_X(:,k)-X(:,i));endS=-S;elseS=zeros(dim,1);end% Alignment%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Eq. (3.2)if neighbours_no>1A=(sum(Neighbours_DeltaX')')/neighbours_no;elseA=DeltaX(:,i);end% Cohesion%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Eq. (3.3)if neighbours_no>1C_temp=(sum(Neighbours_X')')/neighbours_no;elseC_temp=X(:,i);endC=C_temp-X(:,i);% Attraction to food%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Eq. (3.4)Dist2Food=distance(X(:,i),Food_pos(:,1));if all(Dist2Food<=r)F=Food_pos-X(:,i);elseF=0;end% Distraction from enemy%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Eq. (3.5)Dist2Enemy=distance(X(:,i),Enemy_pos(:,1));if all(Dist2Enemy<=r)Enemy=Enemy_pos+X(:,i);elseEnemy=zeros(dim,1);endfor tt=1:dimif X(tt,i)>ub(tt)X(tt,i)=lb(tt);DeltaX(tt,i)=rand;endif X(tt,i)<lb(tt)X(tt,i)=ub(tt);DeltaX(tt,i)=rand;endendif any(Dist2Food>r)if neighbours_no>1for j=1:dimDeltaX(j,i)=w*DeltaX(j,i)+rand*A(j,1)+rand*C(j,1)+rand*S(j,1);if DeltaX(j,i)>Delta_max(j)DeltaX(j,i)=Delta_max(j);endif DeltaX(j,i)<-Delta_max(j)DeltaX(j,i)=-Delta_max(j);endX(j,i)=X(j,i)+DeltaX(j,i);endelse% Eq. (3.8)X(:,i)=X(:,i)+Levy(dim)'.*X(:,i);DeltaX(:,i)=0;endelsefor j=1:dim% Eq. (3.6)DeltaX(j,i)=(a*A(j,1)+c*C(j,1)+s*S(j,1)+f*F(j,1)+e*Enemy(j,1)) + w*DeltaX(j,i);if DeltaX(j,i)>Delta_max(j)DeltaX(j,i)=Delta_max(j);endif DeltaX(j,i)<-Delta_max(j)DeltaX(j,i)=-Delta_max(j);endX(j,i)=X(j,i)+DeltaX(j,i);end endFlag4ub=X(:,i)>ub';Flag4lb=X(:,i)<lb';X(:,i)=(X(:,i).*(~(Flag4ub+Flag4lb)))+ub'.*Flag4ub+lb'.*Flag4lb;endBest_score=Food_fitness;Best_pos=Food_pos;cg_curve(iter)=Best_score;
end

7.2 distance.m

function o = distance(a,b)for i=1:size(a,1)o(1,i)=sqrt((a(i)-b(i))^2);
end

7.3 func_plot.m

function func_plot(func_name)[lb,ub,dim,fobj]=Get_Functions_details(func_name);switch func_name case 'F1' x=-100:2:100; y=x; %[-100,100]case 'F2' x=-100:2:100; y=x; %[-10,10]case 'F3' x=-100:2:100; y=x; %[-100,100]case 'F4' x=-100:2:100; y=x; %[-100,100]case 'F5' x=-200:2:200; y=x; %[-5,5]case 'F6' x=-100:2:100; y=x; %[-100,100]case 'F7' x=-1:0.03:1;  y=x  %[-1,1]case 'F8' x=-500:10:500;y=x; %[-500,500]case 'F9' x=-5:0.1:5;   y=x; %[-5,5]    case 'F10' x=-20:0.5:20; y=x;%[-500,500]case 'F11' x=-500:10:500; y=x;%[-0.5,0.5]case 'F12' x=-10:0.1:10; y=x;%[-pi,pi]case 'F13' x=-5:0.08:5; y=x;%[-3,1]case 'F14' x=-100:2:100; y=x;%[-100,100]case 'F15' x=-5:0.1:5; y=x;%[-5,5]case 'F16' x=-1:0.01:1; y=x;%[-5,5]case 'F17' x=-5:0.1:5; y=x;%[-5,5]case 'F18' x=-5:0.06:5; y=x;%[-5,5]case 'F19' x=-5:0.1:5; y=x;%[-5,5]case 'F20' x=-5:0.1:5; y=x;%[-5,5]        case 'F21' x=-5:0.1:5; y=x;%[-5,5]case 'F22' x=-5:0.1:5; y=x;%[-5,5]     case 'F23' x=-5:0.1:5; y=x;%[-5,5]
end    L=length(x);
f=[];for i=1:Lfor j=1:Lif strcmp(func_name,'F15')==0 && strcmp(func_name,'F19')==0 && strcmp(func_name,'F20')==0 && strcmp(func_name,'F21')==0 && strcmp(func_name,'F22')==0 && strcmp(func_name,'F23')==0f(i,j)=fobj([x(i),y(j)]);endif strcmp(func_name,'F15')==1f(i,j)=fobj([x(i),y(j),0,0]);endif strcmp(func_name,'F19')==1f(i,j)=fobj([x(i),y(j),0]);endif strcmp(func_name,'F20')==1f(i,j)=fobj([x(i),y(j),0,0,0,0]);end       if strcmp(func_name,'F21')==1 || strcmp(func_name,'F22')==1 ||strcmp(func_name,'F23')==1f(i,j)=fobj([x(i),y(j),0,0]);end          end
endsurfc(x,y,f,'LineStyle','none');end

7.4 Get_Functions_details.m

function [lb,ub,dim,fobj] = Get_Functions_details(F)switch Fcase 'F1'fobj = @F1;lb=-100;ub=100;dim=10;case 'F2'fobj = @F2;lb=-10;ub=10;dim=10;case 'F3'fobj = @F3;lb=-100;ub=100;dim=10;case 'F4'fobj = @F4;lb=-100;ub=100;dim=10;case 'F5'fobj = @F5;lb=-30;ub=30;dim=10;case 'F6'fobj = @F6;lb=-100;ub=100;dim=10;case 'F7'fobj = @F7;lb=-1.28;ub=1.28;dim=10;case 'F8'fobj = @F8;lb=-500;ub=500;dim=10;case 'F9'fobj = @F9;lb=-5.12;ub=5.12;dim=10;case 'F10'fobj = @F10;lb=-32;ub=32;dim=10;case 'F11'fobj = @F11;lb=-600;ub=600;dim=10;case 'F12'fobj = @F12;lb=-50;ub=50;dim=10;case 'F13'fobj = @F13;lb=-50;ub=50;dim=10;case 'F14'fobj = @F14;lb=-65.536;ub=65.536;dim=2;case 'F15'fobj = @F15;lb=-5;ub=5;dim=4;case 'F16'fobj = @F16;lb=-5;ub=5;dim=2;case 'F17'fobj = @F17;lb=[-5,0];ub=[10,15];dim=2;case 'F18'fobj = @F18;lb=-2;ub=2;dim=2;case 'F19'fobj = @F19;lb=0;ub=1;dim=3;case 'F20'fobj = @F20;lb=0;ub=1;dim=6;     case 'F21'fobj = @F21;lb=0;ub=10;dim=4;    case 'F22'fobj = @F22;lb=0;ub=10;dim=4;    case 'F23'fobj = @F23;lb=0;ub=10;dim=4;
endend% F1function o = F1(x)
o=sum(x.^2);
end% F2function o = F2(x)
o=sum(abs(x))+prod(abs(x));
end% F3function o = F3(x)
dim=size(x,2);
o=0;
for i=1:dimo=o+sum(x(1:i))^2;
end
end% F4function o = F4(x)
o=max(abs(x));
end% F5function o = F5(x)
dim=size(x,2);
o=sum(100*(x(2:dim)-(x(1:dim-1).^2)).^2+(x(1:dim-1)-1).^2);
end% F6function o = F6(x)
o=sum(abs((x+.5)).^2);
end% F7function o = F7(x)
dim=size(x,2);
o=sum([1:dim].*(x.^4))+rand;
end% F8function o = F8(x)
o=sum(-x.*sin(sqrt(abs(x))));
end% F9function o = F9(x)
dim=size(x,2);
o=sum(x.^2-10*cos(2*pi.*x))+10*dim;
end% F10function o = F10(x)
dim=size(x,2);
o=-20*exp(-.2*sqrt(sum(x.^2)/dim))-exp(sum(cos(2*pi.*x))/dim)+20+exp(1);
end% F11function o = F11(x)
dim=size(x,2);
o=sum(x.^2)/4000-prod(cos(x./sqrt([1:dim])))+1;
end% F12function o = F12(x)
dim=size(x,2);
o=(pi/dim)*(10*((sin(pi*(1+(x(1)+1)/4)))^2)+sum((((x(1:dim-1)+1)./4).^2).*...
(1+10.*((sin(pi.*(1+(x(2:dim)+1)./4)))).^2))+((x(dim)+1)/4)^2)+sum(Ufun(x,10,100,4));
end% F13function o = F13(x)
dim=size(x,2);
o=.1*((sin(3*pi*x(1)))^2+sum((x(1:dim-1)-1).^2.*(1+(sin(3.*pi.*x(2:dim))).^2))+...
((x(dim)-1)^2)*(1+(sin(2*pi*x(dim)))^2))+sum(Ufun(x,5,100,4));
end% F14function o = F14(x)
aS=[-32 -16 0 16 32 -32 -16 0 16 32 -32 -16 0 16 32 -32 -16 0 16 32 -32 -16 0 16 32;,...
-32 -32 -32 -32 -32 -16 -16 -16 -16 -16 0 0 0 0 0 16 16 16 16 16 32 32 32 32 32];for j=1:25bS(j)=sum((x'-aS(:,j)).^6);
end
o=(1/500+sum(1./([1:25]+bS))).^(-1);
end% F15function o = F15(x)
aK=[.1957 .1947 .1735 .16 .0844 .0627 .0456 .0342 .0323 .0235 .0246];
bK=[.25 .5 1 2 4 6 8 10 12 14 16];bK=1./bK;
o=sum((aK-((x(1).*(bK.^2+x(2).*bK))./(bK.^2+x(3).*bK+x(4)))).^2);
end% F16function o = F16(x)
o=4*(x(1)^2)-2.1*(x(1)^4)+(x(1)^6)/3+x(1)*x(2)-4*(x(2)^2)+4*(x(2)^4);
end% F17function o = F17(x)
o=(x(2)-(x(1)^2)*5.1/(4*(pi^2))+5/pi*x(1)-6)^2+10*(1-1/(8*pi))*cos(x(1))+10;
end% F18function o = F18(x)
o=(1+(x(1)+x(2)+1)^2*(19-14*x(1)+3*(x(1)^2)-14*x(2)+6*x(1)*x(2)+3*x(2)^2))*...(30+(2*x(1)-3*x(2))^2*(18-32*x(1)+12*(x(1)^2)+48*x(2)-36*x(1)*x(2)+27*(x(2)^2)));
end% F19function o = F19(x)
aH=[3 10 30;.1 10 35;3 10 30;.1 10 35];cH=[1 1.2 3 3.2];
pH=[.3689 .117 .2673;.4699 .4387 .747;.1091 .8732 .5547;.03815 .5743 .8828];
o=0;
for i=1:4o=o-cH(i)*exp(-(sum(aH(i,:).*((x-pH(i,:)).^2))));
end
end% F20function o = F20(x)
aH=[10 3 17 3.5 1.7 8;.05 10 17 .1 8 14;3 3.5 1.7 10 17 8;17 8 .05 10 .1 14];
cH=[1 1.2 3 3.2];
pH=[.1312 .1696 .5569 .0124 .8283 .5886;.2329 .4135 .8307 .3736 .1004 .9991;...
.2348 .1415 .3522 .2883 .3047 .6650;.4047 .8828 .8732 .5743 .1091 .0381];
o=0;
for i=1:4o=o-cH(i)*exp(-(sum(aH(i,:).*((x-pH(i,:)).^2))));
end
end% F21function o = F21(x)
aSH=[4 4 4 4;1 1 1 1;8 8 8 8;6 6 6 6;3 7 3 7;2 9 2 9;5 5 3 3;8 1 8 1;6 2 6 2;7 3.6 7 3.6];
cSH=[.1 .2 .2 .4 .4 .6 .3 .7 .5 .5];o=0;
for i=1:5o=o-((x-aSH(i,:))*(x-aSH(i,:))'+cSH(i))^(-1);
end
end% F22function o = F22(x)
aSH=[4 4 4 4;1 1 1 1;8 8 8 8;6 6 6 6;3 7 3 7;2 9 2 9;5 5 3 3;8 1 8 1;6 2 6 2;7 3.6 7 3.6];
cSH=[.1 .2 .2 .4 .4 .6 .3 .7 .5 .5];o=0;
for i=1:7o=o-((x-aSH(i,:))*(x-aSH(i,:))'+cSH(i))^(-1);
end
end% F23function o = F23(x)
aSH=[4 4 4 4;1 1 1 1;8 8 8 8;6 6 6 6;3 7 3 7;2 9 2 9;5 5 3 3;8 1 8 1;6 2 6 2;7 3.6 7 3.6];
cSH=[.1 .2 .2 .4 .4 .6 .3 .7 .5 .5];o=0;
for i=1:10o=o-((x-aSH(i,:))*(x-aSH(i,:))'+cSH(i))^(-1);
end
endfunction o=Ufun(x,a,k,m)
o=k.*((x-a).^m).*(x>a)+k.*((-x-a).^m).*(x<(-a));
end

7.5 initialization.m

function Positions=initialization(SearchAgents_no,dim,ub,lb)Boundary_no= size(ub,2); % numnber of boundaries% If the boundaries of all variables are equal and user enter a signle
% number for both ub and lb
if Boundary_no==1ub_new=ones(1,dim)*ub;lb_new=ones(1,dim)*lb;
elseub_new=ub;lb_new=lb;
end% If each variable has a different lb and ubfor i=1:dimub_i=ub_new(i);lb_i=lb_new(i);Positions(:,i)=rand(SearchAgents_no,1).*(ub_i-lb_i)+lb_i;endPositions=Positions';

7.5 Levy.m

function o=Levy(d)beta=3/2;
%Eq. (3.10)
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);% Eq. (3.9)
o=0.01*step;

7.5 main.m

在这里插入代码片clear all
clcSearchAgents_no=40; % Number of search agentsFunction_name='F1'; % Name of the test function that can be from F1 to F23 (Table 1,2,3 in the paper)Max_iteration=500; % Maximum numbef of iterations% Load details of the selected benchmark function
[lb,ub,dim,fobj]=Get_Functions_details(Function_name);[Best_score,Best_pos,cg_curve]=DA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);figure('Position',[400 400 560 190])%Draw search space
subplot(1,2,1);
func_plot(Function_name);
title('Test function')
xlabel('x_1');
ylabel('x_2');
zlabel([Function_name,'( x_1 , x_2 )'])
grid off%Draw objective space
subplot(1,2,2);
semilogy(cg_curve,'Color','r')
title('Convergence curve')
xlabel('Iteration');
ylabel('Best score obtained so far');axis tight
grid off
box on
legend('DA')display(['The best solution obtained by DA is : ', num2str(Best_pos')]);
display(['The best optimal value of the objective funciton found by DA is : ', num2str(Best_score)]);

8.运行结果

9.参考文献

[1]Seyedali Mirjalili. Dragonfly algorithm: a new meta-heuristic optimization technique for solving single-objective, discrete, and multi-objective problems[J]. Neural Computing and Applications,2016,27(4).

【Matlab】智能优化算法_蜻蜓优化算法DA相关推荐

  1. 【Matlab】智能优化算法_蚁狮优化算法ALO

    [Matlab]智能优化算法_蚁狮优化算法ALO 1.背景介绍 2.基本思想 3.公式推导 3.1 ALO算法的运算符 3.2 蚂蚁的随机游动 3.3 困在蚂蚁坑里 3.4 修建陷阱 3.5 蚂蚁划向 ...

  2. 【Matlab】智能优化算法_灰狼优化算法GWO

    [Matlab]智能优化算法_灰狼优化算法GWO 1.背景介绍 2.基本思想 2.1 等级制度 2.2 狩猎方式 3.公式推导 3.1 社会等级制度 3.2 包围猎物 3.3 包围猎物 3.4 攻击猎 ...

  3. matlab粒子群加约束条件_粒子群算法(PSO)MATLAB实现

    1.PSO相关知识介绍 1.1PSO算法的基础理论 人们在决策过程中常常会综合两种重要的信息:第一种是他们自己的经验,第二种是其他人的经验. 同样的道理,群鸟在觅食过程中,每只鸟的初始状态都是出于随机 ...

  4. 多边形之间相交求交点的算法_路径规划算法总结

    本文来自知乎网友@搬砖的旺财,地平线机器人算法工程师.作者根据自己本科和硕士阶段的学习经历,整理归纳了所接触过的规划算法. 1.自主机器人近距离操作运动规划体系 在研究自主运动规划问题之前,首先需建立 ...

  5. python 查找算法_七大查找算法(Python)

    查找算法 -- 简介 查找(Searching)就是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素. 查找表(Search Table):由同一类型的数据元素构成的集合 关键字(Ke ...

  6. java 排名算法_排行榜的算法

    好久不来博客园了,前几天更新个人状态时,也把"技术博客"四个字改成了"荒废已久的博客". 好久不总结自己的工作和学习了,怎么说也过不去,就来这写一篇浅显的文章, ...

  7. python数据结构算法_数据结构与算法(Python)

    数据结构与算法(Python) Why? 我们举一个可能不太恰当的例子: 如果将最终写好运行的程序比作战场,我们码农便是指挥作战的将军,而我们所写的代码便是士兵和武器. 那么数据结构和算法是什么?答曰 ...

  8. prim算法_数据结构与算法

    根据MOOC上课程总结,文章目录为: 一.引论 数据结构的基本概念 数据的逻辑结构和存储结构 算法及其时间复杂度 时间复杂度及应用 二.线性表 线性表的概念及顺序存储 单链表的概念及其基本操作 建立单 ...

  9. python音频颤音算法_数字音效算法的研究与实现

    摘要: 随着科技的发展,数字信号处理器DSP(Digital Signal Processor)被广泛的应用在各种电子产品中,从便携的个人数字助手PDA(Personal Digital Assist ...

最新文章

  1. 综合应用能力计算机类考什么用,综合应用能力考什么内容
  2. 800多名各国院士热忱参与 第三届“科学探索奖”名单公布
  3. 公开说说别人看不到_当听到别人在说自己坏话时,心里是什么感受?
  4. C++中指针与引用的区别
  5. 深入理解HashMap(三): 关键源码逐行分析之构造函数
  6. Activity管理笔记
  7. Android意图Intent总结代码
  8. 我的世界服务器物品管理,JEI物品管理器 _ 我的世界Minecraft中国版官方网站——你想玩的,这里都有...
  9. weblogic启动项目失败查看_weblogic 部署项目成功,但是再界面上取不到数据
  10. 微信小程序轮播图(详细)
  11. 制作HTML邮件邮箱注意问题和解决方案--兼容手机邮箱、电脑邮箱和邮件客户端
  12. 在注册表里查找classid
  13. 数学符号“s.t.”的意义
  14. 河南工业大学高级JAVA实验,大学_计算机控制技术实验报告河南工业大学4
  15. QGroundControl连接数传(3DR)失败
  16. 【Alpha】Phylab 展示博客
  17. ReferenceError: xxx is not defined
  18. 基于微信小程序的加油服务系统毕业设计源码
  19. php 两个时间戳相隔小时数,php 计算两个时间戳相隔的时间实例
  20. 教你代码实现抢红包功能

热门文章

  1. 为什么华为在发布会不提鸿蒙,华为又要开发布会?这次没有手机新品,鸿蒙系统要当主角!...
  2. 目标检测评价指标 AP、mAP
  3. ASP.NET.3.5.社交网络开发[影印版]读书笔记
  4. 基于matlab的RGB到YCbCr颜色空间的转换
  5. 在Mac上如何快速找到及打开应用程序
  6. 基于FPGA的VGA协议实现
  7. wps表格带单位求和
  8. [架构之路-4]:架构师 - 架构师的四大架构价值等级与架构师全面成长之路
  9. ramdisk介绍与制作
  10. oracle11g使用教程ppt,Oracle11g入门教程PPT.ppt