最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

量化軟件下載:赫茲量化中種群優(yōu)化算法---蝙蝠算法

2023-08-09 14:25 作者:大牛啊呢  | 我要投稿

1. 概述

蝙蝠是種神奇的動物。 科學(xué)家認(rèn)為,最早的蝙蝠出現(xiàn)在 65-100 億年前,曾與恐龍并肩生活。 蝙蝠是唯一有翅膀的哺乳動物。 蝙蝠的種類擁有 1300 多種。 除了極地高寒地區(qū)之外,它們幾乎無處不在。 白天間,它們躲在避難所里。 為了在黑暗的洞穴中導(dǎo)航,并在天黑后狩獵,蝙蝠依靠回聲定位,該系統(tǒng)允許它們依靠聲波檢測物體。 它們通過發(fā)出高頻聲波的回聲定位,該聲波向前移動,直到它擊中物體,并被反射回來。 回聲定位是一種聲納:蝙蝠發(fā)出響亮而短促的脈沖聲波。 當(dāng)聲波到達(dá)物體時,回聲會在短時間內(nèi)反射回到蝙蝠的耳朵,這就是蝙蝠在空間中定位自己,并判定獵物位置的方式。

蝙蝠算法(BA)是楊(Yang)在 2010 年推出的一種啟發(fā)式算法,它模仿蝙蝠的回聲定位行為進(jìn)行全局優(yōu)化。 元啟發(fā)式通常受到自然和物理過程的啟發(fā),現(xiàn)在被用作解決許多復(fù)雜優(yōu)化問題的最強大的技術(shù)之一。 優(yōu)化是從許多有效選項中選取最佳元素成為一組特定準(zhǔn)則,這在計算效率和全局優(yōu)化的可能性方面展現(xiàn)出許多不同的優(yōu)點和缺點。

特征優(yōu)化通過提供的“目標(biāo)”函數(shù),依據(jù)輸入的參數(shù),為建模和解決許多特定問題提供了一個正式的框架。 目標(biāo)是找到組合參數(shù)的值,并返回最佳值。 這個框架足夠抽象,因此可以將各種問題解釋為“特征優(yōu)化”問題。

然而,傳統(tǒng)的特征優(yōu)化僅能解決一些小問題,而在實踐中這些往往不頂用。 故此,科學(xué)家們正在將注意力轉(zhuǎn)向自然界,其為解決這些問題提供了豐富的模型。 通過對自然生物系統(tǒng)進(jìn)行建模,提出了許多智能群體優(yōu)化算法,可以非常規(guī)方法解決應(yīng)用問題。 它們因其優(yōu)異的性能而廣泛用于各種優(yōu)化問題。 BA 是一種新穎的現(xiàn)代種群算法,它使用人造蝙蝠作為搜索代理者,模擬真實蝙蝠的自然聲波脈沖音量和發(fā)射頻率,來執(zhí)行搜索過程。


2. 算法說明

在基本的蝙蝠算法中,每個蝙蝠都被視為一個“無質(zhì)量和無大小”的粒子,代表解空間中的有效解。 對于不同的適應(yīng)度函數(shù),每只蝙蝠都有對應(yīng)的特征值,通過對比特征值來判定當(dāng)前的最優(yōu)個體。 然后更新聲波的頻率、速度、脈沖發(fā)射速度、和種群中每只蝙蝠的體積,繼續(xù)迭代演化,逼近當(dāng)前最優(yōu)解,最終找到全局最優(yōu)解。 該算法更新每只蝙蝠的頻率、速度和位置。

標(biāo)準(zhǔn)算法需要五個基本參數(shù):頻率、音量、紋波、以及音量和紋波的比率。 頻率用于平衡歷史最佳位置對當(dāng)前位置的影響。 當(dāng)搜索頻率范圍較大時,單只蝙蝠就能遠(yuǎn)離群體的歷史位置進(jìn)行搜索,反之亦然。

與前面考慮的參數(shù)相比,該算法有很多參數(shù):

input double MIN_FREQ_P ? ? ? ? ?= 0.0; input double MAX_FREQ_P ? ? ? ? = 1.0; input double MIN_LOUDNESS_P ?= 0.0; input double MAX_LOUDNESS_P = 1.5; input double MIN_PULSE_P ? ? ? ?= 0.0; input double MAX_PULSE_P ? ? ? ?= 1.0; input double ALPHA_P ? ? ? ? ? ? ? = 0.3; input double GAMMA_P ? ? ? ? ? ? ?= 0.3;

在實現(xiàn) BA 算法時,我遇到了這樣一個事實,即在眾多來源中,各篇文章的作者以完全不同的方式描述算法。 區(qū)別僅在于關(guān)鍵點描述中所用的術(shù)語,和基本算法特征,因此我將講述自己如何理解它。 回聲定位的基本物理原理可以在用在算法當(dāng)中,但有明顯的保留和約定。 我們假設(shè)蝙蝠所用的頻率范圍從 MinFreq 到 MaxFreq 的聲波脈沖。 頻率會影響蝙蝠的速度。 還用到了音量概念的條件,這會影響蝙蝠從當(dāng)前位置的局部搜索狀態(tài)到最佳解附近的全局搜索狀態(tài)的轉(zhuǎn)換。 在整個優(yōu)化過程中,脈動頻率增加,而聲波的音量減小。

