江南才子 发表于 2021-7-5 11:16:35

【优化算法】海洋捕食者算法(MPA)【含Matlab源码 478期】

  
一、简介
  海洋捕食者算法(MPA)是一种自然启发式的优化算法,它遵循在最佳觅食策略中自然支配的规则,并且在海洋生态系统中遇到捕食者与猎物之间的速率策略。

二、源代码
%_________________________________________________________________________
%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: afaramar@hawk.iit.edu            (Afshin Faramarzi)
%         muh182@iit.edu                   (Mohammad Heidarinejad)
%         ali.mirjalili@laureate.edu.au    (Seyedali Mirjalili)
%         gandomi@uts.edu.au               (Amir H Gandomi)
%_________________________________________________________________________

% --------------------------------------------
% fobj = @YourCostFunction
% dim = number of your variables
% Max_iteration = maximum number of iterations
% SearchAgents_no = number of search agents
% lb= where lbn is the lower bound of variable n
% ub= 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

=Get_Functions_details(Function_name);

=MPA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);

% function topology
figure('Position',)
subplot(1,2,1);
func_plot(Function_name);
title('Function Topology')
xlabel('x_1');
ylabel('x_2');
zlabel()

% 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: afaramar@hawk.iit.edu            (Afshin Faramarzi)
%         muh182@iit.edu                   (Mohammad Heidarinejad)
%         ali.mirjalili@laureate.edu.au    (Seyedali Mirjalili)
%         gandomi@uts.edu.au               (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=
% up is the uppper bound: ub=
% dim is the number of variables (dimension of the problem)

function = 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=;
      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));
end

三、运行结果


四、备注
  版本:2014a

  
页: [1]
查看完整版本: 【优化算法】海洋捕食者算法(MPA)【含Matlab源码 478期】