基本介紹
- 中文名:社會認知最佳化
- 外文名:Social Cognitive Optimization
- 縮寫:SCO
- 又稱:社會認知最佳化算法,社會認知算法
算法,比較,
算法
SCO算法可用於求解全局最小化問題 ,其中 為屬於問題空間S的一個問題狀態(State),或稱為知識點,而 為質量衡量函式。
在SCO中,由 個主體(Agent)同時進行求解,而它們通過環境中的社會共享庫(Library)的進行互動。其中每個主體 擁有一個私有知識點 ,而社會共享庫中擁有一個知識集 (即一組知識點,其數量為 )。,SCO以馬爾科夫過程方式(即當前周期的運行只依賴於上一周期的狀態)重複運行 個周期。其算法流程如下:
[1.初始化]:在問題空間S中(隨機)初始化每個主體i的私有知識點 和社會共享庫中的知識集 中的每個知識點。
[2.運行周期]:在每個周期 中:
[2.1.1.榜樣選擇]:在 中選擇一個較高質量的知識點 。通常通過錦標選擇來實現,即隨機選擇 個知識點,並返回其中質量最高(即 值最小)的知識點作為 。
[2.1.2.質量衡量]:比較 和 ,將其中質量高的一個返回為基本知識點 ,而質量低的一個返回為參考知識點 。
[2.1.3.社會學習]:以 和 為輸入產生新知識點 。通常 應在以 的周圍,而且離 的距離和與 離 的距離相關,且應嵌入邊界處理方式使得 屬於S。
[2.1.4.知識反饋]:將部分已有知識反饋給社會共享庫。通常將 直接提交。
[2.1.5.知識更新]:更新主體 本身的私有知識點。通常將 直接替換 ,當然也可通過其它方式更新,比如蒙特卡洛方式。
[2.1.主體認知]對每個主體 :
[2.2.社會共享庫維護]:社會共享庫利用所有主體提交的知識點更新已有的知識集,即將 更新為 。一種簡單的方式是一對一錦標選擇方式,即對每一個主體提交的知識點,替換中隨機選擇個知識點後質量最差(即值最大)的一個。
[3.結束]:返回歷史上得到的質量最高的知識點作為準優解。
【注】在以上這些步驟中,只有2.1.3步尤其和問題空間S的形式相關。例如S為維連續空間時(每維值有給定的上下界),新知識點可以以如下方式產生。首先得到以為中心的對稱點,然後得到以和為頂點的超矩形體(而可視為在該超矩形體的中心),接著得到S和的交集空間(邊界處理方式),並在該交集空間中返回一個純隨機知識點作為。如S為離散和組合空間(如對旅行商問題),則該步需要進行相應的設計。
SCO算法共有三個主要參數,即主體數目,知識集大小,以及執行周期數。通常為的3~5倍。加上初始化過程,總知識點評估次數為,因此總知識點評估次數在T較大時基本與無關。SCO算法還有兩個次要參數,通常固定為默認值,即與。
最最佳化問題可以視為一個類似於Newell和Simon所定義的(可以度量的)問題空間,而問題求解則可看做在問題空間中進行搜尋高質量的問題狀態或知識點。對每個主體而言,其私有知識點可以看做一種私有記憶,而該知識點隨執行周期的變化軌跡則可以視為是對認知過程的一種模擬,即由低質量知識點得到高質量知識點的過程。在每個周期中,每個主體使用他的私有記憶以及參考社會共享庫中的部分信息或線索,通過搜尋得到的新知識將會被主體用來更新它的私有記憶,並提交(部分)已有知識給環境用來最後更新社會共享庫。因此SCO模擬一種簡單的社會認知過程:每個主體的認知過程利用了社會共享庫,而高質量的社會共享庫的積累過程則來源於個體認知過程的貢獻。主體間的互動和合作搜尋實際上是隱式的通過對社會共享庫的使用和影響其更新而實現。如果將在問題空間中迅速得到準優解的過程視為一種創造性思維過程,SCO也可以視為對腦力激盪法的一種簡單模擬,這也意味著SCO有在研究群體創造性方面的擴展的可能性。
比較
以下比較一下SCO和幾種主要的基於群體的最佳化算法的異同點。這些算法包括遺傳算法(Genetic Algorithm, GA),蟻群算法(Ant Colony Optimization, ACO),粒子群最佳化(Particle Swarm Optimization,PSO)。
和GA所不同的是,每個主體長期存在於所有周期中,而不會被新個體替換。也就是,SCO模擬多個個體的學習和認知周期,而GA模擬群體的演化周期。
和ACO所不同的是,每個主體擁有私有記憶,這個記憶長期存在於所有周期中。在這點上,SCO和PSO類似。主體的私有記憶保證了個體學習能力,有助於群體中湧現新知識並維護群體知識的差異性。
和PSO所不同的是,社會共享庫中的知識和主體中的知識相互獨立。首先,拿走某個主體,不會影響社會共享庫。在這點上,SCO和ACO類似。減少個體數目不會嚴重影響算法性能,SCO甚至能在只有一個個體時得到比較穩定的搜尋結果,儘管使用多個個體會使得搜尋過程更魯棒。其次,改變庫裡面的部分信息,不會直接影響到主體本身,因此也可以通過調整社會共享庫來調節算法性能。