BA 算法偽代碼(圖例 1):

1. 蝙蝠種群初始化。 2. 生成頻率、速度和新解。 3. 搜索局部解。 4. 更新全局解。 5. 降低音量,提升脈動頻率。 6. 重復(fù)步驟 2,直到滿足停止條件。


編輯切換為居中

圖例 1. BA 算法框圖

我們開始講述代碼。 為了講述“蝙蝠”搜索代理者,我們需要一個結(jié)構(gòu),在其中是每次迭代時的狀態(tài)完整描述所需的所有特征。 position [] 數(shù)組用于存儲空間中的最佳位置坐標(biāo),而 auxPosition [] 數(shù)組用于當(dāng)前“操作”坐標(biāo)。 speed [] 數(shù)組在按照坐標(biāo)計算速度矢量時是必需的。 frequency - 聲音脈沖的頻率,initPulseRate - 初始脈沖速率(從優(yōu)化一開始每個蝙蝠都是單獨的),pulseRate - 當(dāng)前迭代時的脈沖速率,loudness - 聲波脈沖的音量,fitness - 最后一次移動后的適應(yīng)度函數(shù)值,fitnessBest - 代理者所有迭代的適應(yīng)度函數(shù)的最佳值。

//—————————————————————————————————————————————————————————————————————————————— struct S_Bat { ?double position ? ?[]; ?double auxPosition []; ?double speed ? ? ? []; ?double frequency; ?double initPulseRate; ?double pulseRate; ?double loudness; ?double fitness; ?double fitnessBest; }; //——————————————————————————————————————————————————————————————————————————————

蝙蝠算法類包含搜索代理者所需的結(jié)構(gòu)數(shù)組、欲探索空間的邊界和步長、算法找到的最佳坐標(biāo)、適應(yīng)度函數(shù)的最佳值、和存儲算法參數(shù)的常量,以及公開的初始化方法、算法進(jìn)行操作所需的兩個公開方法、和特定于算法的私密方法。

//—————————————————————————————————————————————————————————————————————————————— class C_AO_BA { ?//============================================================================ ?public: S_Bat ?bats ? ? ?[]; //bats ?public: double rangeMax ?[]; //maximum search range ?public: double rangeMin ?[]; //manimum search range ?public: double rangeStep []; //step search ?public: double cB ? ? ? ?[]; //best coordinates ?public: double fB; ? ? ? ? ? //FF of the best coordinates ?public: void Init (const int ? ?paramsP, ? ? ? ? ? ? ? ? ? ? const int ? ?batsNumberP, ? ? ? ? ? ? ? ? ? ? const double min_FREQ_P, ? ? ? ? ? ? ? ? ? ? const double max_FREQ_P, ? ? ? ? ? ? ? ? ? ? const double min_LOUDNESS_P, ? ? ? ? ? ? ? ? ? ? const double max_LOUDNESS_P, ? ? ? ? ? ? ? ? ? ? const double min_PULSE_P, ? ? ? ? ? ? ? ? ? ? const double max_PULSE_P, ? ? ? ? ? ? ? ? ? ? const double alpha_P, ? ? ? ? ? ? ? ? ? ? const double gamma_P, ? ? ? ? ? ? ? ? ? ? const int ? ?maxIterP); ?public: void Flight (int epoch); ?public: void Preparation (); ?//============================================================================ ?private: void Walk ? ? ? ? ? ? ? (S_Bat &bat); ?private: void AproxBest ? ? ? ? ?(S_Bat &bat, double averageLoudness); ?private: void AcceptNewSolutions (S_Bat &bat); ?private: int ?currentIteration; ?private: int ?maxIter; ?private: double MIN_FREQ; ?private: double MAX_FREQ; ?private: double MIN_LOUDNESS; ?private: double MAX_LOUDNESS; ?private: double MIN_PULSE; ?private: double MAX_PULSE; ?private: double ALPHA; ?private: double GAMMA; ?private: int ? ?params; ?private: int ? ?batsNumber; ?private: bool ? firstFlight; ?private: double SeInDiSp ?(double In, double inMin, double inMax, double step); ?private: double RNDfromCI (double min, double max); ?private: double Scale ? ? (double In, double InMIN, double InMAX, double OutMIN, double OutMAX, ?bool revers); }; //——————————————————————————————————————————————————————————————————————————————

在算法設(shè)置參數(shù)的 Init() 公開方法中,為數(shù)組分配內(nèi)存,將變量重置為最小值以存儲最佳擬合,并重置初始迭代的標(biāo)志。 一般來說,這種方法并不復(fù)雜,而且很特別。


量化軟件下載:赫茲量化中種群優(yōu)化算法---蝙蝠算法的評論 (共 條)

分享到微博請遵守國家法律
抚州市| 大港区| 涿州市| 来凤县| 广南县| 淮南市| 百色市| 珲春市| 德清县| 土默特右旗| 萝北县| 兴国县| 乃东县| 岳阳县| 成武县| 龙海市| 陵水| 广东省| 湟中县| 娱乐| 东莞市| 石首市| 南陵县| 嘉黎县| 绥滨县| 南雄市| 苏尼特左旗| 岳阳县| 白山市| 海城市| 克拉玛依市| 大渡口区| 和顺县| 五家渠市| 肇庆市| 吴桥县| 隆德县| 西吉县| 巴东县| 石景山区| 泸溪县|