新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 遺傳算法的手工模擬計算示例

        遺傳算法的手工模擬計算示例

        作者: 時間:2011-06-06 來源:網絡 收藏

        為更好地理解的運算過程,下面用來簡單地的各
        個主要執行步驟。

        例:求下述二元函數的最大值:

        本文引用地址:http://www.104case.com/article/150632.htm

        (1) 個體編碼
        的運算對象是表示個體的符號串,所以必須把變量 x1, x2 編碼為一種
        符號串。本題中,用無符號二進制整數來表示。
        因 x1, x2 為 0 ~ 7之間的整數,所以分別用3位無符號二進制整數來表示,將它
        們連接在一起所組成的6位無符號二進制數就形成了個體的基因型,表示一個可
        行解。
        例如,基因型 X=101110 所對應的表現型是:x=[ 5,6 ]。
        個體的表現型x和基因型X之間可通過編碼和解碼程序相互轉換。

        (2) 初始群體的產生
        遺傳算法是對群體進行的進化操作,需要給其淮備一些表示起始搜索點的初始
        群體數據。
        本例中,群體規模的大小取為4,即群體由4個個體組成,每個個體可通過隨機
        方法產生。
        如:011101,101011,011100,111001

        (3) 適應度汁算
        遺傳算法中以個體適應度的大小來評定各個個體的優劣程度,從而決定其遺傳
        機會的大小。
        本例中,目標函數總取非負值,并且是以求函數最大值為優化目標,故可直接
        利用目標函數值作為個體的適應度。

        (4) 選擇運算
        選擇運算(或稱為復制運算)把當前群體中適應度較高的個體按某種規則或模型遺傳到下一代群體中。一般要求適應度較高的個體將有更多的機會遺傳到下一代
        群體中。
        本例中,我們采用與適應度成正比的概率來確定各個個體復制到下一代群體中
        的數量。其具體操作過程是:
        • 先出群體中所有個體的適應度的總和 fi ( i=1.2,…,M );
        • 其次出每個個體的相對適應度的大小 fi / fi ,它即為每個個體被遺傳
        到下一代群體中的概率,
        • 每個概率值組成一個區域,全部概率值之和為1;
        • 最后再產生一個0到1之間的隨機數,依據該隨機數出現在上述哪一個概率區
        域內來確定各個個體被選中的次數。

        (5) 交叉運算
        交叉運算是遺傳算法中產生新個體的主要操作過程,它以某一概率相互交換某
        兩個個體之間的部分染色體。
        本例采用單點交叉的方法,其具體操作過程是:
        • 先對群體進行隨機配對;
        • 其次隨機設置交叉點位置;
        • 最后再相互交換配對染色體之間的部分基因。

        (6) 變異運算
        變異運算是對個體的某一個或某一些基因座上的基因值按某一較小的概率進
        行改變,它也是產生新個體的一種操作方法。
        本例中,我們采用基本位變異的方法來進行變異運算,其具體操作過程是:
        • 首先確定出各個個體的基因變異位置,下表所示為隨機產生的變異點位置,
        其中的數字表示變異點設置在該基因座處;
        • 然后依照某一概率將變異點的原有基因值取反。

        對群體P(t)進行一輪選擇、交叉、變異運算之后可得到新一代的群體p(t+1)。

        從上表中可以看出,群體經過一代進化之后,其適應度的最大值、平均值都得
        到了明顯的改進。事實上,這里已經找到了最佳個體“111111”。
        [注意]
        需要說明的是,表中有些欄的數據是隨機產生的。這里為了更好地說明問題,
        我們特意選擇了一些較好的數值以便能夠得到較好的結果,而在實際運算過程中
        有可能需要一定的循環次數才能達到這個最優結果。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 嘉禾县| 莱西市| 南康市| 富川| 元江| 蕉岭县| 山阴县| 通许县| 宁城县| 邓州市| 康定县| 汉阴县| 曲松县| 临泽县| 中阳县| 本溪市| 黑河市| 南通市| 静安区| 迁西县| 阿克| 遵义市| 广安市| 五莲县| 灌南县| 宜兰市| 湖北省| 淳安县| 英吉沙县| 贵港市| 忻州市| 江津市| 隆化县| 沙洋县| 正宁县| 密山市| 南靖县| 册亨县| 贡嘎县| 格尔木市| 蛟河市|