⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 goplotpso4demo.m

📁 C++实现的PSO算法,很有用写关于PSO算法的论文少不了他
💻 M
字号:
% goplotpso4demo.m
% simple graphing prog for use with PSO demo script

% Brian Birge
% Rev 1.0
% 1/1/3
set(gcf,'Position',[693    28   586   500]); % this is computer dependent
set(gcf,'Doublebuffer','on');

subplot(1,2,1)
 ptsx=30;
 ptsy=30;
 rngx=max(pbest(:,1))-min(pbest(:,1));
 rngy=max(pbest(:,2))-min(pbest(:,2));
 clear x y f6val
 x=min(pbest(:,1)):rngx/(ptsx-1):max(pbest(:,1));
 y=min(pbest(:,2)):rngy/(ptsy-1):max(pbest(:,2));
 
 x=-20:.5:20;
 y=-20:.5:20;
 ptsx=length(x);
 ptsy=length(y);
 
 for i=1:ptsx
     for j=1:ptsy
         f6val(i,j)=f6([x(i),y(j)]);
      %   f6val(i,j)=f6mod([x(i),y(j)]);                  
      %   f6val(i,j)=f6_linear_dyn([x(i),y(j)]);         
      %   f6val(i,j)=f6_spiral_dyn([x(i),y(j)]);                  
      %   f6val(i,j)=f6_bubbles_dyn([x(i),y(j)]);         
      %   f6val(i,j)=ackley([x(i),y(j)]);
      %   f6val(i,j)=tripod([x(i),y(j)]);         
      %   f6val(i,j)=alpine([x(i),y(j)]);         
      %   f6val(i,j)=NDparabola([x(i),y(j)]);         
      %   f6val(i,j)=Griewank([x(i),y(j)]);         
      %   f6val(i,j)=Rastrigin([x(i),y(j)]);         
      %   f6val(i,j)=Rosenbrock([x(i),y(j)]);         
      %   f6val(i,j)=DeJong_f2([x(i),y(j)]);         
      %   f6val(i,j)=DeJong_f4([x(i),y(j)]);         
      %   f6val(i,j)=DeJong_f4_noise([x(i),y(j)]);         
      %   f6val(i,j)=DeJong_f3([x(i),y(j)]);         
      %   f6val(i,j)=foxhole([x(i),y(j)]);         
     end
 end
 surf(x,y,f6val')
% contour(x,y,f6val',1,'k');
 %axis([min(x) max(x) min(y) max(y) 0 1]);
 colormap(copper),shading interp
 %grid on
 view([-22.5,76]) % good 3d view
% view([-25.5,-20]) % good 3d view 
% view([1.2650e+002  7.4000e+001]) % good 3d view 
% view([3.8500e+001  4.2000e+001]) % good 3d view 
% view(2)
%view([60,16]);
%view(3)
% view([60.5,-16]) % uncomment this for alternate 3D view
% view([0,-90])   % underside 2D view
 xlabel('x')
 ylabel('y')
 zlabel('cost')
 title([num2str(gbestval),' = ',functname,'([',num2str(gbest(1)),', ',num2str(gbest(2)),'])'])
 hold on     
 plot3(pos(:,1),pos(:,2),out,'b.','Markersize',7)
 plot3(pbest(:,1),pbest(:,2),pbestval,'g.','Markersize',7);
 plot3(gbest(1),gbest(2),gbestval,'r.','Markersize',25);
 %plot3(gbest(1),gbest(2),0,'r.','Markersize',10);
% try
%   axis([min(pbest(:,1)) max(pbest(:,1)) ...
%         min(pbest(:,2)) max(pbest(:,2)) ...
%         min(min(f6val)) max(max(f6val))]);
% catch
%   axis tight  
% end
axis([-20 20 -20 20 -1 1])
%axis([-1 20 -1 20 0 1])
 %axis equal
 hold off
 drawnow
 
subplot(1,2,2)
 semilogy(tr(find(~isnan(tr)))),xlabel('epoch');,ylabel('gbest');
 if trelea==0
       title(['ps=',num2str(ps),', Inertia wt=',num2str(iwt(length(iwt))),...
               ', Common PSO, ',num2str(D),'D']);
     elseif trelea==2 | trelea==1
       title(['ps=',num2str(ps),', Trelea mod=',num2str(trelea),...
          ', ',num2str(D),'D']);
     elseif trelea==3
       title(['ps=',num2str(ps),', Clerc Type 1", \chi = ',num2str(chi),...
          ', ',num2str(D),'D']);
     end
 grid on
 axis tight
 drawnow
 
% evalin('base','tempmvframe=getframe(gcf);');
% evalin('base','aviobj=addframe(aviobj,tempmvframe);');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -