2025年最新SCI-灰熊增脂優化器(Grizzly Bear Fat Increase, GBF)-附完整Matlab免費代碼

1、簡介

本文介紹了一種新的受自然啟發的優化算法,稱為灰熊增脂優化器(GBFIO)。GBFIO算法模仿灰熊積累體脂為過冬做準備的自然行為,利用它們的狩獵、捕魚和吃草、蜂蜜等策略。因此,GBFIO算法建模并考慮了三個數學步驟來解決最佳化問題:(1)根據過去的經驗和嗅覺線索尋找食物來源(例如蔬菜、水果、蜂蜜、牡蠣);(2)獵殺動物并保護后代免受捕食者的傷害;和(3)捕魚。

2.灰熊增脂優化算法

首先,本節將描述GBFIO算法,接下來將說明其數學模型以優化各種優化問題。

2.1 GBFIO算法理論

熊必須在一年中溫暖的月份在體內儲存足夠的脂肪,以便在冬眠和幾個月不活動的寒冷月份養活自己。有幼崽的熊也必須在冬眠期間儲存足夠的脂肪來喂養幼崽,如果它們不能儲存足夠的脂肪,幼崽就會死亡。圖1顯示了一只灰熊和她的兩只幼崽,它們正在進食并試圖增加脂肪以在冬天生存。
在這里插入圖片描述
圖1.一只灰熊帶著兩只幼崽和增加脂肪的過程。
灰熊是雜食動物,它們的飲食依賴于可獲得的食物來源,除了捕魚和狩獵,棕熊以水果、樹根、貝類、蜂蜜等植物材料為食。
因此,灰熊脂肪的增加可分為以下三個階段,每一步都在熊體內儲存一些脂肪,直到達到冬眠所需的量(見圖1):(1)根據前幾年的記憶和嗅覺,尋找蔬菜、水果、貝類、池塘、河流的位置進行捕魚,并跟蹤魚的運動;(2)獵殺其他動物,同時也照顧后代,以避免被獵殺;(3)捕魚(這是局部搜索)。因此,提出的基于灰熊脂肪增加的優化算法建模如下:

2.1.1第一階段:尋找植物、蜂蜜、貝類、尸體和釣魚河

灰熊增肥的主要飲食是魚,但在魚從海里到達產卵地和灰熊找到適合捕魚的地方之前,它們吃其他東西,包括蔬菜、水果、蜂蜜、貝類和死去的動物尸體。因此,通過吃蔬菜、水果、貝類等來增肥,同時也找到魚,模型如下:

xbearsearch(t+1)=xbearsearch(t)+r1.Δxfish+r2.Δxhoney+r3.Δxshell+r4.Δxcorpse+r5.Δxplants(2)x_{\text{bear}}^{\text{search}}(t+1) = x_{\text{bear}}^{\text{search}}(t) + r_1. \Delta x_{\text{fish}} + r_2. \Delta x_{\text{honey}} + r_3. \Delta x_{\text{shell}} + r_4. \Delta x_{\text{corpse}} + r_5. \Delta x_{\text{plants}} \tag{2}xbearsearch?(t+1)=xbearsearch?(t)+r1?xfish?+r2?xhoney?+r3?xshell?+r4?xcorpse?+r5?xplants?(2)

Δxfish=xfish?xbearsearch(t),(3)\Delta x_{\text{fish}} = x_{\text{fish}} - x_{\text{bear}}^{\text{search}}(t), \tag{3}Δxfish?=xfish??xbearsearch?(t),(3)

Δxhoney=xhoney?xbearsearch(t),(4)\Delta x_{\text{honey}} = x_{\text{honey}} - x_{\text{bear}}^{\text{search}}(t), \tag{4}Δxhoney?=xhoney??xbearsearch?(t),(4)

Δxshell=xshell?xbearsearch(t),(5)\Delta x_{\text{shell}} = x_{\text{shell}} - x_{\text{bear}}^{\text{search}}(t), \tag{5}Δxshell?=xshell??xbearsearch?(t),(5)

Δxcorpse=xcorpse?xbearsearch(t),(6)\Delta x_{\text{corpse}} = x_{\text{corpse}} - x_{\text{bear}}^{\text{search}}(t), \tag{6}Δxcorpse?=xcorpse??xbearsearch?(t),(6)

Δxplants=xplants?xbearsearch(t).(7)\Delta x_{\text{plants}} = x_{\text{plants}} - x_{\text{bear}}^{\text{search}}(t). \tag{7}Δxplants?=xplants??xbearsearch?(t).(7)

