2022年智能优化算法源代码文件 .pdf





《2022年智能优化算法源代码文件 .pdf》由会员分享,可在线阅读,更多相关《2022年智能优化算法源代码文件 .pdf(40页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、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)/A
2、nt; Len2=(end2-start2)/Ant; %P = 0.2;% 初始化蚂蚁位置for i=1:Ant X(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 为全局转
3、移选择因子a1=0.9; b1=(1/ECHO)*2*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
4、)=exp(r)/exp(T0(BestIndex); else% 当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 ifmin_local(Echo)min_global(Echo-1) min_global(Echo)=min_local(Echo); elsemin_global(Echo)=min_global(Echo-1); end; else min
5、_global(Echo)=minvalue_iter; 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
6、=X(i_max,1),X(i_max,2); %func3 = AA_Foxhole_Func(X(i_max,1),X(i_max,2); %*名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 40 页 - - - - - - - - - 4 *%minvalue = func3;minvalue=feval(func,X(i_max,1),X(i_max,2); x=X(BestIndex,1); y=X(BestIndex,2); runtime=toc 人工免疫算
7、法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 nargin = 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,4
8、4,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: ); 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
9、,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 defintionsvpm = ; vfx = ; vmfit = ; valfx = 1; N,L = size(P); it = 0; PRINT = 1; % Generationswhile it = gen & valfx = 100, x = decode(P(:,1:22),xmin,xmax);
10、 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-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); % Hypermu
11、tation 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(-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,
12、fat,N,ind,P,T); % n - number of clones% fat - multiplying factor% ind - best individuals% T - temporary population% pcs - final position of each cloneif 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
13、) * 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 restoringif 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
14、 - 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-min)*x1 ./ 4194303; function ab,ag = cadeia(n1,s1,n2,s2,bip) %default parameter value seetingif nargin = 2, n2 = n1; s2 = s1; bip = 1; else
15、if 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); else , ab = hardlim(ab); end; % Antigen (Ag) chainsag = 2 .* rand(n2,s2) - 1; if bip = 1, 名师资料总结 - - -精品资料欢迎下载 - - - - - - - -
16、 - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 40 页 - - - - - - - - - 7 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,2,1);
17、% plot 1draw(func); title(func, Function); tic format 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; % 粒子间的最
18、小距离Psum=0; % 个体最佳的和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 为全局最优f
19、or i=2:N iffeval(func,x(i,:)feval(func,pg) %* pg=x(i,:); endend%-进入主要循环,按照公式依次迭代,直到满足精度要求-for t=1:MaxDT for i=1:N 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 40 页 - - - - - - - - - 8 v(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:)+c2*rand*(pg-x(i,:); x(i,:)=x(i,:)+v(
20、i,:); iffeval(func,x(i,:)p(i) %*p(i)=feval(func,x(i,:); %* y(i,:)=x(i,:); endifp(i)feval(func,pg) %* pg=y(i,:); subplot(2,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 2plot(pg(1,1),pg(1,2),rs, MarkerFaceColor, r, MarkerSize,8) ho
21、ld 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(i); xlabel(Min_x= ,num2str(pg(1,1), Min_y= ,num2str(pg(1,2); endendPbest(t)=feval(func,pg) ; %*% if Foxhole(pg,D)DS if mod(t,DS)=0 & (Pbest(t-DS+1)-Pbest(t)1e-020 % 如果连续 DS代数
22、,群体中的最优没有明显变优,则进行免疫 .% 在函数测试的过程中发现,经过一定代数的更新,个体最优不完全相等,但变化非常非常小,% 我认为这个时候也应用免疫了,所以我没有用“Pbest(t-DS+1)Pbest(t)”作为判断条件,% 不过“ (Pbest(t-DS+1)-Pbest(t)1e-020”是否合理也值得探讨。for i=1:N % 先计算出个体最优的和名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 40 页 - - - - - - - - - 9 Psum=
23、Psum+p(i); endfor i=1:N % 免疫程序forj=1:N % 计算每个个体与个体 i 的距离distance(j)=abs(p(j)-p(i); end num=0; forj=1:N % 计算与第 i 个个体距离小于 minD的个数ifdistance(j)replaceP x(i,:)=-range+2*range*rand(1,D); subplot(2,2,4); axi; % Plot 4plot(x(i,1),x(i,2),k*); grid on; axis(-100 100 -100 100 ) ; title(New Min = ,num2str( fev
24、al(func,x(i,:); %* xlabel(Immune ,num2str(count); pause (0.2); count=count+1; endendendendend%-最后给出计算结果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 distance(jj)=abs(P(jj)-P(i); endnum=0; for ii=1:N if distance(ii)min
25、D num=num+1; endendPD=num/N; % 个体浓度PR=a*PF+(1-a)*PD; % 替换概率% result=PR;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 40 页 - - - - - - - - - 10 差分进化算法function sol= DE(func) % Example sol= DE(Foxhole)tic popsize= 100; lb=-100 -100; ub=100 100; sol = diffevolve(f
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年智能优化算法源代码文件 2022 智能 优化 算法 源代码 文件

限制150内