国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Matlab】智能優(yōu)化算法_人工蜂鳥算法AHA

這篇具有很好參考價值的文章主要介紹了【Matlab】智能優(yōu)化算法_人工蜂鳥算法AHA。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1.背景介紹

蜂鳥是一種令人驚嘆的動物,被認為是世界上最小的鳥類。如果用大腦與身體的比例來衡量蜂鳥的智力,蜂鳥將是地球上包括人類在內(nèi)最聰明的動物。蜂鳥是最小的蜂鳥,平均體長5.5厘米,體重1.95克。蜂鳥拍打翅膀的頻率是所有鳥類中最高的,可達每秒80次。蜂鳥一般以各種昆蟲為食,如蚊子、象鼻蟲和蚜蟲。為了提供足夠的飛行能量,蜂鳥每天還吃大量的花蜜和花內(nèi)的甜液。圖1顯示了一只正在覓食的蜂鳥。

【Matlab】智能優(yōu)化算法_人工蜂鳥算法AHA,# matlab與智能優(yōu)化算法,matlab,算法

蜂鳥的特別之處在于它們驚人的覓食記憶力。蜂鳥大腦中的海馬體對學習和記憶起著至關(guān)重要的作用,它比迄今為止研究過的任何其他鳥類的海馬體都要大得多。蜂鳥很小,但卻非常聰明,它的大腦與體型相比比其他任何鳥類都要大,這證明蜂鳥具有驚人的記憶力。事實上,每只蜂鳥都能記住某一地區(qū)單朵花的具體信息,包括花的位置、花蜜質(zhì)量和含量、花蜜填充率以及它們最后一次光顧這些花的時間。鳥類還能記住食物來源的時空信息。有了這些信息,蜂鳥實際上可以有效地制定計劃,避免重訪最近采樣的花朵。關(guān)于個體經(jīng)歷的記憶的使用和存儲被稱為外顯記憶,以前經(jīng)常被用來區(qū)分動物和人類。有了這種獨特的技能,蜂鳥成為高效的覓食者,并傾向于訪問它們很久沒有訪問過的花朵,以獲得更多的收獲。

蜂鳥的另一項特殊技能是飛行能力。蜂鳥微小的身體和高頻率的振翅使它們成為鳥類中最優(yōu)秀的飛行者。蜂鳥的肩關(guān)節(jié)靈活,可以將翅膀旋轉(zhuǎn)180度,并保持翅膀呈 "八 "字形運動。這種獨特的飛行方式有助于蜂鳥從下?lián)艉蜕蠐糁蝎@得力量,而其他鳥類只是簡單地扇動翅膀,僅從下?lián)糁蝎@得升力。蜂鳥可被視為鳥類世界中的直升機,因為經(jīng)??梢杂^察到它們像直升機一樣上升。蜂鳥可以精確地向任何方向飛行。除了像其他鳥類一樣飛行外,蜂鳥還能以不同的姿態(tài)飛行,包括前后、上下和左右。對角線飛行也是蜂鳥掌握的一種奇特的飛行姿勢,這是其他鳥類無法比擬的。在尋找食物時,它們可以圍繞潛在的食物資源繞圈飛行。令人難以置信的是,蜂鳥可以在空中的一個地方停留一段時間。蜂鳥具有很強的遷徙能力;它們通常會在惡劣天氣或食物短缺時飛行數(shù)千英里遷徙到偏遠地區(qū)。

AHA算法的主要靈感來源于蜂鳥的飛行技能、記憶能力和覓食策略。下一節(jié)將對這些行為進行數(shù)學建模,并提出一種人工蜂鳥算法。

2.數(shù)學模型

本節(jié)將介紹一種基于蜂鳥智能行為的生物啟發(fā)優(yōu)化算法AHA。AHA的三個主要組成部分解釋如下。

食物來源:在現(xiàn)實中,蜂鳥為了從一組食物源中選擇一個合適的食物源,通常會評估食物源的屬性,包括單朵花的花蜜質(zhì)量和含量、花蜜填充率以及最后一次訪問花朵的時間。在AHA中,為簡化起見,假定每個食物源的花朵數(shù)量和類型相同;食物源是一個解向量,食物源的充蜜率用函數(shù)適配值表示。適應(yīng)度值越高,食物源的花蜜填充率越高。

蜂鳥:每只蜂鳥總是被分配到一個特定的食物源,從那里它可以得到食物,然后這個蜂鳥和食物源有相同的位置。蜂鳥可以牢記這一特定食物源的位置和花蜜填充率,并與種群中的其他蜂鳥分享這一信息。此外,對每只蜂鳥而言,它還能記住每種食物源自己有多長時間沒有光顧。

訪問表: 訪問表記錄了不同蜂鳥對每種食物源的訪問級別,表示同一蜂鳥上次訪問某一食物源至今的時間。蜂鳥訪問量高的食物源將被優(yōu)先訪問。為了獲得更多的花蜜,蜂鳥需要獲得食物來源的時空信息。有了這些信息,蜂鳥實際上可以有效地制定計劃,避免再次光顧最近采樣過的花朵。關(guān)于個體經(jīng)歷的記憶的使用和存儲被稱為外顯記憶,以前常被用來區(qū)分動物和人類。有了這種獨特的技能,蜂鳥成為高效的覓食者,并傾向于訪問它們很久沒有訪問過的花朵,以獲得更多的收獲。

