展會信息港展會大全

遺傳算法中種群大小必須為偶數嗎
來源:互聯(lián)網   發(fā)布日期:2011-09-19 13:30:15   瀏覽:17712次  

導讀:遺傳算法中種群大小必須為偶數嗎...

最佳答案

遺傳算法中種群大小必須為偶數嗎

  • 452722723qqq | 2009-12-27 11:54:04
  • 遺傳算法(Genetic Algorithm)是模擬達爾文生物進化論的自然選擇和遺傳學機理的生物進化過程的計算模型,是一種通過模擬自然進化過程搜索最優(yōu)解的方法,它最初由美國Michigan大學J.Holland教授于1975年首先提出來的,并出版了頗有影響的專著《Adaptation in Natural and Artificial Systems》,GA這個名稱才逐漸為人所知,J.Holland教授所提出的GA通常為簡單遺傳算法(SGA)。  遺傳算法是從代表問題可能潛在的解集的一個種群(population)開始的,而一個種群則由經過基因(gene)編碼的一定數目的個體(individual)組成。每個個體實際上是染色體(chromosome)帶有特征的實體。染色體作為遺傳物質的主要載體,即多個基因的集合,其內部表現(即基因型)是某種基因組合,它決定了個體的形狀的外部表現,如黑頭發(fā)的特征是由染色體中控制這一特征的某種基因組合決定的。因此,在一開始需要實現從表現型到基因型的映射即編碼工作。由于仿照基因編碼的工作很復雜,我們往往進行簡化,如二進制編碼,初代種群產生之后,按照適者生存和優(yōu)勝劣汰的原理,逐代(generation)演化產生出越來越好的近似解,在每一代,根據問題域中個體的適應度(fitness)大小選擇(selection)個體,并借助于自然遺傳學的遺傳算子(genetic operators)進行組合交叉(crossover)和變異(mutation),產生出代表新的解集的種群。這個過程將導致種群像自然進化一樣的后生代種群比前代更加適應于環(huán)境,末代種群中的最優(yōu)個體經過解碼(decoding),可以作為問題近似最優(yōu)解。傳算法是解決搜索問題的一種通用算法,對于各種通用問題都可以使用。搜索算法的共同特征為:
     、 首先組成一組候選解;
     、 依據某些適應性條件測算這些候選解的適應度;
     、 根據適應度保留某些候選解,放棄其他候選解;
      ④ 對保留的候選解進行某些操作,生成新的候選解。
      在遺傳算法中,上述幾個特征以一種特殊的方式組合在一起:基于染色體群的并行搜索,帶有猜測性質的選擇操作、交換操作和突變操作。這種特殊的組合方式將遺傳算法與其它搜索算法區(qū)別開來。
      遺傳算法還具有以下幾方面的特點:
      (1)遺傳算法從問題解的串集開始嫂索,而不是從單個解開始。這是遺傳算法與傳統(tǒng)優(yōu)化算法的極大區(qū)別。傳統(tǒng)優(yōu)化算法是從單個初始值迭代求最優(yōu)解的;容易誤入局部最優(yōu)解。遺傳算法從串集開始搜索,覆蓋面大,利于全局擇優(yōu)。
      (2)許多傳統(tǒng)搜索算法都是單點搜索算法,容易陷入局部的最優(yōu)解。遺傳算法同時處理群體中的多個個體,即對搜索空間中的多個解進行評估,減少了陷入局部最優(yōu)解的風險,同時算法本身易于實現并行化。
      (3)遺傳算法基本上不用搜索空間的知識或其它輔助信息,而僅用適應度函數值來評估個體,在此基礎上進行遺傳操作。適應度函數不僅不受連續(xù)可微的約束,而且其定義域可以任意設定。這一特點使得遺傳算法的應用范圍大大擴展。
      (4)遺傳算法不是采用確定性規(guī)則,而是采用概率的變遷規(guī)則來指導他的搜索方向。
      (5)具有自組織、自適應和自學習性。遺傳算法利用進化過程獲得的信息自行組織搜索時,硬度大的個體具有較高的生存概率,并獲得更適應環(huán)境的基因結構。由于遺傳算法的整體搜索策略和優(yōu)化搜索方法在計算是不依賴于梯度信息或其它輔助知識,而只需要影響搜索方向的目標函數和相應的適應度函數,所以遺傳算法提供了一種求解復雜系統(tǒng)問題的通用框架,它不依賴于問題的具體領域,對問題的種類有很強的魯棒性,所以廣泛應用于許多科學,下面我們將介紹遺傳算法的一些主要應用領域:
      1、 函數優(yōu)化。
      函數優(yōu)化是遺傳算法的經典應用領域,也是遺傳算法進行性能評價的常用算例,許多人構造出了各種各樣復雜形式的測試函數:連續(xù)函數和離散函數、凸函數和凹函數、低維函數和高維函數、單峰函數和多峰函數等。對于一些非線性、多模型、多目標的函數優(yōu)化問題,用其它優(yōu)化方法較難求解,而遺傳算法可以方便的得到較好的結果。
      2、 組合優(yōu)化
      隨著問題規(guī)模的增大,組合優(yōu)化問題的搜索空間也急劇增大,有時在目前的計算上用枚舉法很難求出最優(yōu)解。對這類復雜的問題,人們已經意識到應把主要精力放在尋求滿意解上,而遺傳算法是尋求這種滿意解的最佳工具之一。實踐證明,遺傳算法對于組合優(yōu)化中的NP問題非常有效。例如遺傳算法已經在求解旅行商問題、 背包問題、裝箱問題、圖形劃分問題等方面得到成功的應用。
      此外,GA也在生產調度問題、自動控制、機器人學、圖象處理、人工生命、遺傳編碼和機器學習等方面獲得了廣泛的運用。
  • 遺傳算法中種群大小必須為偶數嗎

  • hjkpal | 2009-12-27 15:28:37
  • function [Zp,Y1p,Y2p,Y3p,Xp,LC1,LC2]=JSPGA(M,N,Pm,T,P)
    %--------------------------------------------------------------------------
    % JSPGA.m
    % 車間作業(yè)調度問題遺傳算法
    %--------------------------------------------------------------------------
    % 輸入參數列表
    % M       遺傳進化迭代次數
    % N       種群規(guī)模(取偶數)
    % Pm      變異概率
    % T       m×n的矩陣,存儲m個工件n個工序的加工時間
    % P       1×n的向量,n個工序中,每一個工序所具有的機床數目
    % 輸出參數列表
    % Zp      最優(yōu)的Makespan值
    % Y1p     最優(yōu)方案中,各工件各工序的開始時刻,可根據它繪出甘特圖
    % Y2p     最優(yōu)方案中,各工件各工序的結束時刻,可根據它繪出甘特圖
    % Y3p     最優(yōu)方案中,各工件各工序使用的機器編號
    % Xp      最優(yōu)決策變量的值,決策變量是一個實數編碼的m×n矩陣
    % LC1     收斂曲線1,各代最優(yōu)個體適應值的記錄
    % LC2     收斂曲線2,各代群體平均適應值的記錄
    % 最后,程序還將繪出三副圖片:兩條收斂曲線圖和甘特圖(各工件的調度時序圖)

    %第一步:變量初始化
    [m,n]=size(T);%m是總工件數,n是總工序數
    Xp=zeros(m,n);%最優(yōu)決策變量
    LC1=zeros(1,M);%收斂曲線1
    LC2=zeros(1,N);%收斂曲線2

    %第二步:隨機產生初始種群
    farm=cell(1,N);%采用細胞結構存儲種群
    for k=1:N
       X=zeros(m,n);
       for j=1:n
           for i=1:m
               X(i,j)=1+(P(j)-eps)*rand;
           end
       end
       farm{k}=X;
    end

    counter=0;%設置迭代計數器
    while counter
     
       %第三步:交叉
       newfarm=cell(1,N);%交叉產生的新種群存在其中
       Ser=randperm(N);
       for i=1:2:(N-1)
           A=farm{Ser(i)};%父代個體
           B=farm{Ser(i+1)};
           Manner=unidrnd(2);%隨機選擇交叉方式
           if Manner==1
               cp=unidrnd(m-1);%隨機選擇交叉點
               %雙親雙子單點交叉
               a=[A(1:cp,:);B((cp+1):m,:)];%子代個體
               b=[B(1:cp,:);A((cp+1):m,:)];
           else
               cp=unidrnd(n-1);%隨機選擇交叉點
               a=[A(:,1:cp),B(:,(cp+1):n)];%雙親雙子單點交叉
               b=[B(:,1:cp),A(:,(cp+1):n)];
           end
           newfarm{i}=a;%交叉后的子代存入newfarm
           newfarm{i+1}=b;
       end
       %新舊種群合并
       FARM=[farm,newfarm];
     
       %第四步:選擇復制
       FITNESS=zeros(1,2*N);
       fitness=zeros(1,N);
       plotif=0;
       for i=1:(2*N)
           X=FARM{i};
           Z=COST(X,T,P,plotif);%調用計算費用的子函數
           FITNESS(i)=Z;
       end
       %選擇復制采取兩兩隨機配對競爭的方式,具有保留最優(yōu)個體的能力
       Ser=randperm(2*N);
       for i=1:N
           f1=FITNESS(Ser(2*i-1));
           f2=FITNESS(Ser(2*i));
           if f1<=f2
               farm{i}=FARM{Ser(2*i-1)};
               fitness(i)=FITNESS(Ser(2*i-1));
           else
               farm{i}=FARM{Ser(2*i)};
               fitness(i)=FITNESS(Ser(2*i));
           end
       end
       %記錄最佳個體和收斂曲線
       minfitness=min(fitness)
       meanfitness=mean(fitness)
       LC1(counter+1)=minfitness;%收斂曲線1,各代最優(yōu)個體適應值的記錄
       LC2(counter+1)=meanfitness;%收斂曲線2,各代群體平均適應值的記錄
       pos=find(fitness==minfitness);
       Xp=farm{pos(1)};
     
       %第五步:變異
       for i=1:N
           if Pm>rand;%變異概率為Pm
               X=farm{i};
               I=unidrnd(m);
               J=unidrnd(n);
               X(I,J)=1+(P(J)-eps)*rand;
               farm{i}=X;
           end
       end
       farm{pos(1)}=Xp;
     
       counter=counter+1
    end

    %輸出結果并繪圖
    figure(1);
    plotif=1;
    X=Xp;
    [Zp,Y1p,Y2p,Y3p]=COST(X,T,P,plotif);
    figure(2);
    plot(LC1);
    figure(3);
    plot(LC2);
  • 分享到:

    贊助本站

    相關熱詞: keywords String

    相關內容
    AiLab云推薦
    展開

    熱門欄目HotCates

    Copyright © 2010-2024 AiLab Team. 人工智能實驗室 版權所有    關于我們 | 聯(lián)系我們 | 廣告服務 | 公司動態(tài) | 免責聲明 | 隱私條款 | 工作機會 | 展會港