NSGA-II改进之种群初始化

03-05 阅读 0评论

NSGA-II改进之种群初始化

    • 1-什么是佳点集
    • 2-佳点集初始化种群的方法
    • 3-佳点集初始化种群与随机初始化种群的对比
    • 4-佳点集初始化种群代码(matlab)
    • 5-画图对比

      原NSGA-II的算法在初始化种群的时候采用的是随机生成。随机代表着不确定,且随机生成的种群在整个空间上表现为不均匀;为消除随机初始化带来的不确定,和种群在空间上分布不均匀问题,由此引出新的初始化种群方式:佳点集生成种群

      NSGA-II改进之种群初始化,NSGA-II改进之种群初始化,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,个人,影响,空间,第1张
      (图片来源网络,侵删)

      注:种群的初始化结果是否对种群的进化是否有影响个人并没有做太大的研究,仁者见仁智者见智。

      1-什么是佳点集

      佳点集最初是由华罗庚等提出,基本定义和构造为:

      假设 G s 是 s 维的欧式几何空间,那么 r ∈ G s , 那么 P n ( i ) = ( r 1 i i , r 2 i 2 , r 3 i 3 , . . . r n i n ) , i = 1 , 2 , 3 , . . . n 。 n 表示样本数量, P n ( i ) 表示佳点集,而 r 指的是佳点,一般取 r = { 2 c o s ( 2 π j k ) i , 1 ≤ i ≤ n ; 1 ≤ j ≤ s } 或者取 r = { e j i } 。其中 k 是满足 ( k − 3 ) / 2 ≥ 的最小素数。 \begin{aligned} &假设Gs是s维的欧式几何空间,那么r\in Gs,那么P_n(i)=(r_1i_i,r_2i_2,r_3i_3,...r_ni_n),i=1,2,3,...n。 \\&n表示样本数量,P_n(i)表示佳点集,而r指的是佳点,一般取 r=\begin{Bmatrix} 2cos(\frac{2\pi j}{k})i, 1\leq i\leq n;1\leq j\leq s \end{Bmatrix} 或者取 \\&r=\begin{Bmatrix} e^ji \end{Bmatrix}。其中k是满足( k − 3 ) / 2 ≥ 的最小素数。 \end{aligned} ​假设Gs是s维的欧式几何空间,那么r∈Gs,那么Pn​(i)=(r1​ii​,r2​i2​,r3​i3​,...rn​in​),i=1,2,3,...n。n表示样本数量,Pn​(i)表示佳点集,而r指的是佳点,一般取r={2cos(k2πj​)i,1≤i≤n;1≤j≤s​}或者取r={eji​}。其中k是满足(k−3)/2≥的最小素数。​

      2-佳点集初始化种群的方法

      已知:种群所在的空间维度为n,种群数量为m

      s t e p 1 : 计算 r 值, r = ( r 1 , r 2 , . . . r n ) , 其中 r j = m o d ( 2 c o s ( 2 π j 7 ) m i , 1 ) , 1 ≤ j ≤ n 。 m i 表示第 i 个个体 s t e p 2 :构造数量 m 的佳点集: P n ( i ) = { ( r 1 i 1 , r 2 i 2 , . . . r n i n ) } , i = 1 , 2 , 3 , . . . n s t e p 3 : 将 P n 映射到种群所在的可行域上: X i j = a j + P n ( i ) ( b j − a j ) 其中 a j 表示当前维度的下限, b j 表示当前维度的上限 \begin{aligned} &step1:计算r值,r=(r_1,r_2,...r_n),其中r_j=mod(2cos(\frac{2\pi j}{7})m_i,1),1\leq j\leq n。m_i表示第i个个体\\ \\&step2:构造数量m的佳点集: \\& P_n(i)=\begin{Bmatrix} (r_1i_1,r_2i_2,...r_ni_n) \end{Bmatrix} ,i=1,2,3,...n\\ \\&step3:将P_n映射到种群所在的可行域上:\\ &X_i^j=a_j+P_n(i)(b_j-a_j) \\&其中a_j表示当前维度的下限,b_j表示当前维度的上限 \end{aligned} ​step1:计算r值,r=(r1​,r2​,...rn​),其中rj​=mod(2cos(72πj​)mi​,1),1≤j≤n。mi​表示第i个个体step2:构造数量m的佳点集:Pn​(i)={(r1​i1​,r2​i2​,...rn​in​)​},i=1,2,3,...nstep3:将Pn​映射到种群所在的可行域上:Xij​=aj​+Pn​(i)(bj​−aj​)其中aj​表示当前维度的下限,bj​表示当前维度的上限​

      3-佳点集初始化种群与随机初始化种群的对比

      假设种群规模为100

      NSGA-II改进之种群初始化

      佳点集生成

      NSGA-II改进之种群初始化

      随机生成

      NSGA-II改进之种群初始化,NSGA-II改进之种群初始化,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,个人,影响,空间,第4张
      (图片来源网络,侵删)

      4-佳点集初始化种群代码(matlab)

      % pop_size:种群数量
      % dimension:维度
      % bound:取值范围
      function pop = init_pop(pop_size,dimension,bounds)
      %佳点集生成初始种群
      p = zeros(pop_size,dimension);
      prime_number_min = dimension*2 +3;
      % 找到(prime_number_min-3)/2>=dimension的最小素数prime_number_min
      while 1
          if isprime(prime_number_min)==1
              break;
          else
             prime_number_min = prime_number_min + 1;
          end
      end
      for i = 1:pop_size
          for j = 1:dimension
              r = mod(2*cos(2*pi*j/prime_number_min)*i,1);% 对应维度的r
      %         r = mod(exp(j)*i,1);
              p(i,j) = bounds(j,1)+r*(bounds(j,2)-bounds(j,1));
          end
      end
      pop = p;
      end
      % %随机i生成定义域范围内种群
      % p = rand(pop_size,dimension);%生成popsize*dimension的0-1矩阵
      % for i = 1:dimension
      %     p(:,i) = bounds(i,1)+p(:,i)*(bounds(i,2)-bounds(i,1));
      % end
      

      5-画图对比

      function test_plot_pop()
      % 分别画出2维,3维情况下采用佳点集和随机生成图的对比
      % 定于种群大小
      pop_size = 100;
      % 定义种群的取值范围 
      dimension_2 = 2;
      dimension_3 = 3;
      bounds_2 = [ones(dimension_2,1)*0,ones(dimension_2,1)*1];
      bounds_3 = [ones(dimension_3,1)*0,ones(dimension_3,1)*1];
      % 二维、三维的佳点集种群
      pop2 = init_pop(pop_size,dimension_2,bounds_2);
      pop3 = init_pop(pop_size,dimension_3,bounds_3);
      % 二维、三维随机生成的种群
      pop2_rand = init_pop_rand(pop_size,dimension_2,bounds_2);
      pop3_rand = init_pop_rand(pop_size,dimension_3,bounds_3);
      % 画出二维下图形佳点集种群,和随机种群
      subplot(2,2,1)
      plot(pop2(:,1),pop2(:,2),'*')
      subplot(2,2,2)
      plot(pop2_rand(:,1),pop2_rand(:,2),'*')
      subplot(2,2,3)
      plot3(pop3(:,1),pop3(:,2),pop3(:,3),'*')
      subplot(2,2,4)
      plot3(pop3_rand(:,1),pop3_rand(:,2),pop3_rand(:,3),'*')
      end
      %%
      % pop_size:种群数量
      % dimension:维度
      % bound:取值范围
      function pop = init_pop(pop_size,dimension,bounds)
      %佳点集生成初始种群
      p = zeros(pop_size,dimension);
      prime_number_min = dimension*2 +3;
      % 找到(prime_number_min-3)/2>=dimension的最小素数prime_number_min
      while 1
          if isprime(prime_number_min)==1
              break;
          else
             prime_number_min = prime_number_min + 1;
          end
      end
      for i = 1:pop_size
          for j = 1:dimension
              r = mod(2*cos(2*pi*j/prime_number_min)*i,1);% 对应维度的r
      %         r = mod(exp(j)*i,1);
              p(i,j) = bounds(j,1)+r*(bounds(j,2)-bounds(j,1));
          end
      end
      pop = p;
      end
      %%
      function pop = init_pop_rand(pop_size,dimension,bounds)
      %随机i生成定义域范围内种群
      p = rand(pop_size,dimension);%生成popsize*dimension的0-1矩阵
      for i = 1:dimension
          p(:,i) = bounds(i,1)+p(:,i)*(bounds(i,2)-bounds(i,1));
      end
      pop = p;
      end
      

      NSGA-II改进之种群初始化

      可以把图画出来之后旋转不同视角下的分布对比。

      NSGA-II改进之种群初始化,NSGA-II改进之种群初始化,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,个人,影响,空间,第6张
      (图片来源网络,侵删)

免责声明
本网站所收集的部分公开资料来源于AI生成和互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,人围观)

还没有评论,来说两句吧...

目录[+]