AHA算法是一種基于蜂群的元啟發(fā)式方法,用于解決優(yōu)化問題。本小節(jié)提供了三個模擬蜂鳥三種覓食行為的數(shù)學模型:引導覓食、領(lǐng)地覓食和遷徙覓食。這三種覓食行為如圖2所示。與大多數(shù)基于蜂群的優(yōu)化算法類似,本算法的結(jié)構(gòu)可分為三個主要階段。

【Matlab】智能優(yōu)化算法_人工蜂鳥算法AHA,# matlab與智能優(yōu)化算法,matlab,算法

2.1 初始化

將n只蜂鳥種群置于n個食物源上,隨機初始化如下:

【Matlab】智能優(yōu)化算法_人工蜂鳥算法AHA,# matlab與智能優(yōu)化算法,matlab,算法

其中,Low和Up分別為d維問題的上邊界和下邊界,r為[0, 1]中的隨機向量,xi表示作為給定問題解的第i個食物源的位置。

食物來源訪問表初始化如下:

【Matlab】智能優(yōu)化算法_人工蜂鳥算法AHA,# matlab與智能優(yōu)化算法,matlab,算法

其中,對于i = j,VTi ,j = null表示蜂鳥正在其特定食物源取食;對于i ?= j,VTi ,j = 0表示第j個食物源在當前迭代中剛剛被第i只蜂鳥訪問過。

2.2 指導覓食

每只蜂鳥都有訪問花蜜量最大的食物源的自然傾向,這意味著目標食物源需要有較高的花蜜填充率和蜂鳥較長的未訪問時間。因此,在AHA中,蜂鳥應(yīng)該確定覓食行為中訪問量最大的食物源,然后從中選擇花蜜填充率最高的食物源作為目標食物源。確定目標食物源后,蜂鳥就可以飛向該食物源取食。

在覓食過程中,包括全向飛行、對角飛行和軸向飛行在內(nèi)的三種飛行技能被充分使用,并通過引入方向切換向量在AHA算法中建模。該向量用于控制d維空間中的一個或多個方向是否可用。圖3顯示了三維空間中的三種飛行行為。可以看出,軸向飛行表明蜂鳥可以沿任意坐標軸飛行;對角線飛行允許蜂鳥從矩形的一角橫向移動到對角,由三個坐標軸中的任意兩個坐標軸決定。全向飛行表明,任何飛行方向都可以投射到三個坐標軸中的每一個坐標軸上。換句話說,所有鳥類都使用全向飛行,但只有蜂鳥掌握軸向和對角線飛行。

【Matlab】智能優(yōu)化算法_人工蜂鳥算法AHA,# matlab與智能優(yōu)化算法,matlab,算法

這些飛行模式可以擴展到d-D空間,其中軸向飛行定義如下:

【Matlab】智能優(yōu)化算法_人工蜂鳥算法AHA,# matlab與智能優(yōu)化算法,matlab,算法

對角線飛行的定義如下:

【Matlab】智能優(yōu)化算法_人工蜂鳥算法AHA,# matlab與智能優(yōu)化算法,matlab,算法

全向飛行的定義如下:

【Matlab】智能優(yōu)化算法_人工蜂鳥算法AHA,# matlab與智能優(yōu)化算法,matlab,算法

其中 randi([1, d]) 產(chǎn)生一個從 1 到 d 的隨機整數(shù),randperm(k) 產(chǎn)生一個從 1 到 k 的隨機整數(shù)排列,r1 是 (0, 1] 中的一個隨機數(shù)。d-D空間中的對角線飛行在超矩形內(nèi),超矩形由任意2到d-1坐標軸圍成。蜂鳥在三維空間中使用三種飛行技巧的運動如圖4所示,圖中紅線代表全向飛行,綠線代表對角飛行,藍線代表軸向飛行。圖中,蜂鳥需要從(4,4,4)移動到(0,0,0)。經(jīng)過8個單位的時間后,蜂鳥能夠通過三種不同的飛行技巧到達所需的點。這表明飛行技能的數(shù)學模型能夠模擬蜂鳥在三維和多維空間中的搜索行為。

通過這些飛行能力,蜂鳥可以訪問其目標食物源,從而獲得候選食物源。因此,蜂鳥會從舊的食物源更新為從所有現(xiàn)有食物源中選擇的目標食物源。模擬引導覓食行為和候選食物源的數(shù)學公式如下:

【Matlab】智能優(yōu)化算法_人工蜂鳥算法AHA,# matlab與智能優(yōu)化算法,matlab,算法#pic_center)

其中,xi(t)為第i個食物源在t時刻的位置,xi,tar(t)為第i只蜂鳥打算訪問的目標食物源的位置,a為引導因子,服從均值=0、標準差=1的正態(tài)分布N(0, 1)。式(6)使每個當前食物源更新其在目標食物源附近的位置,并模擬蜂鳥通過不同飛行模式的引導覓食。第i個食物源的位置更新如下:

