- 智能優化算法與MATLAB編程實踐
- 陳克偉 魏曙光主編
- 590字
- 2024-12-31 17:34:29
1.4.3 主函數設計
通過上述分析,可以設置蜉蝣優化算法參數如下。
設置蜉蝣雌雄性種群數量pop為30,最大迭代次數maxIter為100,個體的維度dim為7(即x1,x2,x3,x4,x5,x6,x7),個體上邊界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
從收斂曲線上看,適應度函數值隨著迭代次數不斷減小,表明蜉蝣優化算法不斷地對參數進行優化。最后,在約束條件范圍內,得到了一組滿足約束條件的參數,對減速器的優化設計具有指導意義。
推薦閱讀
- Flask Web全棧開發實戰
- Spring Cloud Alibaba核心技術與實戰案例
- Oracle Exadata性能優化
- iOS 9 Game Development Essentials
- Django開發從入門到實踐
- PostgreSQL技術內幕:事務處理深度探索
- PostgreSQL 11從入門到精通(視頻教學版)
- Python數據分析從0到1
- 零基礎輕松學SQL Server 2016
- Spring Boot Cookbook
- Android開發:從0到1 (清華開發者書庫)
- PySpark Cookbook
- JavaScript+jQuery網頁特效設計任務驅動教程
- Apache Solr PHP Integration
- Hack與HHVM權威指南