• 沒有找到結果。

本章將介紹基因演算法(genetic algorithms)的基本概念以及之後是如何利用 此演算法來幫助解決我們所面臨的問題。

3-1 基因演算法的由來與簡介

基因演算法是一種最佳化與或然率的搜尋技術,它的概念根源自自然界中基 因的原則與自然淘汰定律。基因演算法的基本概念是由John Holland 於 1960 年 代末期到1970 年代初期所提出,此後此演算法便在許多領域上被廣泛的使用,

如:計算機程式設計、人工智慧、神經網路訓練、最佳化問題等許多方面。

以下將列出基因演算法的幾項主要優點並與傳統的最佳化演算法作一些比 較,基因演算法的主要優點如下:

z 可以對連續性的變數或離散式的變數做最佳化。

z 不需要微分(derivative)的資訊。

z 從價值表面(cost surface)的寬廣取樣做同時地搜尋。

z 可以處理大量的變數。

z 是很適合平行處理的電腦。

z 能夠最佳化有著極為複雜的價值表面的變數(亦即基因演算法可以讓搜尋跳 出局部的最小值(local minimum))。

z 基因演算法的結果可以提供一連串的最佳化變數,並非只是單一的解。

z 可以對變數做編碼(encode),因此最佳化的過程是對這些編碼後的變數做最 佳化。

從上所描述基因演算法的特性與優點,我們可以看出它與傳統最佳化方法的

差異在於:1) 基因演算法是將候選的解轉換成含有一群參數的”個別染色體 (individual chromosome)”;2) 在搜尋的過程中,基因演算法藉由染色體所組成的 族群與具體的運算子(operators)去進行染色體之間資訊的交換,因此基因演算法 一些點做為一開始的集合,意指 P(0)。我們稱 P(0)為最初族群(initial population),

然後計算出 P(0)中每一點的目標函數(objective function),以此計算為根據,將可

3-2 染色體與編碼結構(Chromosomes and Encoding

Schemes)

的二位元串列(binary strings)。我們在此定義 L 為染色體的長度,所以對於每一

個染色體 x 它的目標函數就是 f(x)。

3-3 選擇與進化(Selection and Evolution)

本節將對選擇、交配與突變這三個基因演算法核心的運作做詳細的介紹與說 (tournament scheme),以及存活者選擇方法:等級法(ranking scheme)。

轉輪盤法:

我們先建立一組與P(k)有相同元素數目的集合M(k),這所謂的相同數目我們定義 成N,稱為族群大小(population size),而集合M(k)則稱為配對池(mating pool),由

P(k)使用如下的程序所形成,在M(k)中的每一個點m

(k)有著以下所列的機率會相 等於在P(k)中的x(k)

( ( ))

P

s是選擇機率(selection probability),此方法雖然簡單,但是等級法具有能有效地 加快族群的收斂速度與增近整個族群平均的品質等優點。

3-3-2 進化

進化這一階段指就是進行交配與突變的步驟。首先我們會先介紹交配這一步 驟的運作,之後則對突變進行詳細的說明。

交配運作簡單的說就是取出一對染色體,將此對染色體稱為雙親,讓它們交 換彼此的子串列(substrings)來形成新的一對子代染色體,每一對從配對池中被選 中來當雙親的染色體是隨機被選擇的,而每個染色體被選擇到來做交配的機率為

p

c,也就是所謂的交配率(crossover rate),將交配運作與選擇運作的互相合作之 下,一旦有更適合生存的子代產生,也就是此子代相較於其他子代有較大的目標 函數,在經由選擇之後此子代將有高的機率可以存活下來,這樣將使得下一代族 群的平均目標函數成功地得到改善。一旦要進行交配的雙親染色體決定之後,接 下來就是對它們進行交配運作,交配運作的形式有很多種,接下來我們將介紹三 個最常被使用的交配運作:單點交配(one-point crossover)、多點交配(muiti-point crossover)以及均勻交配(uniform crossover)。

單點交配:

首先,我們從1 到 L-1 的數字中隨機挑選一個數字,其中 L 是指染色體的長 度,將這選出來的數字當成交叉點(crossing site),交換雙親染色體在此交叉點之 後的所有子串列,就會產生經由單點交配之後的一對新子代,如圖3-3-2.1 所示。

圖3-3-2.1 單點交配示意圖

多點交配:

先隨機產生多個交叉點,之後根據決定好的交叉點對雙親染色體的子串列作 交換,圖3-3-2.2 所表示就是多點交配的示意圖。

均勻交配:

在進行均勻交配之前,要隨機產生一組長度與染色體長度相同的二位元串 列,此二位元串列將被如同遮罩(mask)一般地使用,也就是說如果位元的值是 1,

則意味著此位置上的串列必須互相交換,反之,如果位元的值是0,則此位置上 的串列不需互相交換,圖3-3-2.3 將清楚解釋均勻交配的運作。

圖3-3-2.2 多點交配示意圖

圖3-3-2.3 均勻交配示意圖

接下來我們將介紹突變的運作,當執行突變運作時,在配對池中每一個染色

6. 設定 k:=k+1,跳至步驟 2.。

圖3-3-2.5 基因演算法流程圖

3-4 終止的情況(Termination Condition)

2. 不再有所改善(no improvement)。如果基因演算法持續演化許多次以後,所找 出的最好染色體仍然是同樣的,此時就應該停止演化。但這邊值得注意的是,

有時演化的過程中,可能會在一組相同的最佳解停留多次以後,才會演化出 更好的一個解答,所以在此終止條件下,應該經過重複多次基因演算法以及 每做一次基因演算法要有足夠多次的演化之後,所得出的最佳解仍然一樣 時,才確定此為終止條件。

3. 統計(statistics)。如果族群的目標函數之平均(mean)或標準差(standard deviation)已經達到某一程度,那麼就停止基因演算法。這意味著整體的值已 經不會在改變。

4. 重複的次數(number of iterations)。如果基因演算法並沒有因為滿足上述的其 中一個理由而停止的話,此時應該限制最大的演化重複次數,否則演算法將 會無限制的不斷演化下去。

5. 局部最佳解(local optimizer)。如果都一直停留在同一個局部最佳解而不再改 善,此時就該停止,可以考慮使用這組局部最佳解。

其優缺點,主要就是要視所要解決的問題的特性與複雜度,來選擇較適當的一種 來做基因演算法。舉例來說,如果我們所要解決問題的可能解答範圍是在一個很 大的實數空間,而我們用二位元基因演算法來求最佳解,在起初編碼將實數轉換 成二位元的時候可能就有一些誤差,而經過演化所得到的最佳解也是二位元的形 式,再將它經由解碼轉回實數的形式,可能也會造成一些誤差,也就是問題真正 的最佳解可能並非是我們用二位元基因演算法找出來的。因此要根據所針對的問 題本身,先了解其特性與複雜度,選擇一個最適合的基因演算法,來找出我們所 要的最佳解。

第四章 最佳中繼站佈放位置下的中繼站輔助之蜂巢

相關文件