代碼功能
該MATLAB代碼用于對比三種元啟發式優化算法(SMA、HHO、GWO三種算法, SMA黏菌算法、HHO哈里斯鷹優化算法、GWO灰狼優化算法) 在特定優化問題上的性能,運行環境MATLABR2020b或更高 :
初始化問題模型(CreateModel)
運行三種算法求解最優解
可視化結果(收斂曲線和解的分布)
算法步驟
環境初始化
清空工作區、命令窗口和圖形窗口。
問題建模
model = CreateModel()
創建優化問題(具體問題未知,可能是TSP/函數優化等)
CostFunction
定義目標函數(需最小化的代價)
參數設置
搜索空間維度:dim(通過Info(model)獲取)
變量邊界:下界 lb、上界 ub
算法參數:最大迭代次數 MaxIt=200,種群大小 nPop=30
運行優化算法
依次執行三種算法:
SMA_fuke2() % 黏菌算法(可能為改進版) HHO() % 哈里斯鷹優化算法 GWO() % 灰狼優化算法
代碼變量:
Bestcost:全局最優代價
bestX:最優解向量
cost_history:每次迭代的最優代價記錄
結果可視化
DrawSolution(results,model) 繪制
算法收斂曲線對比
部分代碼
% 繪制地形模型和威脅
function PlotModel(model)surf(model.X,model.Y,model.H); % 繪制地形
colormap summer; % 繪制地形顏色
shading flat
material dull; % 材料顏色
camlight left; % 在左邊的打光
lighting gouraud; % 燈光
xlabel('x [m]');ylabel('y [m]');zlabel('z [m]');
hold on% 圓柱體障礙
threats = model.threats;
threat_num = size(threats,1);
h=250; % 高度for i = 1:threat_numthreat = threats(i,:);threat_x = threat(1);threat_y = threat(2);threat_z = threat(3);threat_radius = threat(4);[xc,yc,zc]=cylinder(threat_radius); % 單位圓柱color_mat=[186,10,84]./255; %外觀顏色% 設置中心和高度xc=xc+threat_x;yc=yc+threat_y;zc=zc*h+threat_z;c = surf(xc,yc,zc); % 圓柱體fill3(xc(1,:),yc(1,:),zc(1,:),color_mat,'edgecolor','none');fill3(xc(2,:),yc(2,:),zc(2,:),color_mat,'edgecolor','none'); set(c,'edgecolor','none','facecolor',color_mat,'FaceAlpha',.3); %設置顏色
endend