關(guān)于作者

 一個(gè)畢業(yè)于北京大學(xué)數(shù)學(xué)力學(xué)系,在中國(guó)科學(xué)院計(jì)算所、計(jì)算中心和網(wǎng)絡(luò)中心工作過(guò),在澳大利亞科工組織DMS、香港浸會(huì)學(xué)院數(shù)學(xué)系和中國(guó)21世紀(jì)議程管理中心等處工作過(guò),多次獲國(guó)家和中科院科技獎(jiǎng)并享受政府特殊津貼的退休老頭。現(xiàn)在在【中國(guó)科普博覽】網(wǎng)“科學(xué)新語(yǔ)林”欄目里開(kāi)設(shè)一個(gè)《數(shù)學(xué)與計(jì)算機(jī)》的個(gè)人專(zhuān)欄,愿和愛(ài)好數(shù)學(xué)與計(jì)算機(jī)的各界網(wǎng)友和青少年朋友,談?wù)剬?duì)數(shù)學(xué)與計(jì)算機(jī)的看法、想法。

《常用算法之智能計(jì)算(六)》:群智能計(jì)算

張建中
2018年12月19日
群智能計(jì)(Swarm Intelligence Computing),又稱群體智能計(jì)算或群集智能計(jì)算,是指一類(lèi)受昆蟲(chóng)、獸群、鳥(niǎo)群和魚(yú)群等的群體行為啟發(fā)而設(shè)計(jì)出來(lái)的具有分布式智能行為特征的一些智能算法。群智能中的“”指的是一組相互之間可以進(jìn)行直接或間接通信的群體;“群智能”指的是無(wú)智能的群體通過(guò)合作表現(xiàn)出智能行為的特性。智能計(jì)算作為一種新興的計(jì)算技術(shù),受到越來(lái)越多研究者的關(guān)注,并和人工生命、進(jìn)化策略以及遺傳算法等有著極為特殊的聯(lián)系,已經(jīng)得到廣泛的應(yīng)用。群智能計(jì)算在沒(méi)有集中控制并且不提供全局模型的前提下,為尋找復(fù)雜的分布式問(wèn)題的解決方案提供了基礎(chǔ)。
對(duì)一般群智能計(jì)算,通常要求滿足以下五條基本原則:

  • 鄰近原則:群內(nèi)的個(gè)體具有對(duì)簡(jiǎn)單的空間或時(shí)間進(jìn)行計(jì)算和評(píng)估的能力;

  • 品質(zhì)原則:群內(nèi)的個(gè)體具有對(duì)環(huán)境以及群內(nèi)其他個(gè)體的品質(zhì)作出響應(yīng)的能力;

  • 多樣性原則:群內(nèi)的不同個(gè)體能夠?qū)Νh(huán)境中某些變化做出不同的多樣反應(yīng);

  • 穩(wěn)定性原則:群內(nèi)個(gè)體的行為模式不會(huì)在每次環(huán)境發(fā)生變化時(shí)都發(fā)生改變;

  • 適應(yīng)性原則:群內(nèi)個(gè)體能夠在所需代價(jià)不高的情況下,適當(dāng)改變自身的行為模式。
