zoukankan      html  css  js  c++  java
  • 象群游牧算法-Matlab

    1. 适应度函数:

    function z=chaffer(x)%chaffer函数x=(0...0) f(x)=0 x[-10,10]%%没测  
        n=10;
        s1=0;
        for i=1:n
            s1=s1+x(i)^2;
        end
        z=((sin(sqrt(s1)))^2-0.5)/(1+0.001*s1)+0.5;
    end
    

    2. EHO主函数

    % ----------------------------------------------------------                                                                              
    %   Title: Elephant Herbing Optimization Algorithm 
    %   Institution: XI'AN POLYTECHNIC UNIVERSITY
    %   Author:  Liwenchao
    %   Time: 2020-11-8
    % ----------------------------------------------------------
    clc 
    clear
    %   ----------------------------
    %   Definition of Problems
    %   ----------------------------
    
    CostFunction = @(x) chaffer(x);  % cost function 
    dim_Var = 10;  % variables of dimensions
    VarMin = -32.768;  % lower boundary
    VarMax = 32.768;  % upper boundary
    
    %   -------------------------------------------------------------------------
    %   Setting Parameters of Elephant Herbing Optimization Algorithm
    %   -------------------------------------------------------------------------
    
    alpha = 0.75;  % alpha is a scale factor that determines the influence of matriarch on elephant
    beta = 0.01;  % beta is a scale factor that determines the influence of the center of clan on elephant
    epoches = 1000;  % the maximum number of epoches
    num_clan = 5;  % the number of clans
    num_pop = 10;  % the number of elephants in each clans
    num_male = 1;  % leave family group 
    
    %  -----------------------------------
    %   Initialization of Population
    %  -----------------------------------
    
    init_pop = VarMin + rand(num_clan*num_pop, dim_Var) .* (VarMax - VarMin);
    pop_fitness = zeros(num_pop, 1);
    fit_clan = zeros(num_pop, 1);
    pop_best_fitness = zeros(epoches, 1);
    
    for n=1: num_clan*num_pop
            pop_fitness(n) = CostFunction(init_pop(n, :));
    end
    [pop_fbest, pop_best_loc] = min(pop_fitness);
    best_pop = init_pop(pop_best_loc, :);
    
    %------------------------------------------
    %    EHO generation starts   ......
    %------------------------------------------
    for iter=1:epoches    
        for j=1: num_clan 
            clan = init_pop((j-1)*num_pop +1: j * num_pop, :);
            for k=1: num_pop
                fit_clan(k,:) = CostFunction(clan(k, :));
            end
            %  best fitness value and its location
            [fbest, best_loc] = min(fit_clan);
            clan_best = clan(best_loc, :);
            %  worst fitness value and its location
            [fworst, worst_loc] = max(fit_clan);
            clan_worst = clan(worst_loc, :);
            for k=1:num_pop
                if any((k~=best_loc)&(k~=worst_loc))
                    %  update elephant  position in clan except best and worst elephant
                    clan(k, :) = clan(k, :) + alpha*(clan_best - clan(k, :))*rand;
                elseif k==best_loc
                    %  update leader or matriarch 
                    clan_center = sum(clan) / num_pop;
                    clan(k, :) = beta*clan_center;
                elseif k==worst_loc
                    %  update worst elephant or male
                    clan(k, :) = VarMin + rand* (VarMax - VarMin + 1);
                end
                init_pop((j-1)*num_pop +1: j * num_pop, :) = clan;
            end
        end
        % ----------------------------------------------------------------
        %   evaluation population by the newly updated positions
        % ----------------------------------------------------------------
        for n=1: num_clan*num_pop
            pop_fitness(n) = CostFunction(init_pop(n, :));
        end
        [new_pop_fbest, new_pop_best_loc] = min(pop_fitness);
        if new_pop_fbest<pop_fbest
            pop_fbest = new_pop_fbest;
            pop_best_loc = new_pop_best_loc;
            init_pop(pop_best_loc, :) = init_pop(new_pop_best_loc, :);
        end
        pop_best_fitness(iter, :) = pop_fbest;
        disp(['Iteration ' num2str(iter) ': Best Cost = ' num2str(pop_fbest)]);
        disp(init_pop(pop_best_loc, :));
    end
    

    3. 可视化

    % -------------------------------------
    %            visualization
    % -------------------------------------
    figure;
    %plot(pop_best_fitness)
    semilogy(pop_best_fitness);
    xlabel('iteration');
    ylabel('fitness');
    legend('chaffer');
    title('Elephant Herbing Optimization')
    

    4. 结果显示

  • 相关阅读:
    检测主机存活
    centos7 安装python3
    zbb20180103 git 配置用户名和邮箱
    zbb20171215 git 版本回退
    zbb20171215 bootstrap model 模态框
    zbb20171215 MyBatis报错: Parameter '*' not found. Available parameters are [1, 0, param1, param2]
    zbb20171215 thymeleaf th:attr
    zbb20171215ztree ztree出现$.fn.zTree is undefined错误的解决办法
    zbb20171215 bootstrap 日期控件.rar
    zbb20171215 oracle replace 替换单引号
  • 原文地址:https://www.cnblogs.com/mysterygust/p/14640142.html
Copyright © 2011-2022 走看看