帝國競爭算法(imperialist competitive algorithm, ICA )詳解+Java代碼
算法解析
其實和群體進化類算法還是非常像的,只不過把個體的概念換成了國家而已。我們一步步來看。
1. 初始化
ICA的個體是國家,相當于遺傳算法中的染色體,對于一個N維的優(yōu)化問題,國家可以表示成如下形式:
國家的勢力大小通過代價函數(shù)來衡量:
國家的勢力和代價函數(shù)值成反比,即代價函數(shù)值越小,國家勢力越大。初始帝國的產(chǎn)生分為以下幾個步驟:
STEP 1:首先,隨機產(chǎn)生個國家,從中選出勢力較大的前個國家作為帝國主義國家,剩下的個國家作為殖民地。
STEP 2:其次,根據(jù)帝國主義國家的勢力大小劃分殖民地。每個帝國的殖民地個數(shù)按照式(1)~(3)計算:
其中,是第個帝國主義國家的代價函數(shù)值。是它的標準化代價。是它的標準化勢力大小。 是第個帝國的初始殖民地個數(shù)。最后,對于每個帝國主義國家,從個殖民地中隨機選擇相應的個數(shù)分配給它,最終形成初始的個帝國。[2]
不過這里解釋一下,一個國家其實可以看成一個解的表示,與遺傳中染色體類似。國家的勢力通常由該國家所表示的解的好壞決定的。一般可以采用隨機或者貪心的方式生成初始國家,然后計算目標函數(shù),計算勢力,再劃分帝國主義國家和殖民地國即可。
2. 殖民地同化
帝國主義國家為了更好地控制其殖民地國家,將自己的思想模式及文化風俗推廣到殖民地國家的過程,稱為同化。ICA中通過所有殖民地向其所屬帝國主義國家移動來模擬同化過程。[2] 當然這個移動可以看出解在解空間上的移動,與鄰域搜索那個移動也有點類似,本質(zhì)還是解的變換。
一個同化的例子如下,其實跟GA中的交叉很相似:
3. 殖民地革命
殖民地革命是對殖民地進行一定的移動,希望其能更靠近最優(yōu)解的位置。但通常而言,對于一個社會來講,不是說有的革命都是成功的有益的。革命也可能導致資源內(nèi)耗,無法進行有效的社會變革從而降低殖民地的力量(參照蘇聯(lián))。一個殖民地革命的例子如下(和GA中的變異很像對不對):

請輸入評論內(nèi)容...
請輸入評論/評論長度6~500個字