介绍一种经典的群智能算法-JAYA(MATALB实现)

直接给出matlab源码,运行JAYA.m即可得出优化结果

JAYA.m的代码

%% JAYA algorithms
clc
clear all
close all

%% Problem Definition

pop = 1000;               % Population size
var = 10;                 % Number of design variables
maxGen = 3000;            % Maximum number of iterations
mini = -100*ones(1,var);  % Lower Bound of Variables
maxi = 100*ones(1,var);   % Upper Bound of Variables
objective = @fitness;      % Cost Function
 
%% initialize
[row,var] = size(mini);
x = zeros(pop,var);
fnew = zeros(pop,1);
f = zeros(pop,1);
fopt= zeros(pop,1);
xopt=zeros(1,var);

%%  Generation and Initialize the positions 
for i=1:var
    x(:,i) = mini(i)+(maxi(i)-mini(i))*rand(pop,1);
end

for i=1:pop
    f(i) = objective(x(i,:));
end

%%  Main Loop
gen=1;
while(gen <= maxGen)

    [row,col]=size(x);
    [t,tindex]=min(f);
    Best=x(tindex,:);
    [w,windex]=max(f);
    worst=x(windex,:);
    xnew=zeros(row,col);
    
    for i=1:row
        for j=1:col
            xnew(i,j)=(x(i,j))+rand*(Best(j)-abs(x(i,j))) - (worst(j)-abs(x(i,j)));  % 
        end
    end 
    
    for i=1:row
        xnew(i,:) = max(min(xnew(i,:),maxi),mini);   
        fnew(i,:) = objective(xnew(i,:));
    end
    
    for i=1:pop
        if(fnew(i)<f(i))
            x(i,:) = xnew(i,:);
            f(i) = fnew(i);
        end
    end

    fnew = []; xnew = [];
    [fopt(gen),ind] = min(f);
    xopt(gen,:)= x(ind,:);
    gen = gen+1;  
    disp(['Iteration No. = ',num2str(gen), ',   Best Cost = ',num2str(min(f))])
    
end

%% 

[val,ind] = min(fopt);
Fes = pop*ind;
disp(['Optimum value = ',num2str(val,10)])



 figure(1)
 plot(fopt,'linewid',2)
 xlabel('Itteration')
 ylabel('Best Cost');
 legend('JAYA')
 disp(' ' )

目标函数fitness.m

function [f] = fitness(x)
f= sum(x.^2);
end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值