Halcom 发表于 2017-1-20 19:55:16

11人群搜索算法函数优化--视频分享

11人群搜索算法函数优化--视频分享
百度网盘链接:链接:http://pan.baidu.com/s/1cMkmPw 密码:4muk

具体链接在halcom.cn论坛,联系人QQ:3283892722
该论坛是一个学习交流平台,我会逐一的和大家分享学习。
欢迎大家录制视频,并提交给我,我来设置视频,你可在论坛进行打赏分享。
视频专用播放器:http://halcom.cn/forum.php?mod=viewthread&tid=258&extra=page%3D1
具体的代码如下:
clc,clear,close all
warning off
format longG
%% SOA 参数
maxiter = 20;% 迭代次数
sizepop = 10;% 种群数量
Umax=0.9500;   % 最大隶属度值
Umin=0.0111;   % 最小隶属度值
popmin1 = -1;popmax1 = 1; % x1
popmin2 = -1;popmax2 = 1; % x2
fai1 = 0.5;
fai2 = 0.5;
w1 = 0.5;
% w2 = 0.5;
w2max = 0.7;
w2min = 0.2;
%% 初始化种群
for i=1:sizepop
    x1 = popmin1 + (popmax1-popmin1)*rand;
    x2 = popmin2 + (popmax2-popmin2)*rand;
    pop(i,1) = x1;
    pop(i,2) = x2;
    fitness(i) = fun();
end
%% 记录一组最优值
=min(fitness); % 索引最小值
zbest=pop(bestindex,:);   % 全局最佳
gbest=pop;                % 个体最佳
fitnessgbest=fitness;   % 个体最佳适应度值
fitnesszbest=bestfitness; % 全局最佳适应度值
Frontpop = pop;
%% 迭代寻优
for i=1:maxiter
    for j=1:sizepop
       dego = gbest(j,:)-pop(j,:);
       dalt = zbest-pop(j,:);
       dpro = Frontpop(j,:) - pop(j,:);
            Frontpop = pop;% 记录上一时刻的最优种群
       dij = sign( w1*dpro+fai1*dego+fai2*dalt );   % 确定方向
       % 确定步长
       = sort(fitness,'descend');
       u = Umax - index(j)/sizepop *(Umax-Umin);
       u = u.*rand(1,2);          % 2个变量
       T = sqrt(-log(u) );
       xmin = pop(index(1),:);    % 最差的个体
       xmax = pop(index(end),:);% 最优的个体
      
       w2 = w2max - j/sizepop*(w2max-w2min);
       delta = w2*abs( xmin-xmax );
      
       alpha = delta.*T;
      
       % 步长进行限制
       for k=1:length(alpha)
         if alpha(k)>0.6
               alpha(k)=0.6;
         elseif alpha(k)<-0.6
               alpha(k) = -0.6;
         end
       end
      
       % 位置更新
       pop(j,:) = pop(j,:) + dij.*alpha;      

      % x1越界限制
      if pop(j,1)>popmax1
            pop(j,1)=popmax1;
      end
      if pop(j,1)<popmin1
            pop(j,1)=popmin1;
      end
      % x2越界限制
      if pop(j,2)>popmax2
            pop(j,2)=popmax2;
      end
      if pop(j,2)<popmin2
            pop(j,2)=popmin2;
      end
      
      % 适应度更新
      fitness(j) = fun(pop(j,:));
      
      % 比较个体间比较
      if fitness(j)<fitnessgbest(j)
            fitnessgbest(j) = fitness(j);
            gbest(j,:) = pop(j,:);
      end
      if fitness(j)<bestfitness
            bestfitness = fitness(j);
            zbest =pop(j,:);
      end
      
    end
    fitness_iter(i) = bestfitness;
   
end
disp('最优解')
disp(zbest)
fprintf('\n')

figure('color',)
plot(fitness_iter,'ro-','linewidth',2)

figure('color',)
loglog(fitness_iter,'ro-','linewidth',2)
axis tight
grid on




huwenping 发表于 2017-3-23 00:41:16

人群搜索算法,以前未涉及。

Flora 发表于 2017-4-13 20:04:09

好好好好好好,支持支持

醉生梦死2017 发表于 2017-5-2 18:05:23

看看看看看看

kkarumi 发表于 2017-5-10 22:07:58

感谢分享!

wal1985 发表于 2017-7-27 22:04:10

非常好的代码,谢谢

东晶石材 发表于 2017-8-12 13:35:18

人群搜索算法函数优化--视频分享 [修改]
高级模式

王宇666 发表于 2017-8-22 15:02:54

我看看,人群搜索算法。

wht1129838255 发表于 2017-8-23 10:40:06

谢谢分享!!!!!!

kidcad 发表于 2017-9-24 17:42:10

多谢多谢学习一下
页: [1] 2
查看完整版本: 11人群搜索算法函数优化--视频分享