【Matlab】智能優(yōu)化算法_人工蜂鳥算法AHA,# matlab與智能優(yōu)化算法,matlab,算法

其中f(·)表示函數(shù)適配值。式(8)表明,如果候選食物源的花蜜填充率優(yōu)于當前食物源的花蜜填充率,蜂鳥就會放棄當前食物源,留在式(6)得到的候選食物源中覓食。

在AHA算法中,訪問表是存儲食物源訪問信息的重要組件。蜂鳥每次迭代都可以根據(jù)訪問表找到它要訪問的目標食物源。訪問表記錄了每種食物源自上次被同一蜂鳥訪問后多長時間未被訪問,未被訪問的時間越長表示訪問水平越高。每只蜂鳥都希望選擇訪問量最高的食物源。如果有多個食物源的最高訪問水平相同,則選擇花蜜填充率最好的食物源作為蜂鳥訪問的目標食物源。種群中的每只蜂鳥通過公式(6)訪問自己的目標食物源。在每次迭代中,當蜂鳥使用公式(6)對其目標食物源進行引導覓食時,該蜂鳥的其他食物源的訪問水平遞增1,其訪問的目標食物源的訪問水平初始化為0。蜂鳥進行引導覓食后,如果沒有更好的花蜜填充率(解決方案),蜂鳥將不會改變其食物源;如果有更好的花蜜填充率(解決方案),蜂鳥將用新的食物源替代當前的食物源,然后蜂鳥將停留在新的食物源。相應(yīng)蜂鳥所在食物源的更新表明所有其他蜂鳥對該食物源的訪問級別更新。需要更新的訪問級別被設(shè)置為其他食物源的最高級別,并以1遞增。

圖5顯示了一組六個食物源的訪問表,上面放置了六只蜂鳥。訪問表中的數(shù)字是蜂鳥的訪問級別,表示蜂鳥有多長時間沒有訪問食物源。例如,藍色數(shù)字 "8 "表示蜂鳥x2在蜂鳥x5居住的食物源上8個時間段內(nèi)沒有光顧。

【Matlab】智能優(yōu)化算法_人工蜂鳥算法AHA,# matlab與智能優(yōu)化算法,matlab,算法

下面的示例(最小化問題)顯示了如何維護訪問表,以及如何在引導覓食策略中為每只蜂鳥選擇目標食物源。

給定蜂鳥種群數(shù)量為4只,蜂鳥的位置和訪問表分別用式(1)和(2)初始化。第一只蜂鳥發(fā)現(xiàn)三個具有相同最高訪問水平的食物源,其中蜂鳥x4的食物源具有最高的花蜜填充率。因此,該食物源是第一只蜂鳥的目標食物源。對該蜂鳥執(zhí)行公式(6)和(8)后,蜂鳥x2和x3的食物源的訪問水平增加1,因為蜂鳥x1都沒有訪問這兩個食物源,目標食物源x4初始化為0。 圖6(a)顯示了第一只蜂鳥的訪問水平更新和目標食物源的選擇。

【Matlab】智能優(yōu)化算法_人工蜂鳥算法AHA,# matlab與智能優(yōu)化算法,matlab,算法

第二只蜂鳥發(fā)現(xiàn)了三個具有相同最高訪問水平的食物源,其中蜂鳥x4的食物源具有最高的花蜜填充率。因此,蜂鳥x4的食物源是第二只蜂鳥的目標食物源。對第二只蜂鳥執(zhí)行公式(6)和(8)后,蜂鳥x1和x3的食物源的訪問水平增加1,目標食物源x4初始化為0。蜂鳥x2的蜜源被候選蜂鳥v2替代,因為候選蜂鳥v2的采蜜率比蜜源x2的采蜜率高,因此,其他蜂鳥的蜜源x2的訪問水平需要改為最高訪問水平,每行增加1。圖6(b)顯示了第二只蜂鳥的訪問水平更新和目標食物源的選擇。

對于第三只蜂鳥,蜂鳥x2的食物源由于其最高的訪問水平而成為目標食物源,因此蜂鳥x1和x4的食物源的訪問水平增加1,目標食物源x2的訪問水平初始化為0。第三只蜂鳥的訪問水平更新和目標食物源的選擇如圖6(c)所示。

對于第4只蜂鳥,蜂鳥x2的目標食物源是其訪問水平最高的食物源,因此蜂鳥x2的訪問水平初始化為0,蜂鳥x1和x3的食物源訪問水平增加1。由于蜂鳥x4被替換為候選食物源v4,因此其他每只蜂鳥的食物源x4的訪問水平在每一行都需要改變?yōu)樵L問水平增加1的最高食物源。圖6(d)顯示了第4只蜂鳥的訪問水平更新和目標食物源的選擇。經(jīng)過一次迭代后,蜂鳥的更新訪問表如圖7所示。

【Matlab】智能優(yōu)化算法_人工蜂鳥算法AHA,# matlab與智能優(yōu)化算法,matlab,算法

