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

📄 my_sga_calfitvalue.asv

📁 多种群的链式智能体遗传算法
💻 ASV
字号:
%计算个体的适应值
%遗传算法子程序
%计算个体的适应值
function fitvalue=my_sga_calfitvalue(pop,fun_num,var_num)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 调试用语句
% pop=[1023,980,2133,726,1946,657,1702,1224,1522,807;
%      2025,2565,1773,2340,2354,1144,2061,240,1573,825];
%  popsize=10;
%  
%   fitvalue=[96.3814,229.8687,20.4580,142.9572,24.9700,2.2584,34.3755,71.0670,9.2961,9.4407 ];
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[px,py]=size(pop);
popsize=py;
fitvalue=zeros(1,popsize);
% var_num = 10;
pop_con = pop;
switch  fun_num
    case 1
%         pop_con=(pop-10000)./100;   %pop数据准备 将区间由(0,,3096)划到(--1.048,2.048)
        for i=1:popsize
%         fitvalue(1,i)=-(pop_con(1,i)^2+pop_con(2,i)^2);
          for j = 1:var_num
              fitvalue(1,i)=fitvalue(1,i)-(pop_con(j,i)^2);
          end
        end
        
    case 2
%         pop_con=(pop-1000)./100;   %pop数据准备 将区间由(0,,3096)划到(--1.048,2.048)
        for i=1:popsize
%             fitvalue(1,i)=-(abs(pop_con(1,i))+abs(pop_con(2,i))+abs(pop_con(1,i))*abs(pop_con(2,i)));
              time = 1;
              and_value = 0;
          for j = 1:var_num
              and_value = and_value + abs(pop_con(j,i));
              time = time * abs(pop_con(j,i));
              fitvalue(1,i)=fitvalue(1,i)-(and_value + time);
          end
          
        end
       
    
    case 3
        pop_con=(pop-10000)./100;   %pop数据准备 将区间由(0,,3096)划到(--1.048,2.048)
        for i=1:popsize
%         fitvalue(1,i)=-(pop_con(1,i)^2+(pop_con(1,i)+pop_con(2,i))^2);
          
          for var_j = 1:var_num
              add_value  = 0;
              for add_j = 1:var_j
                  add_value = add_value + pop_con(add_j,i);
              end
              fitvalue(1,i) = fitvalue(1,i) - add_value^2;
          end
        end
        
    case 4 %better
        pop_con=(pop-10000)./100;
        for i=1:popsize
%             fitvalue(1,i)=-max(abs(pop_con(1,i)),abs(pop_con(2,i)));
              fitvalue(1,i) = -max(abs(pop_con(:,i)));
        end
        
    case 5
        pop_con=(pop-30000)./1000;   %pop数据准备 将区间由(0,,3096)划到(--1.048,2.048)
        for i=1:popsize
%         fitvalue(1,i)=-(100*(pop_con(2,i)-pop_con(1,i)^2)^2+(pop_con(1,i)-1)^2);
          for j = 1:var_num-1
              fitvalue(1,i) = fitvalue(1,i) - (100 * (pop_con(j+1,i)-pop_con(j,i)^2)^2 + (pop_con(j,i)-1)^2);
          end

        end
        
    case 6
        pop_con=(pop-10000)./100;
        for i=1:popsize
%             fitvalue(1,i)=-((pop_con(1,i)+0.5)^2+(pop_con(2,i)+0.5)^2);
             for j = 1:var_num
                 fitvalue(1,i) = fitvalue(1,i) - ((pop_con(j,i)+0.5)^2);
             end
        end
        
    case 7 % worse
        pop_con=(pop-12800)./10000;   %pop数据准备 将区间由(0,,3096)划到(--1.048,2.048)
        for i=1:popsize
%         fitvalue(1,i)=-(pop_con(1,i)^4+rand+2*pop_con(2,i)^4+rand);
           for j = 1:var_num
               fitvalue(1,i) = fitvalue(1,i) - (j * pop_con(j,i)^4 + rand);
           end
               
        end
   
    case 8
       pop_con=(pop-50000)./100;   %pop数据准备 将区间由(0,,3096)划到(--1.048,2.048)
       for i=1:popsize
%             fitvalue(1,i)=-(-pop_con(1,i)*sin(sqrt(abs(pop_con(1,i))))-pop_con(2,i)*sin(sqrt(abs(pop_con(2,i)))));
          for j = 1:var_num
              fitvalue(1,i)=fitvalue(1,i)-(-pop_con(j,i)*sin(sqrt(abs(pop_con(j,i)))));
          end
       end
    
    case 9
        pop_con=(pop-51200)./10000; 
        for i=1:popsize
%             fitvalue(1,i)=-(pop_con(1,i)^2-10*cos(2*pi*pop_con(1,i))+10+pop_con(2,i)^2-10*cos(2*pi*pop_con(2,i))+10);
           for j = 1:var_num
               fitvalue(1,i) = fitvalue(1,i) - (pop_con(j,i)^2-10*cos(2*pi*pop_con(j,i))+10);
           end
        end
    
    case 10
        pop_con=(pop-32000)./1000; 
        for i=1:popsize
