ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

【优化求解】基于磷虾群算法求解最优目标matlab源码

2021-10-24 19:59:08  阅读:183  来源: 互联网

标签:10 NK LB 求解 源码 matlab NP nr z1


1 简介

磷虾群算法(Krill Herd Algorithm,KHA)是 Gandomi 等于2012年提出的一种新型优化算法 。具体原理如下:

2 部分代码

% Krill Herd Algorithm V 1.1

% Main paper:
% Gandomi A.H., Alavi A.H., Krill Herd: A New Bio-Inspired Optimization Algorithm.
% Communications in Nonlinear Science and Numerical Simulation, 

function KH
clc; close all; clear all
format long

%% Initial Parameter Setting
NR = 10;                                  % Number if Runs
NK = 25;        % Number if Krills
MI = 200;                           % Maximum Iteration
C_flag = 1;                               % Crossover flag [Yes=1]

% Bounds (Normalize search space in case of highly imbalanced search space)
UB = 10*ones(1,10);
LB = -10*ones(1,10);

NP = length(LB); % Number if Parameter(s)
Dt = mean(abs(UB-LB))/2; % Scale Factor

F = zeros(NP,NK);D = zeros(1,NK);N = zeros(NP,NK); %R = zeros(NP,NK);
Vf = 0.02; Dmax = 0.005; Nmax = 0.01; Sr = 0;
%% Optimization & Simulation
for nr = 1:NR
   %Initial Krills positions
   for z1 = 1:NP
       X(z1,:) = LB(z1) + (UB(z1) - LB(z1)).*rand(1,NK);
   end
   
   for z2 = 1:NK
       K(z2)=cost(X(:,z2));
   end
   
   Kib=K;
   Xib=X;
  [Kgb(1,nr), A] = min(K);
   Xgb(:,1,nr) = X(:,A);
   
   for j = 1:MI 
       % Virtual Food
       for ll = 1:NP;
           Sf(ll) = (sum(X(ll,:)./K));
       end
       Xf(:,j) = Sf./(sum(1./K)); %Food Location       
       Xf(:,j) =findlimits(Xf(:,j)',LB,UB,Xgb(:,j,nr)');% Bounds Checking
       Kf(j) = cost(Xf(:,j));
       if 2<=j
           if Kf(j-1)<Kf(j)
               Xf(:,j) = Xf(:,j-1);
               Kf(j) = Kf(j-1);
           end
       end
       
       Kw_Kgb = max(K)-Kgb(j,nr);
       w = (0.1+0.8*(1-j/MI));
       
       for i = 1:NK
           % Calculation of distances
           Rf = Xf(:,j)-X(:,i);
           Rgb = Xgb(:,j,nr)-X(:,i);
           for ii = 1:NK
               RR(:,ii) = X(:,ii)-X(:,i);
           end
           R = sqrt(sum(RR.*RR));
           
           % % % % % % % % % % % % % Movement Induced % % % % % % % % % %
        

%% Post-Processing
[Best, Ron_No] = min(Kgb(end,:))
Xgb(:,end,Ron_No)
Mean = mean(Kgb(end,:))
Worst = max(Kgb(end,:))
Standard_Deviation = std(Kgb(end,:))

% Convergence plot of the best run
semilogy(1:MI+1,Kgb(:,Ron_No),1:MI+1,mean(Kgb'))
xlabel('{\itNo. of Iterations}')
ylabel('{\itf}({\bfx_{best}})')
legend('Best run values','Average run values')
img =gcf;  %获取当前画图的句柄
print(img, '-dpng', '-r600', './img.png')         %即可得到对应格式和期望dpi的图像

3 仿真结果

4 参考文献

[1]肖雄、高渺、陈功贵. "基于混合混沌磷虾算法的短期水火电调度研究." 计算机工程与科学 42.9(2020):12.

图片

标签:10,NK,LB,求解,源码,matlab,NP,nr,z1
来源: https://blog.csdn.net/qq_59747472/article/details/120939304

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有