2.3 領(lǐng)地覓食

蜂鳥在目標食物源采食花蜜后,很可能會尋找新的食物源,而不是去其他現(xiàn)有的食物源。因此,蜂鳥可以很容易地在自己的領(lǐng)地內(nèi)移動到鄰近區(qū)域,在那里可能會發(fā)現(xiàn)一個新的食物源作為候選方案,該方案可能比當前方案更好。模擬蜂鳥在領(lǐng)地覓食策略中的局部搜索和候選食物源的數(shù)學方程如下:

【Matlab】智能優(yōu)化算法_人工蜂鳥算法AHA,# matlab與智能優(yōu)化算法,matlab,算法

其中,b為地域因子,服從均值=0、標準差=1的正態(tài)分布N(0,1)。式(9)可以使任何蜂鳥通過其特殊的飛行技能,根據(jù)其個人位置在其本地附近輕松地找到新的食物來源。在執(zhí)行地域覓食策略后,應(yīng)更新訪問表。

2.4 遷徙覓食

當蜂鳥經(jīng)常光顧的區(qū)域缺乏食物時,蜂鳥通常會遷徙到更遠的食物源覓食。在AHA算法中,定義了一個遷移系數(shù)。如果迭代次數(shù)超過遷移系數(shù)的預定值,則蜂鳥將遷移到整個搜索空間中隨機產(chǎn)生的新的食物源。此時,蜂鳥將放棄舊的食物源,在新的食物源停留覓食,然后更新訪問表。蜂鳥從花蜜填充率最差的食物源遷移到隨機產(chǎn)生的新食物源的覓食過程如下:

【Matlab】智能優(yōu)化算法_人工蜂鳥算法AHA,# matlab與智能優(yōu)化算法,matlab,算法

其中,xwor為種群中花蜜填充率最差的食物源。

在引導覓食策略中,當沒有食物源的位置被調(diào)整時,蜂鳥傾向于向作為各自目標食物源的不同食物源移動,導致蜂鳥的探索程度較高,收斂到局部最優(yōu)的概率較低。當有一個食物源被新的食物源更新時,更新后的食物源比舊的食物源更有可能作為相同的目標食物源,會引導駐扎在其他不同食物源的蜂鳥向其移動,從而導致蜂鳥更高的利用率??紤]到式(6),在迭代的早期階段,由于食物源之間的距離較遠,因此強調(diào)探索,而隨著迭代次數(shù)的增加,食物源之間的距離適應(yīng)性地減小,因此強調(diào)開發(fā)。在地域性覓食策略中,蜂鳥在本地附近進行開發(fā)。此外,蜂鳥的遷徙覓食表明蜂鳥在搜索空間中實施了探索過程。

在AHA中,除了種群數(shù)量和最大迭代次數(shù)這兩個常用參數(shù)外,在考慮是否進行遷移時只需要確定一個控制參數(shù)。在最壞的情況下,如果在進行引導覓食和領(lǐng)地覓食時所有食物源都沒有替換,蜂鳥將根據(jù)每次迭代的訪問表輪流訪問每個食物源作為其目標源。假定蜂鳥在引導覓食或領(lǐng)地覓食中選擇的概率為50%,并且在引導覓食中訪問其它食物源的概率相同。因此,在最壞的情況下,蜂鳥可能在迭代2n次后訪問與目標食物源相同的食物源。在這種情況下,需要執(zhí)行遷移覓食策略來改善停滯和探索搜索空間。因此,建議采用以下與種群數(shù)量相關(guān)的遷移系數(shù)定義:

【Matlab】智能優(yōu)化算法_人工蜂鳥算法AHA,# matlab與智能優(yōu)化算法,matlab,算法

3.文件結(jié)構(gòu)

【Matlab】智能優(yōu)化算法_人工蜂鳥算法AHA,# matlab與智能優(yōu)化算法,matlab,算法

AHA.m							% 人工蜂鳥算法
BenFunctions.m					% 基準函數(shù)
FunRange.m						% 范圍函數(shù)
main.m							% 主函數(shù)
SpaceBound.m					% 速度約束

4.偽代碼

【Matlab】智能優(yōu)化算法_人工蜂鳥算法AHA,# matlab與智能優(yōu)化算法,matlab,算法

5.詳細代碼及注釋

5.1 AHA.m

function [BestX,BestF,HisBestFit,VisitTable]=AHA(FunIndex,MaxIt,nPop)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% FunIndex: The index of function.                    %
% MaxIt: The maximum number of iterations.            %
% nPop: The size of hummingbird population.           %
% PopPos: The position of population.                 %
% PopFit: The fitness of population.                  %
% Dim: The dimensionality of prloblem.                %
% BestX: The best solution found so far.              %
% BestF: The best fitness corresponding to BestX.     %
% HisBestFit: History best fitness over iterations.   %
% Low: The low boundary of search space               %
% Up: The up boundary of search space.                %
% VisitTable: The visit table.                        %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[Low,Up,Dim]=FunRange(FunIndex);
PopPos=zeros(nPop,Dim);
PopFit=zeros(1,nPop);
for i=1:nPop
    PopPos(i,:)=rand(1,Dim).*(Up-Low)+Low;
    PopFit(i)=BenFunctions(PopPos(i,:),FunIndex,Dim);
