24小时热门版块排行榜    

查看: 649  |  回复: 1

s20090281

银虫 (小有名气)

[求助] 遗传算法程序中不懂得地方

我最近在看遗传算法,看了一个程序对于其中的一些不太懂,所以想向大家请教一下:
这篇文章是实数编码遗传算法求Rosenbrock函数极大值,这个是从网上下下来的。
for i=1:Size
          xi=E(i,
          x1=xi(1)
          x2=xi(2)
          F(i)=100*(x1^2-x2)^2+(1-x1)^2
           Ji=1./F
           BsJi(i)=min(Ji)
     end
     [OderJi,IndexJi]=sort(BsJi)
      BestJ(kg)=OderJi(1)
      BJ=BestJ(kg)
      Ji=BsJi+eps
      fi=F
      [Oderfi,Indexfi]=sort(fi)
      Bestfi=Oderfi(Size)
      BestS=E(Indexfi(Size),
      bfi(kg)=Bestfi
      fi_sum=sum(fi)
      fi_Size=(Oderfi/fi_sum)*Size
      fi_S=floor(fi_Size)
      r=Size-sum(fi_S)
      Rest=fi_Size-fi_S
      [RestValue,Index]=sort(Rest)
      for i=Size:-1:Size-r+1
          fi_S(Index(i))=fi_S(Index(i))+1
      end
      k=1;
      for i=Size:-1:1
           for j=1:fi_S(i)
                TempE(k,=E(Indexfi(i),
                 k=k+1
           end
      end
      Pc=0.90;
      for i=1:2:Size-1
         temp=rand
         if Pc>temp
             alfa=rand
             TempE(i,=alfa*E(i+1,+(1-alfa)*E(i,
             TempE(i+1,=alfa*E(i,+(1-alfa)*E(i+1,
         end
     end
     TempE(Size,=BestS
     E=TempE
     Pm=0.10-[1:Size]*(0.01)/Size        %Bigger fi,smaller Pm
     Pm_rand=rand(Size,CodeL)
     Mean=(MaxX+MinX)/2
     Dif=MaxX-MinX
     
     for i=1:Size
         for j=1:CodeL
             if Pm(i)>m_rand(i,j)
                 TempE(i,j)=Mean(j)+Dif(j)*(rand-0.5)
             end
         end
     end
end
     %Guarantee TempE(Size, belong to the best individual
     TempE(Size,=BestS
     E=TempE
这句话Rest=fi_Size-fi_S是什么意思呢?还有有的话就像这样的TempE(Size, 为什么要写个括号是什么意思呢?这还是个自适应pm函数是吧? r=Size-sum(fi_S)这句话的r是什么意思呢?还有这句话TempE(k,=E(Indexfi(i),请高手指教。
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

s20090281

银虫 (小有名气)

是:的意思
2楼2011-05-13 15:16:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 s20090281 的主题更新
信息提示
请填处理意见