官术网_书友最值得收藏!

1.4.3 主函數設計

通過上述分析,可以設置蜉蝣優化算法參數如下。

設置蜉蝣雌雄性種群數量pop為30,最大迭代次數maxIter為100,個體的維度dim為7(即x1x2x3x4x5x6x7),個體上邊界ub =[3.6, 0.8, 28, 8.3,8.3, 3.9, 5.5],個體下邊界lb=[2.6, 0.7, 17, 7.3, 7.3, 2.9, 5]。蜉蝣優化算法求解減速器設計問題的主函數main設計如下:

%% 基于蜉蝣優化算法的減速器設計
clc;clear all;close all;
%參數設定
pop = 30;%種群數量
dim = 7;%變量維度
ub = [3.6, 0.8, 28, 8.3, 8.3, 3.9, 5.5];%個體上邊界信息
lb = [2.6, 0.7, 17, 7.3, 7.3, 2.9, 5];%個體下邊界信息
maxIter = 100;%最大迭代次數
fobj = @(x) fun(x);%設置適應度函數為fun(x)
%蜉蝣優化算法求解問題
[Best_Pos,Best_fitness,IterCurve] = MOA(pop,dim,ub,lb,fobj,maxIter);
%繪制迭代曲線
figure
plot(IterCurve,'r-','linewidth',1.5);
grid on;%網格開
title('蜉蝣優化算法迭代曲線')
xlabel('迭代次數')
ylabel('適應度')
disp(['求解得到的x1為:',num2str(Best_Pos(1))]);
disp(['求解得到的x2為:',num2str(Best_Pos(2))]);
disp(['求解得到的x3為:',num2str(round(Best_Pos(3)))]);
disp(['求解得到的x4為:',num2str(Best_Pos(4))]);
disp(['求解得到的x5為:',num2str(Best_Pos(5))]);
disp(['求解得到的x6為:',num2str(Best_Pos(6))]);
disp(['求解得到的x7為:', num2str(Best_Pos(7))]);
disp(['最優解對應的函數值為:',num2str(Best_fitness)]);
%計算不滿足約束條件的個數
[fitness,g]=fun(Best_Pos);
n=sum(g>0);%約束的值大于0的個數
disp(['違反約束條件的個數',num2str(n)]);

程序運行結果如圖1.7所示。

圖1.7 程序運行結果

運行結果如下:

求解得到的x1為:3.5
求解得到的x2為:0.7
求解得到的x3為:17
求解得到的x4為:8.054
求解得到的x5為:7.9878
求解得到的x6為:3.3663
求解得到的x7為:5.2934
最優解對應的函數值為:3015.6084
違反約束條件的個數0

從收斂曲線上看,適應度函數值隨著迭代次數不斷減小,表明蜉蝣優化算法不斷地對參數進行優化。最后,在約束條件范圍內,得到了一組滿足約束條件的參數,對減速器的優化設計具有指導意義。

主站蜘蛛池模板: 额尔古纳市| 侯马市| 江西省| 郯城县| 尉犁县| 许昌县| 凭祥市| 许昌市| 驻马店市| 平山县| 米林县| 本溪| 云浮市| 巴马| 漳平市| 太康县| 肥东县| 左云县| 平昌县| 盖州市| 全椒县| 长宁区| 皮山县| 启东市| 郧西县| 丹凤县| 吉木萨尔县| 瑞安市| 临安市| 靖江市| 新化县| 沾化县| 日照市| 砀山县| 富民县| 沅陵县| 澄城县| 祥云县| 株洲市| 武川县| 吴旗县|