其中 xfishx_{\text{fish}}xfish?xhoneyx_{\text{honey}}xhoney?xshellx_{\text{shell}}xshell?xcorpsex_{\text{corpse}}xcorpse?xplantsx_{\text{plants}}xplants? 是魚、蜂蜜、貝殼、尸體和植物,熊試圖找到這些食物以增加脂肪并度過冬季。xbearsearch(t)x_{\text{bear}}^{\text{search}}(t)xbearsearch?(t) 是當前種群,最好的五個種群被選為 xfishx_{\text{fish}}xfish?xhoneyx_{\text{honey}}xhoney?xshellx_{\text{shell}}xshell?xcorpsex_{\text{corpse}}xcorpse?xplantsx_{\text{plants}}xplants?。當前迭代次數用 ttt 表示。

此外,找到每種食物對熊來說都是具有挑戰性的,并且是隨機找到的,r1r_1r1?r5r_5r5? 被定義為顯示每種食物來源的隨機狀態,因此 r1r_1r1?r5r_5r5? 被定義如下:

r1s=2.rand.rand,(8)r_1^s = 2. \text{rand}. \sqrt{\text{rand}}, \tag{8}r1s?=2.rand.rand?,(8)

r2s=rand.rand,(9)r_2^s = \text{rand}. \sqrt{\text{rand}}, \tag{9}r2s?=rand.rand?,(9)

r3s=rand2.rand,(10)r_3^s = \frac{\text{rand}}{2}. \sqrt{\text{rand}}, \tag{10}r3s?=2rand?.rand?,(10)

r4s=rand4.rand,(11)r_4^s = \frac{\text{rand}}{4}. \sqrt{\text{rand}}, \tag{11}r4s?=4rand?.rand?,(11)

r5s=rand8.rand,(12)r_5^s = \frac{\text{rand}}{8}. \sqrt{\text{rand}}, \tag{12}r5s?=8rand?.rand?,(12)

其中 rand\text{rand}rand 值在 [0, 1] 范圍內隨機選擇。r1r_1r1? 值比其他隨機值大,因為魚對熊來說是一種更有趣的食物,并且在脂肪增加方面具有高營養價值。因此,減少營養價值及其對增加脂肪的影響,其效應系數的值也減少,因此我們有 r1s>r2s>r3s>r4s>r5sr_1^s > r_2^s > r_3^s > r_4^s > r_5^sr1s?>r2s?>r3s?>r4s?>r5s?。此外,r1sr_1^sr1s?r2sr_2^sr2s?r3sr_3^sr3s?r4sr_4^sr4s?r5sr_5^sr5s? 的值分別在 [0, 2]、[0, 1]、[0, 0.5]、[0, 0.25]、[0, 125] 范圍內。

2.1.2. 狩獵階段和保護幼崽免受捕獵

灰熊的一種增肥方式是通過捕獵其他動物獲得的。母熊必須保持警惕,以保護幼崽免受潛在捕食者(包括郊狼和其他熊)的捕獵,這影響了狩獵過程。如果幼崽被殺,母熊在冬季需要更少的食物和脂肪,這也是模型的一部分。因此,狩獵熊的階段如下。

作為第一步,熊識別它們的獵物并朝它們移動。由于模擬熊的行為,所提出的 SBFIO 在搜索空間中搜索以發現各種搜索區域。SBFIO 的一個關鍵特征是獵物在搜索空間中的位置是隨機確定的。方程 (12) 模擬了熊如何移動到其目標以及這些概念如何工作。

Δxbear=[2.r1b.xhuntnum(t)?r2b.xprey(t)],(13)\Delta x_{\text{bear}} = [2. r_1^b. x_{\text{hunt}}^{\text{num}}(t) - r_2^b. x_{\text{prey}}(t)], \tag{13}Δxbear?=[2.r1b?.xhuntnum?(t)?r2b?.xprey?(t)],(13)

xbearhunt(t+1)=xbearhunt(t)?A.Δxbear,(14)x_{\text{bear}}^{\text{hunt}}(t+1) = x_{\text{bear}}^{\text{hunt}}(t) - A. \Delta x_{\text{bear}}, \tag{14}xbearhunt?(t+1)=xbearhunt?(t)?Axbear?,(14)

