The main inspirations for MPA are broad foraging strategies, namely Levy and Brownian motions in Marine predators, and strategies for optimal encounter rates in biological interactions between predators and prey. MPA follows the rules of natural dominance in optimal foraging strategies and encounters rate strategies between predators and prey in Marine ecosystems. This paper evaluates MPA performance in 29 test functions, CEC-BC-2017 test suite, randomly generated landscapes, three engineering benchmarks, and two practical engineering design problems in ventilation and building energy efficiency. MPA is compared with three existing optimization methods, including: (1) GA and PSO are the most deeply studied metaheuristic algorithms; (2) GSA, CS and SSA are recently developed algorithms; (3) CMA-ES, SHADE, and LSHADE-cnEpSin are high performance optimizers and IEEE CEC winners competing. Of all the methods, MPA took second place and showed very competitive results compared to LSHAshade -cnEpSin, which was the best performing method and was one of the winners of CEC 2017 competition. Postmortem statistical analysis shows that MPA can be nominated as a high performance optimizer and is a better algorithm than GA, PSO, GSA, CS, SSA and CMA-ES, while the statistical performance is similar to SHADE and LSHAd-CNepsin

 

%_________________________________________________________________________ % Marine Predators Algorithm source code (Developed in MATLAB R2015a) % %_________________________________________________________________________ % -------------------------------------------- % fobj = @YourCostFunction % dim = number of your variables % Max_iteration  = maximum number of iterations % SearchAgents_no = number of search agents % lb=[lb1,lb2,...,lbn] where lbn is the lower bound of variable n % ub=[ub1,ub2,...,ubn] where ubn is the upper bound of variable n % --------------------------------------------------------- clear all clc format long SearchAgents_no=25; % Number of search agents Function_name='F23'; Max_iteration=500; % Maximum number of iterations [lb,ub,dim,fobj]=Get_Functions_details(Function_name); [Best_score,Best_pos,Convergence_curve]=MPA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj); % function topology figure('Position',[500 400 700 290]) subplot(1,2,1); func_plot(Function_name); title('Function Topology') xlabel('x_1'); ylabel('x_2'); Zlabel ([Function_name,'(x_1, x_2)']) % Convergence curve subplot(1,2,2); semilogy(Convergence_curve,'Color','r') title('Objective space') xlabel('Iteration'); ylabel('Best score obtained so far'); %_________________________________________________________________________ % Marine Predators Algorithm source code (Developed in MATLAB R2015a) % % programming: Afshin Faramarzi & Seyedali Mirjalili % % paper: % A. Faramarzi, M. Heidarinejad, S. Mirjalili, A.H. Gandomi, % Marine Predators Algorithm: A Nature-inspired Metaheuristic % Expert Systems with Applications % DOI: Doi.org/10.1016/j.eswa.2020.113377% % E - mails: [email protected] (Afshin Faramarzi) % [email protected] (Mohammad Heidarinejad) % [email protected] (Seyedali Mirjalili) % [email protected] (Amir H Gandomi) %_________________________________________________________________________ % This function containts full information and implementations of the benchmark % functions in Table 1, Table 2, and Table 3 in the paper % lb is the lower bound: lb=[lb_1,lb_2,...,lb_d] % up is the uppper bound: ub=[ub_1,ub_2,...,ub_d] % dim is the number of variables (dimension of the problem) function [lb,ub,dim,fobj] = Get_Functions_details(F) switch F case 'F1' fobj = @F1; lb=-100; ub=100; dim=50; case 'F2' fobj = @F2; lb=-10; ub=10; dim=50; case 'F3' fobj = @F3; lb=-100; ub=100; dim=50; case 'F4' fobj = @F4; lb=-100; ub=100; dim=50; case 'F5' fobj = @F5; lb=-30; ub=30; dim=50; case 'F6' fobj = @F6; lb=-100; ub=100; dim=50; case 'F7' fobj = @F7; Lb = 1.28; Ub = 1.28; dim=50; case 'F8' fobj = @F8; lb=-500; ub=500; dim=50; case 'F9' fobj = @F9; Lb = 5.12; Ub = 5.12; dim=50; case 'F10' fobj = @F10; lb=-32; ub=32; dim=50; case 'F11' fobj = @F11; lb=-600; ub=600; dim=50; case 'F12' fobj = @F12; lb=-50; ub=50; dim=50; case 'F13' fobj = @F13; lb=-50; ub=50; dim=50; case 'F14' fobj = @F14; Lb = 65.536; Ub = 65.536; dim=2; case 'F15' fobj = @F15; lb=-5; ub=5; dim=4; case 'F16' fobj = @F16; lb=-5; ub=5; dim=2; case 'F17' fobj = @F17; Lb = [5, 0]; Ub = [10]; dim=2; case 'F18' fobj = @F18; lb=-2; ub=2; dim=2; case 'F19' fobj = @F19; lb=0; ub=1; dim=3; case 'F20' fobj = @F20; lb=0; ub=1; dim=6; case 'F21' fobj = @F21; lb=0; ub=10; dim=4; case 'F22' fobj = @F22; lb=0; ub=10; dim=4; case 'F23' fobj = @F23; lb=0; ub=10; dim=4; end end % F1 function o = F1(x) o=sum(x.^2); end % F2 function o = F2(x) o=sum(abs(x))+prod(abs(x)); end % F3 function o = F3(x) dim=size(x,2); o=0; for i=1:dim o=o+sum(x(1:i))^2; end end % F4 function o = F4(x) o=max(abs(x)); endCopy the code

3. Operation results

 

Fourth, note

Complete code or simulation consulting to add QQ1575304183