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)。