群智能計(jì)算現(xiàn)含蟻群算法、蜂群算法、雞群算法、貓群算法、魚(yú)群算法、象群算法、狼群算法、果蠅算法、飛蛾撲火算法、螢火蟲(chóng)算法、細(xì)菌覓食算法、混合蛙跳算法、粒子群算法等諸多智能算法。下面對(duì)它們中間常用的一些重要算法進(jìn)行一些簡(jiǎn)單介紹。
蟻群算法(Ant Colony Algorithm),受螞蟻覓食過(guò)程及其通信機(jī)制的啟發(fā),對(duì)螞蟻群落的食物采集過(guò)程進(jìn)行模擬,可用來(lái)解決計(jì)算機(jī)算法中的經(jīng)典“貨郎擔(dān)問(wèn)題”,即求出需要對(duì)所有n個(gè)城市進(jìn)行訪問(wèn)且只訪問(wèn)一次的最短路徑及其距離。
在解決貨郎擔(dān)問(wèn)題時(shí),蟻群算法設(shè)計(jì)的虛擬“螞蟻”將摸索不同路線,并留下會(huì)隨時(shí)間逐漸消失的虛擬“信息素”。虛擬的“信息素”會(huì)因揮發(fā)而減少;每只螞蟻每次隨機(jī)選擇要走的路徑,它們傾向于選擇路徑比較短的、信息素比較濃的路徑。根據(jù)“信息素較濃的路線更近”的原則,即可選擇出最佳路線。由于這個(gè)算法利用了正反饋機(jī)制,使得較短的路徑能夠有較大的機(jī)會(huì)得到選擇,并且由于采用了概率算法,所以它能夠不局限于局部最優(yōu)解。蟻群算法具有很多特點(diǎn),簡(jiǎn)單說(shuō)來(lái),它是一種自組織的并行算法,具有較強(qiáng)的算法的可靠性、穩(wěn)健性和全局搜索能力。
蟻群基本算法由三個(gè)操作過(guò)程組成,它們分別是解構(gòu)建,信息素更新和后臺(tái)操作。
(1)解構(gòu)建:一定數(shù)目的虛擬螞蟻在完全連接圖中按照某種規(guī)則出發(fā),各自獨(dú)立地根據(jù)信息素和啟發(fā)式信息,采用一個(gè)概率規(guī)則選擇下一步的移動(dòng),直到建立優(yōu)化問(wèn)題一個(gè)完整的解,并對(duì)構(gòu)成的解進(jìn)行質(zhì)量評(píng)估。
(2)信息素更新:包括信息素的釋放過(guò)程和蒸發(fā)過(guò)程。信息素釋放往往根據(jù)構(gòu)成解的質(zhì)量決定釋放量的大小,而信息素蒸發(fā)通常是以一個(gè)固定比例值衰減所有邊上的信息素。整個(gè)更新過(guò)程一般是在解的構(gòu)建完成后,但有時(shí)也會(huì)出現(xiàn)在解構(gòu)建的每一步中。每條邊上信息素的量直接影響螞蟻對(duì)這條邊的選擇概率,因而信息素的分布情況決定了整個(gè)蟻群的搜索空間方向。
(3)后臺(tái)操作:以靈活的機(jī)制執(zhí)行單獨(dú)螞蟻不能完成的宏觀操作,如搜集全局信息素情況,采取局部搜索措施等,從而對(duì)整個(gè)算法的行為進(jìn)行調(diào)控。
以上三個(gè)操作過(guò)程的結(jié)合方式是根據(jù)算法設(shè)計(jì)者考慮問(wèn)題特征時(shí)自由指定的,可以并行、獨(dú)立、交叉以及同步,從某種程度上來(lái)說(shuō)它們之間是相互作用的。
蟻群算法對(duì)于解決貨郎擔(dān)問(wèn)題并不是最好的方法,但它首先提出了一種解決貨郎擔(dān)問(wèn)題的新思路;其次,由于這種算法特有的解決方案,已成功用于解決其他組合優(yōu)化問(wèn)題,如圖著色、最短超串等;最后,通過(guò)對(duì)蟻群算法進(jìn)行的精心研究和應(yīng)用開(kāi)發(fā),現(xiàn)己被大量應(yīng)用于數(shù)據(jù)分析、機(jī)器人協(xié)作問(wèn)題求解,也在電力、通信、水利、采礦、化工、建筑、交通等領(lǐng)域得到成功的應(yīng)用。
蜂群算法Bee Colony Algorithm根據(jù)蜜蜂各自的分工不同,對(duì)蜂群信息共享和交流及進(jìn)行采蜜活動(dòng)等的觀察和研究,對(duì)蜂群的采蜜行為進(jìn)行計(jì)算機(jī)模擬,以此找到問(wèn)題的最優(yōu)解,是一種基于群智能的全局優(yōu)化算法。
經(jīng)過(guò)對(duì)蜜蜂采蜜機(jī)制的觀察和研究,可將除蜂王外的整個(gè)蜂群的蜜蜂分為三類(lèi),即采蜜蜂、觀察蜂和偵察蜂,整個(gè)蜂群的目標(biāo)是尋找花蜜量最大的蜜源。在蜂群算法中,采蜜蜂利用先前的蜜源信息采蜜,尋找新的蜜源并與觀察蜂分享蜜源信息;觀察蜂依據(jù)與采蜜蜂分享的信息尋找新的蜜源;偵查蜂的任務(wù)是尋找一個(gè)新的更有價(jià)值的蜜源,它們?cè)诜浞扛浇S機(jī)地尋找蜜源。蜂群算法通過(guò)對(duì)三類(lèi)蜜蜂功能的模擬,以尋找最短路徑、最大蜜源為目標(biāo),用于尋求問(wèn)題的最優(yōu)解。
群算法(Wolf?Colony Algorithm是基于狼群群體智能,模擬狼群捕食行為及其獵物分配方式,抽象出游走、召喚、圍攻三種智能行為以及“勝者為王”的頭狼產(chǎn)生規(guī)則和“強(qiáng)者生存”的狼群更新機(jī)制,提出一種新的群智能算法。算法采用基于狼主體的自下而上的設(shè)計(jì)方法和基于職責(zé)分工的協(xié)作式搜索路徑結(jié)構(gòu),通過(guò)狼群個(gè)體對(duì)獵物氣味、環(huán)境信息的探知、人工狼相互間信息的共享和交互以及人工狼基于自身職責(zé)的個(gè)體行為決策最終實(shí)現(xiàn)了狼群捕獵的全過(guò)程模擬。
粒子群算法(Particle Swarm Algorithm)源于對(duì)鳥(niǎo)群和獸群捕食行為的研究,基本核心是利用群體中的個(gè)體對(duì)信息的共享從而使得整個(gè)群體的運(yùn)動(dòng)在問(wèn)題求解空間中產(chǎn)生從無(wú)序到有序的演化過(guò)程,從而獲得問(wèn)題的最優(yōu)解。
可以利用一個(gè)有關(guān)粒子群算法的經(jīng)典描述,對(duì)粒子群算法進(jìn)行直觀描述和簡(jiǎn)要介紹。
設(shè)想這么一個(gè)場(chǎng)景:一群鳥(niǎo)進(jìn)行覓食,而遠(yuǎn)處有一片玉米地,所有的鳥(niǎo)都不知道玉米地到底在哪里,但是它們知道自己當(dāng)前的位置距玉米地不遠(yuǎn)。找到玉米地的最佳策略,就是搜尋目前距離玉米地最近的周?chē)鷧^(qū)域。粒子群算法就是從這種群體覓食的行為中得到了啟示,從而構(gòu)建的一種優(yōu)化模型。
在粒子群算法中,把搜索空間中的鳥(niǎo)稱之為“粒子”,而問(wèn)題的“最優(yōu)解”對(duì)應(yīng)為鳥(niǎo)群要尋找的“玉米地”。所有的粒子都具有一個(gè)位置向量(粒子在解空間的位置)和速度向量(決定下次飛行的方向和速度),并可以根據(jù)目標(biāo)函數(shù)來(lái)計(jì)算當(dāng)前的所在位置的適應(yīng)值,可以將其理解為距離“玉米地”的距離。在每次的迭代中,群中的粒子除了根據(jù)自身的“經(jīng)驗(yàn)”(歷史位置)進(jìn)行學(xué)習(xí)以外,還可以根據(jù)種群中最優(yōu)粒子的“經(jīng)驗(yàn)”來(lái)學(xué)習(xí),從而確定下一次迭代時(shí)需要如何調(diào)整和改變飛行的方向和速度,進(jìn)行逐步迭代,最終整個(gè)種群的粒子就會(huì)逐步趨于最優(yōu)解。
粒子群算法的計(jì)算步驟如下:
步驟1 ?種群初始化:可以進(jìn)行隨機(jī)初始化或者根據(jù)被優(yōu)化的問(wèn)題設(shè)計(jì)特定的初始化方法,然后計(jì)算個(gè)體的適應(yīng)值,從而選擇出個(gè)體的局部最優(yōu)位置向量和種群的全局最優(yōu)位置向量。
步驟2 ?迭代設(shè)置:設(shè)置迭代次數(shù);
步驟3 ?速度更新:更新每個(gè)個(gè)體的速度向量;
步驟4 ?位置更新:更新每個(gè)個(gè)體的位置向量;
步驟5 ?局部位置向量和全局位置向量更新;
步驟6 ?終止條件判斷:判斷迭代次數(shù)是否達(dá)到要求,如滿足,輸出計(jì)算結(jié)果;否則繼續(xù)進(jìn)行迭代,跳轉(zhuǎn)至步驟3。
在粒子群算法的應(yīng)用中,主要是對(duì)速度和位置向量迭代算子的設(shè)計(jì)。迭代算子是否有效將決定整個(gè)粒子群算法算法性能的優(yōu)劣,所以如何設(shè)計(jì)粒子群算法的迭代算子是粒子群算法算法應(yīng)用的研究重點(diǎn)和難點(diǎn)。
通過(guò)上面幾個(gè)群智能算法的介紹,不難看出,它們一般都具有如下一些特點(diǎn):群體中相互合作的個(gè)體是分布式的,這樣更能夠適應(yīng)當(dāng)前網(wǎng)絡(luò)環(huán)境下的工作狀態(tài);沒(méi)有中心的控制與數(shù)據(jù),這樣的系統(tǒng)更具有穩(wěn)健性,不會(huì)由于某一個(gè)或者某幾個(gè)個(gè)體的故障而影響整個(gè)問(wèn)題的求解;可以不通過(guò)個(gè)體之間直接通信而是通過(guò)非直接通信進(jìn)行合作,這樣的系統(tǒng)具有更好的可擴(kuò)充性;由于系統(tǒng)中個(gè)體的增加而隨之增加的開(kāi)銷(xiāo)十分小,系統(tǒng)中每個(gè)個(gè)體的能力十分簡(jiǎn)單,這樣每個(gè)個(gè)體的執(zhí)行時(shí)間比較短,并且實(shí)現(xiàn)起來(lái)也比較簡(jiǎn)單,具有簡(jiǎn)單性,在計(jì)算機(jī)上容易實(shí)現(xiàn)編程和并行處理。
此外,需要對(duì)群智能算法實(shí)行進(jìn)一步研發(fā)和改進(jìn),經(jīng)常遇到的問(wèn)題有:

  • 從上面已經(jīng)列出的十多種群智能算法來(lái)看,類(lèi)似性似乎比較多,應(yīng)按照數(shù)學(xué)的抽象性、理論性、應(yīng)用性和計(jì)算機(jī)程序的編程類(lèi)似性等進(jìn)行合理整頓,需要合并的就進(jìn)行合并,能略去的就略去,更應(yīng)加強(qiáng)算法收斂性、有效性等的基礎(chǔ)研究;

  • 智能算法重在應(yīng)用,要特別加強(qiáng)已有算法的應(yīng)用研究,不斷擴(kuò)大應(yīng)用范圍和領(lǐng)域;

  • 對(duì)現(xiàn)有的群智能算法在加強(qiáng)理論研究的同時(shí),進(jìn)行必要的算法改進(jìn),提高應(yīng)用的廣泛性和有效性,克服諸如精度不高、收斂速度較慢、容易收斂到局部極小值、多樣性下降過(guò)快、參數(shù)敏感等問(wèn)題;

  • 進(jìn)一步尋求更好、更快、更新和更高效的群智能算法。
