门徒注册PRDUCTS DISPLAY

联系我们

联系人:张生

咨询热线:400-123-4657

传真:+86-123-4567

手机:13800000000

邮箱:admin@youweb.com

地址:广东省广州市天河区88号

在线咨询

公司动态

您现在的位置是: 首页 > 门徒动态 > 公司动态

优化算法 | Jaya算法(附MATLAB代码)

今天为各位讲解Jaya算法,Jaya算法提出时间比较晚,比较有趣的一点是Jaya算法的提出者与教学优化算法的提出者是同一位学者:R. Venkata Rao。

各位一定非常好奇为什么叫Jaya算法?该算法努力通过达到最优解来取得胜利,因此将其命名为 Jaya(Jaya是梵文,意思是胜利)。

相比于教学优化算法的两个阶段(即教师阶段与学习阶段),Jaya算法只有一个阶段,并具有无参数运行、求解速度快、不易陷入局部最优解等优点。

目录

  • Jaya算法更新解的策略
  • Jaya算法流程图
  • Jaya算法实例验证

▎Jaya算法更新解的策略

Jaya算法的基本思想是趋近最优解远离最差解。因此,Jaya算法更新位置的公式如下:

X_{j, k, i}^{\\prime}=X_{j, k, i}+r_{1, j, i}\\left(X_{j, b e s t, i}-\\left|X_{j, k, i}\\right|\\right)-r_{2, j, i}\\left(X_{j, w o r s t, i}-\\left|X_{j, k, i}\\right|\\right)

其中X_{j, k, i}是第i次迭代过程中第k个个体的第j个变量,X_{j, b e s t, i}是第i次迭代过程中目标函数值最好个体的第j个变量,X_{j, w o r s t, i}是第i次迭代过程中目标函数值最差个体的第j个变量,\\left|X_{j, k, i}\\right|X_{j, k, i} 的绝对值,r_{1, j, i}r_{2, j, i}是0~1之间的随机数。X_{j, k, i}^{\\prime}X_{j, k, i}更新后的值。

从上述公式可以看出,r_{1, j, i}\\left(X_{j, b e s t, i}-\\left|X_{j, k, i}\\right|\\right)表现出是当前解向最好解靠拢的趋势,-r_{2, j, i}\\left(X_{j, w o r s t, i}-\\left|X_{j, k, i}\\right|\\right)表现出是当前解远离最差解的趋势。


▎Jaya算法流程图

▎Jaya算法实例验证

实例验证函数如下,目标是求解下述函数最小值
f(x)=\\sum_{i=1}^{10}x_{i}^{2}\\quad-100 \\leq x_{i}\\leq 100

目标函数Sphere函数代码如下:

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

主函数代码如下:

%% 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 = @Sphere;      % 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(' ' )

求解结果如下:

▎参考文献

[1]Rao R. Jaya: A simple and new optimization algorithm for solving constrained and unconstrained optimization problems[J]. International Journal of Industrial Engineering Computations, 2016, 7(1): 19-34.

咱们下期再见

▎近期你可能错过了的好文章:

新书上架 | 《MATLAB智能优化算法:从写代码到算法思想》

优化算法 | 灰狼优化算法(文末有福利)

优化算法 | 鲸鱼优化算法

遗传算法(GA)求解带时间窗的车辆路径(VRPTW)问题MATLAB代码

粒子群优化算法(PSO)求解带时间窗的车辆路径问题(VRPTW)MATLAB代码

在线客服

关注我们 在线咨询 投诉建议 返回顶部

平台注册入口