%             fitvalue(1,i)=-(-20*exp(-0.2*sqrt(0.5*(pop_con(1,i)^2+pop_con(2,i)^2)))-exp(0.5*(cos(2*pi*pop_con(1,i))+cos(2*pi*pop_con(2,i))))+20+exp(1));
            add_value = 0;
            add_cos = 0;
            for j = 1:var_num
                add_value = add_value + (1/var_num) *pop_con(j,i)^2;
                add_cos = add_cos + (1/var_num) * cos(2 * pi * pop_con(j,i));
            end
            fitvalue(1,i) = -(-20 * exp(-0.2 * sqrt(add_value)) - exp(add_cos) + 20 + exp(1));

        end
        
     case 11
        pop_con=(pop-60000)./100; 
        for i=1:popsize
%             fitvalue(1,i)=-(0.00025*(pop_con(1,i)^2+pop_con(2,i)^2)-cos(pop_con(1,i)/sqrt(1))*cos(pop_con(2,i)/sqrt(2))+1);
              add_value = 0;
              time = 1;
              for j = 1:var_num
                  add_value = add_value + pop_con(j,i)^2;
                  time = time * cos(pop_con(j,i)/sqrt(j));
              end
              fitvalue(1,i) = -(0.00025 * add_value - time + 1);
        end
        
    case 12    
       pop_con=(pop-10000)./100; 
       for i=1:popsize
%        fitvalue(1,i)=[0.5+[((sin(pop_con(1,i)))^2+(sin(pop_con(2,i)))^2)^0.5-0.5]/[1+0.001*(pop_con(1,i)^2+pop_con(2,i)^2)]^2];
         add_value = 0;
         for j = 1:var_num
             add_value = add_value + sin(pop_con(j,i))^2;
         end
         fitvalue(1,i) = -(0.5 + ((add_value)^0.5 - 0.5)/(1 + 0.001 * add_value^2));

       end
       
    case 13    
       pop_con=(pop-10000)./100; 
       for i=1:popsize
%        fitvalue(1,i)=[0.5+[sin((pop_con(1,i)^2+pop_con(2,i)^2)^0.5)-0.5]/[1+0.001*(pop_con(1,i)^2+pop_con(2,i)^2)]^2];
         add_value = 0;
         for j = 1:var_num
             add_value = add_value + pop_con(j,i)^2;
         end
         fitvalue(1,i) = -(0.5 + (sin(add_value^0.5) - 0.5)/(1 + 0.001 * add_value^2));
       end
       
    otherwise
        return;
        
%    fitvalue(1,i)=87000000-(100*(pop_con(2,i)-pop_con(1,i)^2)^2+(pop_con(1,i)-1)^2);
%     1
%     fitvalue(1,i)=0.5+sin(pop_con(1,i))^2/(2+sin(pop(1,i))^3);%2
    
%     fitvalue(1,i)=(sin(2*pop_con(1,i))+cos(5*pop_con(1,i)))^3;%3   (Sin2x+cos5x)^3
%     
%     fitvalue(1,i)=((sin(3*pop_con(1,i)))^3+(cos(4*pop_con(1,i)))^3)^3;  %4    (sin(3*x)^3+cos(4*x)^3)^3;
%  fitvalue(1,i)=121-(abs(pop_con(1,i))+abs(pop_con(2,i))+abs(pop_con(1,i))*abs(pop_con(2,i)));
% fitvalue(1,i)=-(pop_con(1,i)^2+(pop_con(1,i)+pop_con(2,i))^2);
%  fitvalue(1,i)=50000-(pop_con(1,i)^2+(pop_con(1,i)+pop_con(2,i))^2);
%  fitvalue(1,i)=30-(pop_con(1,i)^4+rand+2*pop_con(2,i)^4+rand);
% fitvalue(1,i)=25-f(1,i);
%  fitvalue(1,i)=120-(pop_con(1,i)^2-10*cos(2*pi*pop_con(1,i))+10+pop_con(2,i)^2-10*cos(2*pi*pop_con(2,i))+10);
%  fitvalue(1,i)=1500+pop_con(1,i)*sin(sqrt(abs(pop_con(1,i))))+pop_con(2,i)*sin(sqrt(abs(pop_con(2,i))));
% fitvalue(1,i)=pop_con(1,i)*sin(sqrt(abs(pop_con(1,i))))+pop_con(2,i)*sin(sqrt(abs(pop_con(2,i))));
%   fitvalue(1,i)=30-(-20*exp(-0.2*sqrt(0.5*(pop_con(1,i)^2+pop_con(2,i)^2)))-exp(0.5*(cos(2*pi*pop_con(1,i))+cos(2*pi*pop_con(2,i))))+20+exp(1));
% fitvalue(1,i)=200-(0.00025*(pop_con(1,i)^2+pop_con(2,i)^2)-cos(pop_con(1,i)/sqrt(1))*cos(pop_con(2,i)/sqrt(2))+1);
% fitvalue(1,i)=20000-(pop_con(1,i)^2+pop_con(2,i)^2);
end







⌨️ 快捷键说明

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