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. 结果显示

象群游牧算法-Matlab的更多相关文章

  1. 象群游牧算法--EHO

    象群游牧算法的数学模型 象群的游牧行为非常复杂,但是其中一些行为可以帮助我们寻找全局最优解和局部最优解.对此,进行数学建模为: (1) 象群的每个部落都有固定数目的大象: (2) 每次迭代中,部落中都 ...

  2. 粒子群优化算法—Matlab

    PSO算法 clc; clear ; close ; %% Problem Definition CostFunction = @(x) sphere(x); % Cost Function nVar ...

  3. 粒子群优化算法PSO及matlab实现

    算法学习自:MATLAB与机器学习教学视频 1.粒子群优化算法概述 粒子群优化(PSO, particle swarm optimization)算法是计算智能领域,除了蚁群算法,鱼群算法之外的一种群 ...

  4. MATLAB粒子群优化算法(PSO)

    MATLAB粒子群优化算法(PSO) 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 一.介绍 粒子群优化算法(Particle Swarm Optim ...

  5. 粒子群优化算法对BP神经网络优化 Matlab实现

    1.粒子群优化算法 粒子群算法(particle swarm optimization,PSO)由Kennedy和Eberhart在1995年提出,该算法模拟鸟集群飞行觅食的行为,鸟之间通过集体的协作 ...

  6. 【C#代码实战】群蚁算法理论与实践全攻略——旅行商等路径优化问题的新方法

    若干年前读研的时候,学院有一个教授,专门做群蚁算法的,很厉害,偶尔了解了一点点.感觉也是生物智能的一个体现,和遗传算法.神经网络有异曲同工之妙.只不过当时没有实际需求学习,所以没去研究.最近有一个这样 ...

  7. [Algorithm] 群体智能优化算法之粒子群优化算法

    同进化算法(见博客<[Evolutionary Algorithm] 进化算法简介>,进化算法是受生物进化机制启发而产生的一系列算法)和人工神经网络算法(Neural Networks,简 ...

  8. 计算智能(CI)之粒子群优化算法(PSO)(一)

    欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识! 计算智能(Computational Intelligence , ...

  9. 数值计算:粒子群优化算法(PSO)

    PSO 最近需要用上一点最优化相关的理论,特地去查了些PSO算法相关资料,在此记录下学习笔记,附上程序代码.基础知识参考知乎大佬文章,写得很棒! 传送门 背景 起源:1995年,受到鸟群觅食行为的规律 ...

随机推荐

  1. layui使用html+servlet+ajax实现登录验证

    我们一般使用的都是form表单提交到Servlet来实现前端和后端的交互的.这次我使用的是ajax提交数据,实现登录操作. 首先我们需要的是一套layui模板,这里用到layui的js和css界面. ...

  2. [atAGC048E]Strange Relation

    考虑对于$\{a_{i+1},...,a_{n}\}$,在其前面插入$a_{i}$对$x_{i}$的影响(不考虑$a_{1}$到$a_{i-1}$): 1.$x_{i}=0$,因为其前面没有数字了 2 ...

  3. Linux学习 - 树莓派4b的U-Boot的初识

    Linux学习 - 树莓派4b的U-Boot的初识 初识U-Boot 学习书籍:<[正点原子]I.MX6U嵌入式Linux驱动开发指南V1.5.1> 章节:第三十章 学习内容: 书中介绍u ...

  4. lilypond和弦及其转位的表示

    在lilypond,如果要打和弦的话,有所谓的chordmode,命令就是\chordmode {} 要使用chordmode需要一些基本的和弦命名的知识,最好先补一下乐理 实际上lilypond的官 ...

  5. gantt甘特图可拖拽、编辑(vue、react都可用 highcharts)

    前言   Excel功能强大,应用广泛.随着web应用的兴起和完善,用户的要求也越来越高.很多Excel的功能都搬到了sass里面.恨不得给他们做个Excel出来...程序员太难了... 去年我遇到了 ...

  6. 深入理解Redis 数据结构—简单动态字符串sds

    Redis是用ANSI C语言编写的,它是一个高性能的key-value数据库,它可以作用在数据库.缓存和消息中间件.其中 Redis 键值对中的键都是 string 类型,而键值对中的值也是有 st ...

  7. Identity Server 4 从入门到落地(二)—— 理解授权码模式

    Identity Server 的目的是认证和授权,我们需要理解认证和授权的工作过程.这就需要了解OAuth 2.0的四种授权模式,下面这张图是授权码模式的工作过程,至少我在一开始看得一头雾水: 现在 ...

  8. 【leetocode】55. Jump Game

    You are given an integer array nums. You are initially positioned at the array's first index, and ea ...

  9. 【Linux】【Shell】【Basic】变量与数据类型

    1. 变量: 1.1. 局部变量:作用域是函数的生命周期:在函数结束时被自动销毁: 定义局部变量的方法:local VARIABLE=VALUE 1.2. 本地变量:作用域是运行脚本的shell进程的 ...

  10. c学习 - 第七章:数组

    7.3.6 字符串处理函数 (1).puts(字符数组) 字符串输出到终端 (2).gets(字符数组) 从标准输入获取字符串(包括空格) (3).strcat(字符数组1,字符数组2) 连接两个字符 ...