群智能算法和傳統(tǒng)優(yōu)化算法相比,具有簡(jiǎn)單、并行、適用性強(qiáng)等優(yōu)點(diǎn),它不要求問(wèn)題連續(xù)可微,特別適用于具有高度可重入性、高度隨機(jī)性、大規(guī)模、多目標(biāo)、多約束等特征的各類(lèi)典型優(yōu)化問(wèn)題求解。但是,由于群體智能計(jì)算是一種新興的理論和算法,其理論基礎(chǔ)還不夠完善,數(shù)學(xué)基礎(chǔ)相對(duì)薄弱,因此,如何提高算法在解空間內(nèi)的搜索效率,算法收斂性分析與證明以及對(duì)算法模型框架本身的研究都需要進(jìn)行更深入的探索,特別是對(duì)群體智能歸納出統(tǒng)一的計(jì)算模式和框架建模理念。
群體智能來(lái)源于對(duì)自然界中生物群體行為的模擬,而智能個(gè)體在群體中的行為在很多方面類(lèi)似于生物群體在自然環(huán)境中的生態(tài)行為,物種乃至整個(gè)生態(tài)系統(tǒng)的進(jìn)化都離不開(kāi)種群之間的協(xié)同作用。因此,可以從自然界中獲取很多具有參考意義的科學(xué)法則以及相關(guān)理論,用來(lái)指導(dǎo)群體智能計(jì)算模式的研究及其算法改進(jìn)。如借鑒自然界中種群生態(tài)學(xué)中的競(jìng)爭(zhēng)、捕食和協(xié)同進(jìn)化等機(jī)制以及自然系統(tǒng)中的混沌現(xiàn)象與機(jī)理以及運(yùn)行規(guī)律來(lái)進(jìn)行群體智能計(jì)算模式的設(shè)計(jì)與改進(jìn)研究,將是一個(gè)很有意義的研究領(lǐng)域。
群智能計(jì)算因?yàn)榫哂幸陨现T多特點(diǎn),雖說(shuō)研究還處于初級(jí)階段,理論上存在不少缺空,并有諸多困難和問(wèn)題,但是由于其具有的分布式、自組織、協(xié)作性、穩(wěn)健性和實(shí)現(xiàn)簡(jiǎn)單等特點(diǎn),在諸如優(yōu)化問(wèn)題求解、機(jī)器人領(lǐng)域、電力系統(tǒng)領(lǐng)域、網(wǎng)絡(luò)及通訊領(lǐng)域、計(jì)算機(jī)領(lǐng)域、交通領(lǐng)域和半導(dǎo)體制造領(lǐng)域等取得了較為成功的應(yīng)用,為尋找復(fù)雜問(wèn)題的解決方案提供了快速可靠的基礎(chǔ),為人工智能、認(rèn)知科學(xué)等領(lǐng)域的基礎(chǔ)理論問(wèn)題的研究開(kāi)辟了新的途徑。因此,可以預(yù)見(jiàn)群智能的研究代表了以后各類(lèi)算法研究發(fā)展的一個(gè)重要方向,具有重要意義和廣闊的不可忽視的應(yīng)用前景,會(huì)逐漸成為一個(gè)新的重要研究方向,值得給予更多的重視。