股票量化交易軟件:群體優(yōu)化算法粒子群(PSO)

大概有許多讀者對(duì)斯坦尼斯瓦夫·萊姆(Stanis?aw Lem)的科幻名作《無(wú)敵》("The Invincible")耳熟能詳。令人意想不到的是,其中對(duì)“群體”智能的描述實(shí)際上是最早的探索之一。這一故事描繪了未經(jīng)集中控制的幸存機(jī)器人,而其中最簡(jiǎn)單和數(shù)量龐大的樣本能幸存下來(lái),而非最復(fù)雜、最聰明或最強(qiáng)大的樣本。
在長(zhǎng)達(dá)數(shù)千年的演化過(guò)程中,這些機(jī)器學(xué)會(huì)了高效應(yīng)對(duì)競(jìng)爭(zhēng)對(duì)手,在智力和能源利用方面都遙遙領(lǐng)先。他們不僅與其它機(jī)器人作戰(zhàn),還與星球上的生命世界進(jìn)行對(duì)抗。這部作品中的想象力豐富的元素可與自然進(jìn)化和本身的自然法則進(jìn)行可靠比較。
自古以來(lái),人們就對(duì)群體動(dòng)物的行為,即所謂的群體行為,充滿好奇。例如,遷徙到溫暖地帶的鳥(niǎo)群如何協(xié)同;蜜蜂如何合作生產(chǎn)食物;螞蟻如何在構(gòu)建復(fù)雜結(jié)構(gòu)的同時(shí)生存下來(lái);魚(yú)群如何行動(dòng)整齊一致,以及它們?yōu)楹稳绱送?。社?huì)中的獨(dú)立組織呈現(xiàn)出協(xié)調(diào)良好的整體有機(jī)體的模式,這些都啟發(fā)了算法優(yōu)化領(lǐng)域的新視角。
群體智能描述的是模擬自組織系統(tǒng)的集體行為,涉及相當(dāng)多的此類(lèi)算法。在J.Kennedy和R.Eberhart于1995年編寫(xiě)的規(guī)范版本中,該方法的基礎(chǔ)模型得以簡(jiǎn)化,源自雷諾茲(Reynolds)模型。在這種簡(jiǎn)化成果中,種群中的不同個(gè)體開(kāi)始作為獨(dú)立物體出現(xiàn),這些物體雖無(wú)大小,但具有一定速度。
這一方法產(chǎn)生了極端類(lèi)似于物質(zhì)粒子的簡(jiǎn)單物體,因此它們被稱(chēng)為粒子,它們的種群被稱(chēng)為群體。在每個(gè)時(shí)刻(每次迭代)中,粒子在空間中具有一定位置和速度向量。根據(jù)粒子的每個(gè)位置計(jì)算出目標(biāo)函數(shù)的相應(yīng)值,并在此基礎(chǔ)上,按照一定的規(guī)則,在搜索空間中改變粒子的位置和速度。在確定粒子的下一位置時(shí),還會(huì)考慮來(lái)自所有其他相鄰粒子中的最佳位置信息,對(duì)應(yīng)于適應(yīng)度函數(shù)的任務(wù)。
群體算法的一些例子包括:
粒子群法
螞蟻算法
蜜蜂算法
人工免疫系統(tǒng)
灰狼算法
蝙蝠算法
引力搜索算法
利他主義算法
以及許多其他算法
從模擬集體行為到集體優(yōu)化的過(guò)渡是基于以下生物學(xué)觀點(diǎn):群居生物體的團(tuán)結(jié)一致性能夠改善其生活條件。總的來(lái)說(shuō),與獨(dú)立生物體相比,群體生活可以更有效地尋找、處理和儲(chǔ)存食物,等等。換言之,任何群居生物在其生存期間都會(huì)以不同程度的效率解決各種優(yōu)化問(wèn)題,例如最大化食物供應(yīng),同時(shí)最小化捕食者造成的損失。這為構(gòu)建各種數(shù)學(xué)優(yōu)化方法提供了基礎(chǔ)。
粒子群自其創(chuàng)立以來(lái),一直是最著名和最受歡迎的優(yōu)化算法之一。許多實(shí)現(xiàn)該算法的作者聲稱(chēng),它在優(yōu)化具有許多參數(shù)的復(fù)雜函數(shù)方面非常有效,甚至適用于訓(xùn)練神經(jīng)網(wǎng)絡(luò)。
在本文中,赫茲量化軟件將嘗試探究該算法是否真的適合解決復(fù)雜問(wèn)題。在算法的經(jīng)典版本以及許多修訂版中,存在重大限制。相關(guān)的問(wèn)題是優(yōu)化函數(shù)必須是平滑和連續(xù)的,這意味著它完全不適用于離散函數(shù)。然而,根據(jù)該系列文章,所有正在考慮的算法都將以這種方式進(jìn)行調(diào)整(如果有任何限制),從而消除缺陷,使算法至少能夠純技術(shù)地運(yùn)作。換句話說(shuō),所有算法都必須無(wú)差別地處理函數(shù)的平滑性(例如交易者問(wèn)題中的),并且在參數(shù)步驟上沒(méi)有限制。
2. 算法原理
雖然前文介紹了優(yōu)化世界,但它沒(méi)有深入到主程序(如EA、腳本、指標(biāo))與優(yōu)化算法核心的交叉原理。理解這一點(diǎn)極為重要,
