基於魚群演算法的散熱片形狀最佳化matlab模擬

可编程芯片开发發表於2024-09-05

1.課題概述

使用浴盆曲線進行空隙外形的模擬,然後透過最佳化,計算得到最優的浴盆曲線的各個引數,從而計算出最優的R值。浴盆曲線函式如下所示:

從上面的模擬結果可知,直接對目標函式進行最佳化,模擬速度非常慢,這裡我們使用浴缸曲線結合魚群演算法進行最佳化。從而得到最佳的孔隙度值和H對應的R值。對於浴缸函式,首先可以將部分引數設定為0,從而簡化引數,這裡,我們假設為0.

函式可以簡化為:

更詳細原理可參考文獻:

2.系統模擬結果

3.核心程式與模型

版本:MATLAB2022a

X                 = func_init(Num_Fish,Value_Limit,Value_Limit2);
Value_Limit_Store = Value_Limit2(1:Ker,:);

gen          =  1;
BestY        = -1*ones(1,Iteration);   %最優的函式值
BestX        = -1*ones(Ker,Iteration); %最優的自變數
besty        = -9999;                   %最優函式值
[Y]          =  func_consistence(X);

while(gen<=Iteration)
    gen

    for J=1:Num_Fish
        J
        %聚群行為
        [Xi1,Yi1]=func_Fish_swarm (X,J,Dist_Visual,step,crowd,Num_search,Value_Limit_Store,Y); 
        %追尾行為
        [Xi2,Yi2]=func_Fish_Follow(X,J,Dist_Visual,step,crowd,Num_search,Value_Limit_Store,Y);

        if Yi1>Yi2
            X(:,J)=Xi1;
            Y(1,J)=Yi1;
        else
            X(:,J)=Xi2;
            Y(1,J)=Yi2;
        end
    end

    [Ymax,index]=max(Y);

    if Ymax > besty
        besty          = Ymax;
        bestx          = X(:,index);
        BestY(gen)     = Ymax;
        [BestX(:,gen)] = X(:,index);
    else
        BestY(gen)     = BestY(gen-1);
        [BestX(:,gen)] = BestX(:,gen-1);
    end
    gen = gen + 1;
end

figure
plot(1:Iteration,1./BestY,'-bs',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.0,0.0]);
xlabel('迭代次數');
ylabel('最佳化值');


disp(['最優解X:',num2str(bestx' ,'%1.5f  ')]);
disp(['最優解Y:',num2str(1/besty,'%1.5f  ')]);
save test.mat Iteration bestx besty BestY

alpha = 0;
beta  = bestx(2);
gama  = bestx(4);
siga  = bestx(3);
delt  = 0;
ling  = bestx(1);
t = -2.5:0.02:2.5;
for i = 1:length(t)
    if abs(i-alpha) >= beta
       b(i) = -(abs(t(i) - alpha)-beta)^siga/gama;
    else
       b(i) = 0; 
    end
    lemda(i) = delt + ling*(1-exp(b(i)));
end
figure;
plot(t,lemda,'b-o','LineWidth',1);
title('最佳化後的散熱片內部空隙結構——利用bathtub構造');
grid on
02_014m
toc

  

4.系統原理簡介

魚群演算法(Fish Swarm Algorithm,FSA)是一種模擬自然界中魚群行為的最佳化演算法,具有全域性搜尋能力強、收斂速度快等優點。基於魚群演算法的散熱片形狀最佳化,是透過引入魚群演算法來尋找散熱片最佳形狀的一種方法。

4.1魚群演算法原理

魚群演算法透過模擬魚群中個體的行為來實現尋優。在自然界中,魚群往往呈現出一種自組織、自適應的行為特徵,如聚群、避障、覓食等。魚群演算法將這些行為抽象為數學模型,透過迭代計算來尋找最優解。在魚群演算法中,每個個體(魚)的行為受以下三個規則影響:

(1)聚群規則:個體趨向於向鄰近個體聚集,以保持群體凝聚力。數學上,這可以透過計算個體與鄰近個體的平均距離來實現。

(2)避障規則:個體在遊動過程中會避開障礙物,以保證生存空間。數學上,這可以透過計算個體與障礙物之間的距離來實現。

(3) 覓食規則:個體趨向於向食物豐富的區域遊動,以獲取更多食物。數學上,這可以透過計算個體的適應度值來實現。

4.2魚群演算法的流程

(1)初始化:設定魚群規模、迭代次數等引數,隨機生成初始魚群。

(2)計算適應度值:根據散熱片形狀最佳化的目標函式,計算每個個體的適應度值。

(3)更新位置:根據聚群規則、避障規則和覓食規則,更新每個個體的位置。

(4)判斷終止條件:判斷是否達到最大迭代次數或滿足其他終止條件。若滿足,則輸出最優解;否則,返回步驟(2)。

4.3 散熱片形狀最佳化數學模型

浴盆曲線函式如下所示:

上述結果在最佳化過程中,可以表示為:

其餘引數只改變浴缸曲線的位置,所以,這裡我們只要對上面紅色的三個引數和外部的H進行最優搜尋即可。其對應的結果為:

確定最佳化變數:選擇散熱片的形狀引數作為最佳化變數。

建立目標函式:根據散熱片效能評價指標,建立目標函式。

確定約束條件:根據散熱片設計要求,確定約束條件。

初始化魚群:設定魚群規模和迭代次數,隨機生成初始魚群。

計算適應度值:根據目標函式和約束條件,計算每個個體的適應度值。

更新位置:根據聚群規則、避障規則和覓食規則,更新每個個體的位置。在更新過程中,需要考慮散熱片的形狀約束和製造工藝約束。可透過引入罰函式法或可行方向法來處理約束條件。

判斷終止條件:判斷是否達到最大迭代次數或滿足其他終止條件。若滿足,則輸出最優解;否則,返回步驟(5)。

相關文章