訂閱
糾錯
加入自媒體

帝國競爭算法(imperialist competitive algorithm, ICA )詳解+Java代碼

2020-07-11 15:55
程序猿聲
關注

算法解析

其實和群體進化類算法還是非常像的,只不過把個體的概念換成了國家而已。我們一步步來看。

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中的變異很像對不對):

<上一頁  1  2  3  4  下一頁>  
聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權或其他問題,請聯(lián)系舉報。

發(fā)表評論

0條評論,0人參與

請輸入評論內(nèi)容...

請輸入評論/評論長度6~500個字

您提交的評論過于頻繁,請輸入驗證碼繼續(xù)

暫無評論

暫無評論

人工智能 獵頭職位 更多
掃碼關注公眾號
OFweek人工智能網(wǎng)
獲取更多精彩內(nèi)容
文章糾錯
x
*文字標題:
*糾錯內(nèi)容:
聯(lián)系郵箱:
*驗 證 碼:

粵公網(wǎng)安備 44030502002758號