end

BestF=inf;
BestX=[];

for i=1:nPop
    if PopFit(i)<=BestF
        BestF=PopFit(i);
        BestX=PopPos(i,:);
    end
end

% Initialize visit table
HisBestFit=zeros(MaxIt,1);
VisitTable=zeros(nPop) ;
VisitTable(logical(eye(nPop)))=NaN;

for It=1:MaxIt
    DirectVector=zeros(nPop,Dim);% Direction vector/matrix
    
    for i=1:nPop
        r=rand;
        if r<1/3     % Diagonal flight
            RandDim=randperm(Dim);
            if Dim>=3
                RandNum=ceil(rand*(Dim-2)+1);
            else
                RandNum=ceil(rand*(Dim-1)+1);
            end
            DirectVector(i,RandDim(1:RandNum))=1;
        else
            if r>2/3  % Omnidirectional flight
                DirectVector(i,:)=1;
            else  % Axial flight
                RandNum=ceil(rand*Dim);
                DirectVector(i,RandNum)=1;
            end
        end
        
        if rand<0.5   % Guided foraging
            [MaxUnvisitedTime,TargetFoodIndex]=max(VisitTable(i,:));
            MUT_Index=find(VisitTable(i,:)==MaxUnvisitedTime);
            if length(MUT_Index)>1
                [~,Ind]= min(PopFit(MUT_Index));
                TargetFoodIndex=MUT_Index(Ind);
            end
            
            newPopPos=PopPos(TargetFoodIndex,:)+randn*DirectVector(i,:).*...
                (PopPos(i,:)-PopPos(TargetFoodIndex,:));
            newPopPos=SpaceBound(newPopPos,Up,Low);
            newPopFit=BenFunctions(newPopPos,FunIndex,Dim);
            
            if newPopFit<PopFit(i)
                PopFit(i)=newPopFit;
                PopPos(i,:)=newPopPos;
                VisitTable(i,:)=VisitTable(i,:)+1;
                VisitTable(i,TargetFoodIndex)=0;
                VisitTable(:,i)=max(VisitTable,[],2)+1;
                VisitTable(i,i)=NaN;
            else
                VisitTable(i,:)=VisitTable(i,:)+1;
                VisitTable(i,TargetFoodIndex)=0;
            end
        else    % Territorial foraging
            newPopPos= PopPos(i,:)+randn*DirectVector(i,:).*PopPos(i,:);
            newPopPos=SpaceBound(newPopPos,Up,Low);
            newPopFit=BenFunctions(newPopPos,FunIndex,Dim);
            if newPopFit<PopFit(i)
                PopFit(i)=newPopFit;
                PopPos(i,:)=newPopPos;
                VisitTable(i,:)=VisitTable(i,:)+1;
                VisitTable(:,i)=max(VisitTable,[],2)+1;
                VisitTable(i,i)=NaN;
            else
                VisitTable(i,:)=VisitTable(i,:)+1;
            end
        end
    end
    
    if mod(It,2*nPop)==0 % Migration foraging
        [~, MigrationIndex]=max(PopFit);
        PopPos(MigrationIndex,:) =rand(1,Dim).*(Up-Low)+Low;
        PopFit(MigrationIndex)=BenFunctions(PopPos(MigrationIndex,:),FunIndex,Dim);
        VisitTable(MigrationIndex,:)=VisitTable(MigrationIndex,:)+1;
        VisitTable(:,MigrationIndex)=max(VisitTable,[],2)+1;
        VisitTable(MigrationIndex,MigrationIndex)=NaN;
    end
    
    for i=1:nPop
        if PopFit(i)<BestF
            BestF=PopFit(i);
            BestX=PopPos(i,:);
        end
    end
    
    HisBestFit(It)=BestF;
end

5.2 BenFunctions.m


function Fit=BenFunctions(X,FunIndex,Dim)