其中 r1br_1^br1b?r2br_2^br2b? 是在 [0, 1] 范圍內隨機選擇的值。獵物越大,熊積累的脂肪越多;因此,為了最大化脂肪積累,最佳種群在前一更新步驟后獲得,被選為獵物。所以,xhuntnumx_{\text{hunt}}^{\text{num}}xhuntnum? 是當前種群,其中被選為熊的種群,試圖捕獵最佳獵物以增加其脂肪水平。xprey(t)x_{\text{prey}}(t)xprey?(t) 是從前一步驟更新的種群中獲得的最佳種群。AAA 表示通過方程 (14) 計算的系數向量。

A=α(2.r3b?1),(15)A = \alpha (2. r_3^b - 1), \tag{15}A=α(2.r3b??1),(15)

其中 α\alphaα 值在 [0, 2.5] 范圍內線性從 2.5 減少到 0,r3br_3^br3b? 顯示在 [0, 1] 范圍內的隨機值。

在第二步中,模擬了其他動物(包括郊狼)對幼崽的捕食。在這一步中,假設熊在狩獵過程中必須保護兩個幼崽,以防止它們被捕獵。如果幼崽被獵殺,母熊因不喂養幼崽而儲存更多脂肪。因此,當前種群,即母熊,如果幼崽被捕獵,則可以增加更多脂肪。從種群中隨機選擇三個個體作為幼崽和郊狼,并且,由于郊狼是捕食者并且比幼崽更強,這三個被選中的成員中最好的成員被選為郊狼,另外兩個成員被選為幼崽。因此,用郊狼捕獵幼崽的模型如下:

Δxcub-1cote=[2.r4b.xcub(1)?r5b.xcote(t)],(16)\Delta x_{\text{cub-1}}^{\text{cote}} = [2. r_4^b. x_{\text{cub}}^{(1)} - r_5^b. x_{\text{cote}}(t)], \tag{16}Δxcub-1cote?=[2.r4b?.xcub(1)??r5b?.xcote?(t)],(16)

Δxcub-2cote=[2.r6b.xcub(2)?r7b.xcote(t)],(17)\Delta x_{\text{cub-2}}^{\text{cote}} = [2. r_6^b. x_{\text{cub}}^{(2)} - r_7^b. x_{\text{cote}}(t)], \tag{17}Δxcub-2cote?=[2.r6b?.xcub(2)??r7b?.xcote?(t)],(17)

xbearcarr(t+1)=xbearcarr(t)?B1.Δxcub-1cote?B2.Δxcub-2cote(18)x_{\text{bear}}^{\text{carr}}(t+1) = x_{\text{bear}}^{\text{carr}}(t) - B_1. \Delta x_{\text{cub-1}}^{\text{cote}} - B_2. \Delta x_{\text{cub-2}}^{\text{cote}} \tag{18}xbearcarr?(t+1)=xbearcarr?(t)?B1?xcub-1cote??B2?xcub-2cote?(18)

B1=B2=ρ(2.r8b?1),(19)B_1 = B_2 = \rho (2. r_8^b - 1), \tag{19}B1?=B2?=ρ(2.r8b??1),(19)

