智能优化算法程序代码集锦_第1页
智能优化算法程序代码集锦_第2页
智能优化算法程序代码集锦_第3页
智能优化算法程序代码集锦_第4页
智能优化算法程序代码集锦_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、人工蚂蚁算法%function x,y, minvalue = AA(func) % Example x, y,minvalue = AA(Foxhole) clc; tic; subplot(2,2,1); % plot 1draw(func);title(func, Function);%初始化各参数Ant=100;%蚂蚁规模ECHO=200;%迭代次数 step=0.01*rand(1);%局部搜索时的步长temp=0,0;%各子区间长度start1=-100;end1=100;start2=-100;end2=100;Len1=(end1-start1)/Ant;Len2=(end2-

2、start2)/Ant;%P = 0.2;%初始化蚂蚁位置 for i=1:AntX(i,1)=(start1+(end1-start1)*rand(1);X(i,2)=(start2+(end2-start2)*rand(1);%func=AA_Foxhole_Func(X(i,1),X(i,2);val=feval(func,X(i,1),X(i,2); T0(i)=exp(-val);%初始信息素,随函数值大,信息素浓度小,反之亦然 %* end; %至此初始化完成for Echo=1:ECHO %开始寻优 %P0函数定义,P0为全局转移选择因子a1=0.9;b1=(1/ECHO)*2*

3、log(1/2);f1=a1*exp(b1*Echo);a2=0.225;b2=(1/ECHO)*2*log(2);f2=a2*exp(b2*Echo);if Echo=T_Best T_Best=T0(j); BestIndex=j; end; end; W=Wmax-(Wmax-Wmin)*(Echo/ECHO); %局部搜索步长更新参数 for j_g=1:Ant %全局转移概率求取,当该蚂蚁随在位置不是bestindex时 if j_g=BestIndex r=T0(BestIndex)-T0(j_g); Prob(j_g)=exp(r)/exp(T0(BestIndex); else

4、 %当j_g=BestIndex的时候进行局部搜索 if rand(1)exp(-F1_B) X(BestIndex,1)=temp(1,1); X(BestIndex,2)=temp(1,2); end; end; for j_g_tr=1:Ant if Prob(j_g_tr)= 2 if min_local(Echo)min_global(Echo-1) min_global(Echo)=min_local(Echo); else min_global(Echo)=min_global(Echo-1); end; else min_global(Echo)=minvalue_iter;

5、end; subplot(2,2,4);% Plot 3 min_global=min_global; index(:,1)=1:ECHO; plot(Echo, min_global(Echo),y*) %axis(0 ECHO 0 10); hold on; title (func, (X) = , num2str(minvalue_iter),Color,r); xlabel(iteration); ylabel(f(x); grid on; end;%ECHO循环结束 c_max,i_max=max(T0); minpoint=X(i_max,1),X(i_max,2); %func3

6、 = AA_Foxhole_Func(X(i_max,1),X(i_max,2); %* %minvalue = func3; minvalue=feval(func,X(i_max,1),X(i_max,2); x=X(BestIndex,1); y=X(BestIndex,2); runtime=toc人工免疫算法function x,y,fx,vfx,vmfit,P,vpm = AI(func,gen,n,pm,per); % Example x,y,fx = AI(Foxhole)subplot(2,2,1);draw(func);title( func, Function);if n

7、argin = 1, % gen = 200; n = round(size(P,1)/2); pm = 0.0005; per = 0.0; fat = 10; %gen = 250; n = size(P,1); pm = 0.01; per = 0.0; fat = .1; P = cadeia(200,44,0,0,0); gen = 40; n = size(P,1); pm = 0.2; per = 0.0; fat = 0.1;end; while n = 0, n = input(n has to be at least one. Type a new value for n:

8、 );end; xmin=-100;xmax=100;ymin=-100;ymax=100; x = decode(P(:,1:22),xmin,xmax); y = decode(P(:,23:end),ymin,ymax); %fit = eval(f);%fit=AI_Foxhole_Func(x,y);%fit=feval(func,x y);%imprime(1,vxp,vyp,vzp,x,y,fit,1,1); % Hypermutation controlling parameterspma = pm; itpm = gen; pmr = 0.8; % General defin

9、tionsvpm = ; vfx = ; vmfit = ; valfx = 1; N,L = size(P); it = 0; PRINT = 1; % Generationswhile it = gen & valfx = 100, x = decode(P(:,1:22),xmin,xmax); y = decode(P(:,23:end),ymin,ymax); T = ; cs = ; %fit = eval(f); %fit=AI_Foxhole_Func(x,y);% fit=feval(func,x y); a,ind = sort(fit); valx = x(ind(end

10、-n+1:end); valy = y(ind(end-n+1:end); fx = a(end-n+1:end); % n best individuals (maximization) % Reproduction T,pcs = reprod(n,fat,N,ind,P,T); % Hypermutation M = rand(size(T,1),L) actual values% vxplot, vplot - original (base) functionif PRINT = 1, if rem(it,mit) = 0, mesh(vx,vy,vz); hold on; axis(

11、-100 100 -100 100 0 500); xlabel(x); ylabel(y); zlabel(f(x,y); plot3(x,y,fx,k*); drawnow; hold off; end;end; % Reproductionfunction T,pcs = reprod(n,fat,N,ind,P,T);% n - number of clones% fat - multiplying factor% ind - best individuals% T - temporary population% pcs - final position of each cloneif

12、 n = 1, cs = N; T = ones(N,1) * P(ind(1),:);else, for i=1:n, % cs(i) = round(fat*N/i); cs(i) = round(fat*N); pcs(i) = sum(cs); T = T; ones(cs(i),1) * P(ind(end-i+1),:); end;end; % Control of pmfunction pm = pmcont(pm,pma,pmr,it,itpm);% pma - initial value% pmr - control rate% itpm - iterations for r

13、estoringif rem(it,itpm) = 0, pm = pm * pmr; if rem(it,10*itpm) = 0, pm = pma; end;end; % Decodify bitstringsfunction x = decode(v,min,max);% x - real value (precision: 6)% v - binary string (length: 22)v = fliplr(v); s = size(v);aux = 0:1:21; aux = ones(s(1),1)*aux;x1 = sum(v.*2.aux);x = min + (max-

14、min)*x1 ./ ;function ab,ag = cadeia(n1,s1,n2,s2,bip)%default parameter value seetingif nargin = 2, n2 = n1; s2 = s1; bip = 1;elseif nargin = 4, bip = 1;end;% Antibody (Ab) chainsab = 2 .* rand(n1,s1) - 1;%create n1 row s1 column array, its value range is between -1 or 1if bip = 1, ab = hardlims(ab);

15、else, ab = hardlim(ab);end;% Antigen (Ag) chainsag = 2 .* rand(n2,s2) - 1;if bip = 1, ag = hardlims(ag);else, ag = hardlim(ag);end;% End Function CADEIA%-免疫粒子群优化算法(Artificial Immune - Particle Swarm Optimization) function x,y,Result=PSO_AI(func)% Example x, y,minvalue = PSO_AI(Foxhole)clc; subplot(2

16、,2,1); % plot 1draw(func);title(func, Function);ticformat long;%-给定初始化条件-c1=1.4962; %学习因子1c2=1.4962; %学习因子2w=0.7298; %惯性权重MaxDT=200; %最大迭代次数D=2; %搜索空间维数(未知数个数)N=100; %初始化群体个体数目eps=10(-20); %设置精度(在已知最小值时候用)DS=10; %每隔DS次循环就检查最优个体是否变优replaceP=0.6; %粒子的概率大于replaceP将被免疫替换minD=1e-015; %粒子间的最小距离Psum=0; %个体

17、最佳的和range=100;count = 0;%-初始化种群的个体- for i=1:N for j=1:D x(i,j)=-range+2*range*rand; %随机初始化位置 v(i,j)=randn; %随机初始化速度 endend %-先计算各个粒子的适应度,并初始化Pi和Pg- for i=1:N %p(i)=Foxhole(x(i,:),D); %fitness是计算各个粒子适应度的函数,见文件fitness.m %* p(i)=feval(func,x(i,:); y(i,:)=x(i,:);endpg=x(1,:); %Pg为全局最优for i=2:N if feval(

18、func,x(i,:)feval(func,pg) %* pg=x(i,:); endend %-进入主要循环,按照公式依次迭代,直到满足精度要求- for t=1:MaxDT for i=1:N v(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:)+c2*rand*(pg-x(i,:); x(i,:)=x(i,:)+v(i,:); if feval(func,x(i,:)p(i) %* p(i)=feval(func,x(i,:); %* y(i,:)=x(i,:); end if p(i)feval(func,pg) %* pg=y(i,:); subplot(2,

19、2,2); % Plot 1 bar(pg,0.25); axis(0 3 -40 40 ) ; title (Iteration , num2str(t); pause (0.1); subplot(2,2,3); % Plot 2 plot(pg(1,1),pg(1,2),rs,MarkerFaceColor,r, MarkerSize,8) hold on; plot(x(:,1),x(:,2),k.); set(gca,Color,g) hold off; grid on; axis(-100 100 -100 100 ) ; title(Global Min = ,num2str(p

20、(i); xlabel(Min_x= ,num2str(pg(1,1), Min_y= ,num2str(pg(1,2); end end Pbest(t)=feval(func,pg) ; %* % if Foxhole(pg,D)DS if mod(t,DS)=0 & (Pbest(t-DS+1)-Pbest(t)1e-020 %如果连续DS代数,群体中的最优没有明显变优,则进行免疫. %在函数测试的过程中发现,经过一定代数的更新,个体最优不完全相等,但变化非常非常小, %我认为这个时候也应用免疫了,所以我没有用“Pbest(t-DS+1)Pbest(t)”作为判断条件, %不过“(Pbe

21、st(t-DS+1)-Pbest(t)1e-020”是否合理也值得探讨。 for i=1:N %先计算出个体最优的和 Psum=Psum+p(i); end for i=1:N %免疫程序 for j=1:N %计算每个个体与个体i的距离 distance(j)=abs(p(j)-p(i); end num=0; for j=1:N %计算与第i个个体距离小于minD的个数 if distance(j)replaceP x(i,:)=-range+2*range*rand(1,D); subplot(2,2,4); axi; % Plot 4 plot(x(i,1),x(i,2),k*); g

22、rid on; axis(-100 100 -100 100 ) ; title(New Min = ,num2str( feval(func,x(i,:); %* xlabel(Immune ,num2str(count); pause (0.2); count=count+1; end end end end end %-最后给出计算结果 x=pg(1,1);y=pg(1,2); Result=feval(func,pg); %* toc%-算法结束-function probabolity(N,i)PF=p(N-i)/Psum;%适应度概率disp(PF);for jj=1:N dist

23、ance(jj)=abs(P(jj)-P(i);endnum=0;for ii=1:N if distance(ii)minD num=num+1; endendPD=num/N; %个体浓度PR=a*PF+(1-a)*PD; %替换概率% result=PR;差分进化算法function sol= DE(func) % Example sol= DE(Foxhole)ticpopsize= 100;lb=-100 -100;ub=100 100; sol = diffevolve(func, popsize, lb, ub);tocend function sol, fval, evals

24、= diffevolve(varargin)%DIFFEVOLVE Differential Evolution Optimization% Usage:% sol = DIFFEVOLVE(PROBLEM)% sol = DIFFEVOLVE(func, popsize, lb, ub) % sol = DIFFEVOLVE(func, popsize, lb, ub, option1, value1, .) % sol, fval = DIFFEVOLVE(.)% sol, fval, evals = DIFFEVOLVE(.)% % DIFFEVOLVE(func, popsize, l

25、b, ub) tries to find the global optimum of % the fitness-function func, using a transversal differential evolution % strategy. The population size set by popsize, and the boundaries for% each dimension are set by the vectors lb and ub, respectively. % sol, fval, evals = DIFFEVOLVE(.) returns the trial vector found to % yield the global minimum in sol, and the corresponding function value % by fval. The total amount of function evaluations that the algorithm% performed is returned in evals.% The function func must accept a vector argument of length N, equal to % the number of

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论