switch FunIndex
    
    %%%%%%%%%%%%%%%%%%%%%%%%%%unimodal function%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    
    %Sphere
    case 1
        Fit=sum(X.^2);
        
        %Schwefel 2.22
    case 2
        Fit=sum(abs(X))+prod(abs(X));
        
        %Schwefel 1.2
    case 3
        Fit=0;
        for i=1:Dim
            Fit=Fit+sum(X(1:i))^2;
        end
        
        %Schwefel 2.21
    case 4
        Fit=max(abs(X));
        
        %Rosenbrock
    case 5
        Fit=sum(100*(X(2:Dim)-(X(1:Dim-1).^2)).^2+(X(1:Dim-1)-1).^2);
        
        %Step
    case 6
        Fit=sum(floor((X+.5)).^2);
        
        %Quartic
    case 7
        Fit=sum([1:Dim].*(X.^4))+rand;
        
        
        %%%%%%%%%%%%%%%%%%%%%%%%%%multimodal function%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
        
        %Schwefel
    case 8
        Fit=sum(-X.*sin(sqrt(abs(X))));
        
        %Rastrigin
    case 9
        Fit=sum(X.^2-10*cos(2*pi.*X))+10*Dim;
        
        %Ackley
    case 10
        Fit=-20*exp(-.2*sqrt(sum(X.^2)/Dim))-exp(sum(cos(2*pi.*X))/Dim)+20+exp(1);
        
        %Griewank
    case 11
        Fit=sum(X.^2)/4000-prod(cos(X./sqrt([1:Dim])))+1;
        
        %Penalized
    case 12
        a=10;k=100;m=4;
        Dim=length(X);
        Fit=(pi/Dim)*(10*((sin(pi*(1+(X(1)+1)/4)))^2)+sum((((X(1:Dim-1)+1)./4).^2).*...
            (1+10.*((sin(pi.*(1+(X(2:Dim)+1)./4)))).^2))+((X(Dim)+1)/4)^2)+sum(k.*...
            ((X-a).^m).*(X>a)+k.*((-X-a).^m).*(X<(-a)));
        
        %Penalized2
    case 13
        a=10;k=100;m=4;
        Dim=length(X);
        Fit=.1*((sin(3*pi*X(1)))^2+sum((X(1:Dim-1)-1).^2.*(1+(sin(3.*pi.*X(2:Dim))).^2))+...
            ((X(Dim)-1)^2)*(1+(sin(2*pi*X(Dim)))^2))+sum(k.*...
            ((X-a).^m).*(X>a)+k.*((-X-a).^m).*(X<(-a)));
        
        %%%%%%%%%%%%%%%%%%%%%%%%%%fixed-dimensionalmultimodalfunction%%%%%%%%%%%%%%
        
        %Foxholes
    case 14
        a=[-32 -16 0 16 32 -32 -16 0 16 32 -32 -16 0 16 32 -32 -16 0 16 32 -32 -16 0 16 32;,...
            -32 -32 -32 -32 -32 -16 -16 -16 -16 -16 0 0 0 0 0 16 16 16 16 16 32 32 32 32 32];
        for j=1:25
            b(j)=sum((X'-a(:,j)).^6);
        end
        Fit=(1/500+sum(1./([1:25]+b))).^(-1);
        
        %Kowalik
    case 15
        a=[.1957 .1947 .1735 .16 .0844 .0627 .0456 .0342 .0323 .0235 .0246];
        b=[.25 .5 1 2 4 6 8 10 12 14 16];b=1./b;
        Fit=sum((a-((X(1).*(b.^2+X(2).*b))./(b.^2+X(3).*b+X(4)))).^2);
        
        %Six Hump Camel
    case 16
        Fit=4*(X(1)^2)-2.1*(X(1)^4)+(X(1)^6)/3+X(1)*X(2)-4*(X(2)^2)+4*(X(2)^4);
        
        %Branin
    case 17
        Fit=(X(2)-(X(1)^2)*5.1/(4*(pi^2))+5/pi*X(1)-6)^2+10*(1-1/(8*pi))*cos(X(1))+10;
        
        %GoldStein-Price
    case 18
        Fit=(1+(X(1)+X(2)+1)^2*(19-14*X(1)+3*(X(1)^2)-14*X(2)+6*X(1)*X(2)+3*X(2)^2))*...
            (30+(2*X(1)-3*X(2))^2*(18-32*X(1)+12*(X(1)^2)+48*X(2)-36*X(1)*X(2)+27*(X(2)^2)));
        
        %Hartman 3
    case 19
        a=[3 10 30;.1 10 35;3 10 30;.1 10 35];c=[1 1.2 3 3.2];
        p=[.3689 .117 .2673;.4699 .4387 .747;.1091 .8732 .5547;.03815 .5743 .8828];
        Fit=0;
        for i=1:4
            Fit=Fit-c(i)*exp(-(sum(a(i,:).*((X-p(i,:)).^2))));
        end
        
        %Hartman 6
    case 20
        af=[10 3 17 3.5 1.7 8;.05 10 17 .1 8 14;3 3.5 1.7 10 17 8;17 8 .05 10 .1 14];
        cf=[1 1.2 3 3.2];
        pf=[.1312 .1696 .5569 .0124 .8283 .5886;.2329 .4135 .8307 .3736 .1004 .9991;...
            .2348 .1415 .3522 .2883 .3047 .6650;.4047 .8828 .8732 .5743 .1091 .0381];
        Fit=0;
        for i=1:4
            Fit=Fit-cf(i)*exp(-(sum(af(i,:).*((X-pf(i,:)).^2))));
        end
        
        %Shekel 5
    case 21
        a=[4 4 4 4;1 1 1 1;8 8 8 8;6 6 6 6;3 7 3 7;2 9 2 9;5 5 3 3;8 1 8 1;6 2 6 2;7 3.6 7 3.6];
        c=[0.1 0.2 0.2 0.4 0.4 0.6 0.3 0.7 0.5 0.5];
        Fit=0;
        for i=1:5
            Fit=Fit-1/((X-a(i,:))*(X-a(i,:))'+c(i));
        end
        
        %Shekel 7
    case 22
        a=[4 4 4 4;1 1 1 1;8 8 8 8;6 6 6 6;3 7 3 7;2 9 2 9;5 5 3 3;8 1 8 1;6 2 6 2;7 3.6 7 3.6];
        c=[0.1 0.2 0.2 0.4 0.4 0.6 0.3 0.7 0.5 0.5];
        Fit=0;
        for i=1:7
            Fit=Fit-1/((X-a(i,:))*(X-a(i,:))'+c(i));
        end
        
        %Shekel 10
    otherwise
        a=[4 4 4 4;1 1 1 1;8 8 8 8;6 6 6 6;3 7 3 7;2 9 2 9;5 5 3 3;8 1 8 1;6 2 6 2;7 3.6 7 3.6];
        c=[0.1 0.2 0.2 0.4 0.4 0.6 0.3 0.7 0.5 0.5];
        Fit=0;
        for i=1:10
            Fit=Fit-1/((X-a(i,:))*(X-a(i,:))'+c(i));
        end
        
end

5.3 FunRange.m



function [Low,Up,Dim]=FunRange(FunIndex)

Dim=30;

switch FunIndex
    
    case 1
        Low=-100;Up=100;
        
        
    case 2
        Low=-10;Up=10;
        
        
    case 3
        Low=-100;Up=100;
        
        
    case 4
        Low=-100;Up=100;
        
        
    case 5
        Low=-30;Up=30;
        
        
    case 6
        Low=-100;Up=100;
        
        
    case 7
        Low=-1.28;Up=1.28;
        
        
    case 8
        Low=-500;Up=500;
        
        
    case 9
        Low=-5.12;Up=5.12;
        
        
    case 10
        Low=-32;Up=32;
        
        
    case 11
        Low=-600;Up=600;
        
        
    case 12
        Low=-50;Up=50;
        
        
    case 13
        Low=-50;Up=50;
        
        
    case 14
        Low=-65.536;Up=65.536;Dim=2;
        
        
    case 15
        Low=-5;Up=5;Dim=4;
        
        
    case 16
        Low=-5;Up=5;Dim=2;
        
        
    case 17
        Low=[-5 0];Up=[10 15];Dim=2;
        
        
    case 18
        Low=-2;Up=2;Dim=2;
        
        
    case 19
        Low=0;Up=1;Dim=3;
        
        
    case 20
        Low=0;Up=1;Dim=6;
        
        
    case 21
        Low=0;Up=10;Dim=4;
        
        
    case 22
        Low=0;Up=10;Dim=4;
        
        
    otherwise
        Low=0;Up=10;Dim=4;
        
end

5.4 main.m

clc;
clear;
MaxIteration=1000;
PopSize=50;
FunIndex=1;
[BestX,BestF,HisBestF]=AHA(FunIndex,MaxIteration,PopSize);

display(['FunIndex=', num2str(FunIndex)]);
display(['The best fitness is: ', num2str(BestF)]);
%display(['The best solution is: ', num2str(BestX)]);
if BestF>0
    semilogy(HisBestF,'r','LineWidth',2);
else
    plot(HisBestF,'r','LineWidth',2);
end
xlabel('Iterations');
ylabel('Fitness');
title(['F',num2str(FunIndex)]);

5.5 SpaceBound.m

function  X=SpaceBound(X,Up,Low)
Dim=length(X);
S=(X>Up)+(X<Low);
X=(rand(1,Dim).*(Up-Low)+Low).*S+X.*(~S);

6.運行結(jié)果

【Matlab】智能優(yōu)化算法_人工蜂鳥算法AHA,# matlab與智能優(yōu)化算法,matlab,算法

7.參考文獻

[1]Weiguo Z,Liying W,Seyedali M. Artificial hummingbird algorithm: A new bio-inspired optimizer with its engineering applications[J]. Computer Methods in Applied Mechanics and Engineering,2022,388.文章來源地址http://www.zghlxwxcb.cn/news/detail-572919.html

到了這里,關(guān)于【Matlab】智能優(yōu)化算法_人工蜂鳥算法AHA的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 智能優(yōu)化算法——哈里鷹算法(Matlab實現(xiàn))

    智能優(yōu)化算法——哈里鷹算法(Matlab實現(xiàn))

    目錄 1 算法簡介 2 算法數(shù)學模型 2.1.全局探索階段 2.2 過渡階段 2.3.局部開采階段 3 求解步驟與程序框圖 3.1 步驟 3.2 程序框圖? 4 matlab代碼及結(jié)果 4.1 代碼 4.2 結(jié)果? 哈里斯鷹算法(Harris Hawks Optimization,HHO),是由Ali Asghar Heidari和Seyedali Mrjaili于2019年提出的一種新型仿生智能優(yōu)化算

    2024年02月13日
    瀏覽(15)
  • 【Matlab】智能優(yōu)化算法_遺傳算法GA

    【Matlab】智能優(yōu)化算法_遺傳算法GA

    遺傳算法(Genetic Algorithm,簡稱GA)是一種基于生物進化理論的優(yōu)化算法,由John Holland于20世紀70年代初提出。它通過模擬自然選擇和遺傳機制,利用群體中個體之間的遺傳信息交流和變異來搜索問題的解空間。 遺傳算法的設(shè)計靈感來源于達爾文的進化論。達爾文提出,自然界

    2024年02月16日
    瀏覽(26)
  • Matlab之智能優(yōu)化算法函數(shù)調(diào)用

    Matlab之智能優(yōu)化算法函數(shù)調(diào)用

    目錄 1.句柄函數(shù) 2.遺傳算法 3.粒子群算法 4.模擬退火 1.句柄函數(shù) ????????句柄函數(shù)即我們要求的目標函數(shù),以下三種算法的調(diào)用僅是求解最小值,若要求目標函數(shù)的最大值,可在返回結(jié)果中加負號。 句柄函數(shù)圖像: ????????????????? ? ?? ? 畫圖代碼: 2.遺傳算

    2024年02月10日
    瀏覽(21)
  • 【Matlab】智能優(yōu)化算法_北方蒼鷹算法NGO

    【Matlab】智能優(yōu)化算法_北方蒼鷹算法NGO

    北方蒼鷹是一種猛禽,其狩獵策略代表了一個優(yōu)化過程。在這種策略中,北方蒼鷹首先選擇獵物并攻擊它,然后在追逐過程中獵殺選定的獵物。 本文的創(chuàng)新之處在于設(shè)計了一種新的基于蒼鷹的優(yōu)化算法,稱為北方蒼鷹優(yōu)化(NGO),模仿北方獵鷹的行為。擬議的NGO算法的各個步

    2024年02月03日
    瀏覽(25)
  • 【Matlab】智能優(yōu)化算法_麻雀搜索算法SSA

    【Matlab】智能優(yōu)化算法_麻雀搜索算法SSA

    麻雀通常是群居的鳥類,有很多種類。它們分布在世界的大部分地區(qū),喜歡生活在人類生活的地方。此外,它們是雜食性鳥類,主要以谷物或雜草的種子為食。眾所周知,麻雀是常見的留鳥。與其他許多小鳥相比,麻雀有很強的智慧,有很強的記憶力。請注意,有兩種不同類

    2024年02月15日
    瀏覽(26)
  • 【Matlab】智能優(yōu)化算法_海洋捕食者算法MPA

    【Matlab】智能優(yōu)化算法_海洋捕食者算法MPA

    在介紹所提出的算法的步驟之前,需要知道(i)布朗運動和(ii)萊維運動的兩個主要隨機游動的數(shù)學模型。 標準布朗運動是一個隨機過程,其中它們的步長是從由零均值(μ=0)和單位方差(σ2=1)的正態(tài)(高斯)分布定義的概率函數(shù)中得出的。該運動在x點的支配可能密度

    2024年02月13日
    瀏覽(22)
  • 【Matlab】智能優(yōu)化算法_樽海鞘群算法SSA

    【Matlab】智能優(yōu)化算法_樽海鞘群算法SSA

    樽海鞘,身體呈透明的桶狀。它們的組織與水母非常相似。它們的運動也非常類似于水母,在水母中,水被泵送通過身體作為推進向前運動。輸卵管的形狀如圖1(a)所示。 關(guān)于這種生物的生物學研究處于早期階段,主要是因為它們的生活環(huán)境極難進入,而且很難將它們保存

    2024年02月12日
    瀏覽(16)
  • MATLAB算法實戰(zhàn)應(yīng)用案例精講-【智能優(yōu)化算法】哈里斯鷹(HHO)(附matlab代碼實現(xiàn))

    目錄 前言 算法原理 算法思想 1. 探索階段 2.探索到開發(fā)的轉(zhuǎn)換 3

    2024年02月16日
    瀏覽(33)
  • 【經(jīng)濟調(diào)度】基于多目標宇宙優(yōu)化算法優(yōu)化人工神經(jīng)網(wǎng)絡(luò)環(huán)境經(jīng)濟調(diào)度研究(Matlab代碼實現(xiàn))

    【經(jīng)濟調(diào)度】基于多目標宇宙優(yōu)化算法優(yōu)化人工神經(jīng)網(wǎng)絡(luò)環(huán)境經(jīng)濟調(diào)度研究(Matlab代碼實現(xiàn))

    ????????? 歡迎來到本博客 ???????? ??博主優(yōu)勢: ?????? 博客內(nèi)容盡量做到思維縝密,邏輯清晰,為了方便讀者。 ?? 座右銘: 行百里者,半于九十。 ?????? 本文目錄如下: ?????? 目錄 ??1 概述 ??2 運行結(jié)果 ??3?參考文獻 ??4 Matlab代碼及數(shù)據(jù) 基于

    2024年02月16日
    瀏覽(24)
  • MATLAB算法實戰(zhàn)應(yīng)用案例精講-【人工智能】機器視覺(概念篇)(最終篇)

    目錄 前言 幾個高頻面試題目 如何評價一個光源的好壞?

    2024年02月02日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包