其中 xcotecarr(t)x_{\text{cote}}^{\text{carr}}(t)xcotecarr?(t) 是在第一階段更新后的種群中被選為母熊以保存和增加其身體的當前種群,xcote(t)x_{\text{cote}}(t)xcote?(t) 是在這三個被選中的成員中最好的成員,xcub(1)x_{\text{cub}}^{(1)}xcub(1)?xcub(2)x_{\text{cub}}^{(2)}xcub(2)? 是在這三個被選中的成員中隨機選擇的三個成員。(xcotex_{\text{cote}}xcote? 是這三個被選中成員中最好的成員,而其他兩個成員被選為 xcub(1)x_{\text{cub}}^{(1)}xcub(1)?r4br_4^br4b?r5br_5^br5b?r6br_6^br6b?r7br_7^br7b? 是 [0, 1] 范圍內的隨機向量。B1B_1B1?B2B_2B2? 顯示通過方程 (17) 計算的系數向量。其中 ρ\rhoρ 值在 [0, 1.25] 范圍內,并且在迭代過程中線性從 1.25 減少到 0。

在本節中,假設熊要么狩獵和增肥,要么熊可以通過失去幼崽來儲存更多脂肪。由于熊照顧幼崽,幼崽也可以通過逃跑和戰斗來生存。熊更有可能被郊狼或其他熊捕獵,這影響了狩獵過程。考慮到這一點,狩獵狀態被認為是幼崽被捕獵或丟失,因此我們有以下內容:

xbearhunting-care(t+1)={xbearhunt(t+1)if?β≤0.7xbearcarr(t+1)if?β>0.7(20)x_{\text{bear}}^{\text{hunting-care}}(t+1) = \begin{cases} x_{\text{bear}}^{\text{hunt}}(t+1) & \text{if } \beta \leq 0.7 \\ x_{\text{bear}}^{\text{carr}}(t+1) & \text{if } \beta > 0.7 \end{cases} \tag{20}xbearhunting-care?(t+1)={xbearhunt?(t+1)xbearcarr?(t+1)?if?β0.7if?β>0.7?(20)

其中 β\betaβ 是 [0, 1] 范圍內的隨機值。

2.1.3. 第三階段:捕魚

灰熊對魚有很強的偏好。每年,成千上萬的鮭魚遷徙上游產卵。這些魚為熊提供了它們需要生存的豐富脂肪和蛋白質。魚的豐富性幫助熊獲得它們需要度過冬季的體重。

灰熊沿著鮭魚的遷徙路徑定位自己,捕捉魚并躍入河中。每只熊占據一個特定位置,并能夠在半徑 rrr 內的一個圓形捕魚區域內每天捕獲一定數量的魚。隨著冬季的臨近和結束,魚的數量減少,熊的脂肪增加到冬眠所需的量。因此,我們對以下內容進行建模:

xbearfishing(t+1)=(1+F).xbearfishing(t),(21)x_{\text{bear}}^{\text{fishing}}(t+1) = (1 + F). x_{\text{bear}}^{\text{fishing}}(t), \tag{21}xbearfishing?(t+1)=(1+F).xbearfishing?(t),(21)

F=η?cos?(2.π.r1f),(22)F = \eta \cdot \cos(2. \pi. r_1^f), \tag{22}F=η?cos(2.π.r1f?),(22)

其中 xbearfishing(t)x_{\text{bear}}^{\text{fishing}}(t)xbearfishing?(t) 是第二階段后更新的當前種群,對應于參與捕魚以增加脂肪儲備的熊。項 cos?(2.π.r1f)\cos(2. \pi. r_1^f)cos(2.π.r1f?) 用于模擬圓形捕魚區域,其中 r1fr_1^fr1f? 是 [0, 1] 范圍內的隨機值。參數 η\etaη 在 [0, 1] 范圍內,表示在迭代過程中從 1 減少到 0 的衰減因子。衰減因子 η\etaη 設置為 0.3。

成年灰熊每天大約捕獲 25 條魚。為了考慮每日捕魚量,fnumf^{\text{num}}fnum 是每只熊每天的捕魚嘗試(或重復)次數。因此,我們對捕魚階段表示如下:

(xbearfishing(t+1))(f)=(1+fnum.ffishing(t))(f),?f=[1,2,...,25],(23)(x_{\text{bear}}^{\text{fishing}}(t+1))^{(f)} = (1 + f^{\text{num}}. f^{\text{fishing}}(t))^{(f)}, \quad \forall f = [1, 2, ..., 25], \tag{23}(xbearfishing?(t+1))(f)=(1+fnum.ffishing(t))(f),?f=[1,2,...,25],(23)

其中最大數量 γ\gammaγ 等于 25。一般來說,在捕魚階段,每只熊更新 25 次。每次釣魚嘗試后,如果新生成的解決方案(位置)產生更好的適應度值,它會替換前一個。在本節中,提出了GBFIO算法的執行過程,步驟如下:

步驟1:設置輸入值,包括變量數量(n)、變量的最大值和最小值、最大迭代次數(Iter_max)和種群大小(N)。初始化建議的GBFIO算法參數,包括捕魚數量(f = 25)和 η=0.3\eta = 0.3η=0.3。最后,設置以下參數的最大數量:α=2.5,ρ=1.25,γ=1\alpha = 2.5, \rho = 1.25, \gamma = 1α=2.5,ρ=1.25,γ=1

步驟2:在變量值范圍內隨機生成初始種群,如下所示:

Xˉpop=rand(1,n)?(Xmax?Xmin)+Xmin(22) \bar{X}_{\text{pop}} = \text{rand}(1,n) * (X_{\text{max}} - X_{\text{min}}) + X_{\text{min}} \tag{22} Xˉpop?=rand(1,n)?(Xmax??Xmin?)+Xmin?(22)

其中 XmaxX_{\text{max}}Xmax?XminX_{\text{min}}Xmin? 是變量的最小值和最大值。rand\text{rand}rand 顯示 [0, 1] 范圍內的隨機向量。此外,計算每個種群的目標函數。因此,計算主要種群后,該過程對每個參數重復。

步驟3:開始迭代并將迭代次數設置為 i=1+iterationi = 1 + \text{iteration}i=1+iteration

步驟4:開始搜索階段,基于目標函數選擇前5個最佳成員,如魚、蜂蜜、貝殼、尸體和植物。根據方程 (1)-(11) 計算新的新搜索種群(每個種群被選為熊尋找食物)。

步驟5:計算步驟4中新計算種群的整個目標函數。如果每個新搜索種群的目標函數優于初始種群,則用步驟4中計算的新搜索種群更新初始種群。

步驟6:開始狩獵和護理階段。

步驟6.1-狩獵階段:從種群中選擇表現最佳的成員作為獵物,這將為熊提供最多的脂肪。根據方程 (12)-(14) 計算整個新的狩獵種群。

步驟6.2-護理階段:從種群中隨機選擇三個成員。在他們中,識別表現最佳的作為郊狼,其他兩個作為熊幼崽。根據方程 (15)-(17) 計算新的熊種群。

步驟6.3-根據方程 (18) 選擇狩獵和護理階段的新種群。如果生成的隨機數小于 0.7,則從狩獵階段 (步驟 6.1) 選擇新的狩獵和護理種群 (xbearhunting-carex_{\text{bear}}^{\text{hunting-care}}xbearhunting-care?);如果生成的隨機數大于 0.7,則從護理階段 (步驟 6.2) 選擇狩獵和護理種群 (xbearnursing-carex_{\text{bear}}^{\text{nursing-care}}xbearnursing-care?)。

步驟7:計算步驟 6.3 中新計算種群的整個目標函數。如果每個新的狩獵和護理種群 (xbearhunting-carex_{\text{bear}}^{\text{hunting-care}}xbearhunting-care?) 的目標函數優于更新后的初始種群,則用步驟 6 中計算的新狩獵和護理種群 (xbearhunting-carex_{\text{bear}}^{\text{hunting-care}}xbearhunting-care?) 替換種群。

步驟8:開始捕魚階段。每個更新的種群代表一只每天捕魚 25 次的熊。將捕魚次數設置為 f=1f = 1f=1

步驟8.1:通過方程 (21) 計算新的捕魚種群,然后計算目標函數。

步驟8.2:如果每個捕魚種群 (xbearfishingx_{\text{bear}}^{\text{fishing}}xbearfishing?) 的目標函數優于更新后的初始種群,則用新的捕魚種群 (xbearfishingx_{\text{bear}}^{\text{fishing}}xbearfishing?) 替換種群。

步驟8.3:如果捕魚次數小于最大捕魚次數 (25),則將捕魚次數 f=f+1f = f + 1f=f+1 并返回步驟 8.1。否則,轉到步驟 9。

步驟9:如果迭代次數小于最大迭代次數,則轉到步驟 4;否則轉到步驟 10。

步驟10:選擇更新種群中的最佳成員作為解決方案,然后結束過程。

提出的GBFIO算法的偽代碼在表 1 中描述。此外,GBFIO算法的流程圖如圖 2 所示。

```matlab
clc
clear all
pack
%%%%%%%%%% n is dimension of objective function
n = 30;
%%%%%%%%%% Define the Range of Variables
Xmax = ones(1,n) *100;
Xmin = ones(1,n)*(?100);
%%%%%%%%%% n is the Population Size
N = 150;
%%%%%%%%%% Maximum Number of Iteration
Iter_max = 500;
%%%%%%%%%% Define the GBFIO parameters
f = 2.5;
eta = 1.25;
Zeta = 0.3;
fishing_number = 25;
%%%%%%%%%% Generate the Initial Populations
for i = 1:NIpop(i,:) = rand(1,n).*(Xmax ? Xmin) + Xmin;cost(i,:) = sum(Ipop(i,:).^2);
end
%%%%%%%%%% Sort the Initial Populations Based on Cost Function
Ipop_mix = [Ipop,cost];
Ipop_sort = sortrows(Ipop_mix,n + 1);
%%%%%%%%%% Specify the Fish, Honey, Body, Shell, and Plants
Fish = Ipop_sort(1,:);
Honey = Ipop_sort(2,:);
Body = Ipop_sort(3,:);
Shell = Ipop_sort(4,:);
Plants = Ipop_sort(5,:);
%%%%%%%%%% Start the Iteration for Updating Populations
for iter = 1:Iter_maxfor i = 1:N%%%%%%%%%% Start the Searching Phaser1 = rand(1,n);deltax_fish = (2.*r1.*( (r1).^0.5)).*(Fish(1,[1:n]) ? Ipop(i,:));deltax_honey = (r1.*((r1).^0.5)).*(Honey(1,[1:n]) ? Ipop(i,:));deltax_body = (0.5.*r1.*((r1).^0.5)).*(Body(1,[1:n]) ? Ipop(i,:));deltax_shell = (0.25.*r1.*((r1).^0.5)).*(Shell(1,[1:n]) ? Ipop(i,:));deltax_plants = (0.125.*r1.*((r1).^0.5)).*(Plants(1,[1:n]) ? Ipop(i,:)); Xnew_search = Ipop(i,:) + deltax_fish + deltax_honey + deltax_body + deltax_shell + deltax_plants;Xnew_search = min(Xnew_search,Xmax);Xnew_search = max(Xnew_search,Xmin);cost_S = sum(Xnew_search.^2);%%%%%%%%%% Update the Populationif cost_S < cost(i,1)Ipop(i,:) = Xnew_search;cost(i,1) = cost_S;end%%%%%%%%%% End the Searching Phase%%%%%%%%%% Start the Hunting Phase%%%%% Start the Hunting Phase: Bear HuntingIpop_mix = [Ipop,cost];Ipop_sort = sortrows(Ipop_mix,n + 1);Prey = Ipop_sort(1,:);A = (f*(1-iter/Iter_max)).*(2.*rand(1,n) ? 1);D = abs(((2.*rand(1,n)).*Ipop(i,:))-(rand(1,n).*Prey(1,[1:n])));X_hunt = Ipop(i,:)-A.*D;X_hunt = min(X_hunt,Xmax);X_hunt = max(X_hunt,Xmin);cost_hunt = sum(X_hunt.^2);%%%%% Start the Hunting Phase: Coyote HuntingL = randperm(N);LL = find(L~ = i);LLL = L(LL);J1 = LL(1);J2 = LL(2);J3 = LL(3);I_child = [Ipop(J1,:),cost(J1,1);Ipop(J2,:),cost(J2,1);Ipop(J3,:),cost(J3,1)];I_chsort = sortrows(I_child,n + 1);A1 = (eta*(1-iter/Iter_max)).*(2.*rand(1,n) ? 1);A2 = (eta*(1-iter/Iter_max)).*(2.*rand(1,n) ? 1);D1 = abs(((2.*rand(1,n)).*I_chsort(2,[1:n])) ? (rand(1,n).*I_chsort(1,[1:n])));D2 = abs(((2.*rand(1,n)).*I_chsort(3,[1:n])) ? (rand(1,n).*I_chsort(1,[1:n])));X_ch = Ipop(i,:) ? (A1.*D1 + A2.*D2);X_ch = min(X_ch,Xmax);X_ch = max(X_ch,Xmin);cost_ch = sum(X_ch.^2);%%%%%%%%%% Update the PopulationG = rand(1,1);if G < 0.75if cost_hunt < cost(i,1)Ipop(i,:) = X_hunt;cost(i,1) = cost_hunt;endelseif cost_ch < cost(i,1)Ipop(i,:) = X_ch;cost(i,1) = cost_ch;endend%%%%%%%%%% End the Hunting Phase%%%%%%%%%% Start the Fishing Phasefor kk = 1:fishing_numberZ = Zeta*(1 ? iter/Iter_max)*cos(2*pi*rand(1,1));X_fish = (1 + Z).*Ipop(i,:);X_fish = min(X_fish,Xmax);X_fish = max(X_fish,Xmin);cost_fishing = sum(X_fish.^2);%%%%%%%%%% Update the Populationif cost_fishing < cost(i,1)Ipop(i,:) = X_fish;cost(i,1) = cost_fishing;endend%%%%%%%%%% Specify the Fish, Honey, Body, Shell, and Plants forIpop_mix = [Ipop,cost];Ipop_sort = sortrows(Ipop_mix,n + 1);Fish = Ipop_sort(1,:);Honey = Ipop_sort(2,:);Body = Ipop_sort(3,:);Shell = Ipop_sort(4,:);Plants = Ipop_sort(5,:);end%%%%%%%%%% Specify the Parameters of Convergence CurveConvergence_Curve(iter,1) = iter;Convergence_Curve(iter,2) = Ipop_sort(1,n + 1);
end
%%%%%%%%%% Print the Best Solution
Best = Ipop_sort(1,:);
plot(Convergence_Curve(:,1),Convergence_Curve(:,2))

Dehghani M, Aly M, Rodriguez J, Sheybani E, Javidi G. A Novel Nature-Inspired Optimization Algorithm: Grizzly Bear Fat Increase Optimizer. Biomimetics (Basel). 2025 Jun 7;10(6):379. doi: 10.3390/biomimetics10060379

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/91456.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/91456.shtml
英文地址,請注明出處:http://en.pswp.cn/web/91456.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python爬蟲02_Requests實戰網頁采集器

一、Request請求偽裝解析 #UA&#xff1a;User-Agent&#xff08;請求載體身份標識&#xff09; #UA檢測&#xff1a;門戶網站的服務器會檢測對應請求的載體身份標識&#xff0c;如果檢測到請求的載體身份呢標識為某一款瀏覽器&#xff0c;說明該請求是一個正常的請求&#xff…

vue+elementui實現問卷調查配置可單選、多選、解答

效果&#xff1a;<template> <div><el-form :inline"true" :model"form" :rules"rules" ref"ruleForm"> <el-tabs type"border-card" v-model"cardType"><el-tab-pane name"1&qu…

Docker初學者需要了解的幾個知識點(三):Docker引擎與Docker Desktop

Docker引擎與Docker Desktop簡單說&#xff1a;Docker 引擎是干活的 “核心工具”&#xff0c;負責實際創建、運行容器&#xff0c;就像汽車的發動機&#xff0c;沒它跑不起來。Docker Desktop是個 “套裝軟件”&#xff0c;它把 Docker 引擎打包進去了&#xff0c;還加了圖形化…

Python將Word轉換為Excel

現有大量的Word文檔&#xff0c;每個文檔中有大量的表格&#xff0c;需要將其轉換為Excel。 Python處理源碼 # 需要安裝pip install xlsxwriter import pandas as pd from docx import Document from pathlib import Path from datetime import datetimedef process_docx(filep…

攀爬誤報率↓82%!陌訊多模態算法在周界防護的實戰解析

?摘要?? 原創聲明 本文解析邊緣計算優化下陌訊視覺算法在攀爬識別場景的魯棒性提升&#xff0c;實測數據來自陌訊技術白皮書&#xff08;2025&#xff09;。針對傳統安防系統在復雜光影、姿態變化中的誤檢問題&#xff0c;重點闡述動態決策機制與輕量化部署方案&#xff0c;…

Redis 存在哪些問題

內存相關問題 1. 內存消耗大 無壓縮機制&#xff1a;數據以明文形式存儲&#xff0c;占用內存較大元數據開銷&#xff1a;每個key-value對都有額外的元數據開銷內存碎片&#xff1a;頻繁的更新操作可能產生內存碎片 2. 內存容量限制 單機容量受限&#xff1a;受限于單臺服務器的…

ECMAScript2025(ES16)新特性

概述 ECMAScript2025于2025年6月26日正式發布&#xff0c; 本文會介紹ECMAScript2025(ES16)&#xff0c;即ECMAScript的第16個版本的新特性。 以下摘自官網&#xff1a;ecma-262 ECMAScript 2025, the 16th edition, added a new Iterator global with associated static and…

Vim 編輯器工作模式及操作指南

Vim 編輯器工作模式及操作指南 一、工作模式概述 Vim編輯器主要包含四種工作模式&#xff0c;分別是&#xff1a; 命令模式&#xff08;默認進入模式&#xff09;輸入模式&#xff08;編輯模式&#xff09;末行模式&#xff08;指令模式&#xff09;可視模式 二、模式切換及操作…

Rabbitmq中常見7種模式介紹

p&#xff1a;生成者&#xff0c;生成消息的程序c&#xff1a;消費者&#xff0c;消費消息的程序Queue&#xff1a;消息隊列&#xff0c;用于緩存消息&#xff0c;生產者向里面投遞消息&#xff0c;消費者從里面拿取消息消費X&#xff1a;交換機&#xff0c;在rabbitMQ中&#…

SpringAI 1.0.0發布:打造企業級智能聊天應用

官方文檔 gitee的demo 1、前言 2025年5月&#xff0c;SpringAI 1.0.0終于正式發布。這不僅是另一個普通的庫&#xff0c;更是將Java和Spring推向AI革命前沿的戰略性舉措。給Java生態帶來了強大且全面的AI工程解決方案。眾多企業級應用在SpringBoot上運行關鍵業務&#xff0c…

全球各界關注與討論鴿姆智庫的多維視角分析?

【摘要】全球各界對鴿姆智庫的關注與討論主要集中在以下多維視角&#xff1a; 一、技術創新維度 ?通用思維框架&#xff08;GTF&#xff09;與中文智慧編程系統&#xff08;CWPS&#xff09;? GTF通過模擬人類格式塔認知&#xff0c;實現模式補全與圖形-背景分離功能&#xf…

1??4?? OOP:類、封裝、繼承、多態

文章目錄一、類與實例&#xff1a;從抽象到具體1?? 類&#xff08;Class&#xff09;&#xff1a;抽象的模板2?? 實例&#xff08;Instance&#xff09;&#xff1a;具體的對象3?? __init__ 方法&#xff1a;初始化實例屬性二、封裝&#xff1a;數據與邏輯的“打包”1??…

靜態鏈接 qt 失敗

配置靜態構建 qt 如下所示&#xff0c;執行配置的時候添加 -static 選項即可。 $skiped_modules ("qttools""qtdoc""qttranslations""qtlanguageserver""qtdeclarative""qtquicktimeline""qtquick3d"…

Qt 多線程界面更新策略

在Qt開發中&#xff0c;界面&#xff08;UI&#xff09;更新是高頻操作——無論是后臺任務的進度展示、傳感器數據的實時刷新&#xff0c;還是網絡消息的即時顯示&#xff0c;都需要動態更新界面元素。但Qt對UI操作有一個核心限制&#xff1a;所有UI組件的創建和更新必須在主線…

1.09---區塊鏈節點到底做了什么?從全節點到輕客戶端

鯤志博主出品 Web2 開發者的 Web3 修煉之路 ??【好看的靈魂千篇一律,有趣的鯤志一百六七!】- 歡迎認識我~~ 作者:鯤志說 (公眾號、B站同名,視頻號:鯤志說996) 科技博主:極星會 星輝大使 全棧研發:java、go、python、ts,前電商、現web3 主理人:COC杭州開發者…

Linux線程概念與控制(下)

目錄 前言 2.線程控制 1.驗證理論 2.引入pthread線程庫 3.linux線程控制的接口 3.線程id及進程地址空間布局 4.線程棧 前言 本篇是緊接著上一篇的內容&#xff0c;在有了相關線程概念的基礎之上&#xff0c;我們將要學習線程控制相關話題&#xff01;&#xff01; 2.線程…

力扣面試150題--只出現一次的數字

Day 91 題目描述## 思路 交換律&#xff1a;a ^ b ^ c <> a ^ c ^ b 任何數于0異或為任何數 0 ^ n > n 相同的數異或為0: n ^ n > 0 根據以上 很容易想到做法&#xff0c;將數組中所有的數異或起來&#xff0c;得到的就是只出現一次的數 class Solution {public in…

【運維基礎】Linux 進程調度管理

Linux 進程調度管理 進程調度器 現代計算機系統中既包含只有單個CPU且任何時候都只能處理單個指令的低端系統到具有幾百個cpu、每個cpu有多個核心的高性能超級計算機&#xff0c;可以并行執行幾百個指令。所有這些系統都有一個共同點&#xff1a;系統進程線程數量超出了CPU數量…

深度學習篇---層與層之間搭配

在深度學習中&#xff0c;各種層&#xff08;比如卷積層、激活函數、池化層等&#xff09;的搭配不是隨意的&#xff0c;而是像 “搭積木” 一樣有規律 —— 每一層的作用互補&#xff0c;組合起來能高效提取特征、穩定訓練&#xff0c;最終提升模型性能。下面用通俗易懂的方式…

服務器多線主要是指什么?

在數字化的網絡環境當中&#xff0c;服務器已經成為各個企業提升線上業務發展的重要網絡設備&#xff0c;其中服務器多線則是指一臺服務器中能夠同時接入多個網絡運營商&#xff0c;并且通過智能路由技術實現用戶訪問請求的自動化分配&#xff0c;大大提高了用戶訪問數據信息的…