1 简介

蝗虫算法( Grasshopper Optimization Algorithm,GOA ) 是 由 Saremi 等[1]于2017 年提出的一种元启发式仿生优化算法。具体原理如下:

2 部分代码

%_____________________________

% Multi-objective Grasshopper Optimization Algorithm (MOGOA) source codes version 1.0

%

clc;

clear;

close all;

% Change these details with respect to your problem%%%%%%%%%%%%%%

ObjectiveFunction=@ZDT1;

dim=5;

lb=0;

ub=1;

obj_no=2;

if size(ub,2)==1

ub=ones(1,dim)*ub;

lb=ones(1,dim)*lb;

end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

flag=0;

if (rem(dim,2)~=0)

dim = dim+1;

ub = [ub, 1];

lb = [lb, 0];

flag=1;

end

max_iter=100;

N=200;

ArchiveMaxSize=100;

Archive_X=zeros(100,dim);

Archive_F=ones(100,obj_no)*inf;

Archive_member_no=0;

%Initialize the positions of artificial whales

GrassHopperPositions=initialization(N,dim,ub,lb);

TargetPosition=zeros(dim,1);

TargetFitness=inf*ones(1,obj_no);

cMax=1;

cMin=0.00004;

%calculate the fitness of initial grasshoppers

for iter=1:max_iter

for i=1:N

Archive_mem_ranks=RankingProcess(Archive_F, ArchiveMaxSize, obj_no);

[Archive_X, Archive_F, Archive_mem_ranks, Archive_member_no]=HandleFullArchive(Archive_X, Archive_F, Archive_member_no, Archive_mem_ranks, ArchiveMaxSize);

else

Archive_mem_ranks=RankingProcess(Archive_F, ArchiveMaxSize, obj_no);

end

Archive_mem_ranks=RankingProcess(Archive_F, ArchiveMaxSize, obj_no);

index=RouletteWheelSelection(1./Archive_mem_ranks);

if index==-1

index=1;

end

TargetFitness=Archive_F(index,:);

TargetPosition=Archive_X(index,:)';

c=cMax-iter*((cMax-cMin)/max_iter); % Eq. (3.8) in the paper

for i=1:N

temp= GrassHopperPositions;

for k=1:2:dim

S_i=zeros(2,1);

for j=1:N

if i~=j

Dist=distance(temp(k:k+1,j), temp(k:k+1,i));

r_ij_vec=(temp(k:k+1,j)-temp(k:k+1,i))/(Dist+eps);

xj_xi=2+rem(Dist,2);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Eq. (3.2) in the paper

s_ij=((ub(k:k+1)' - lb(k:k+1)') .c/2)S_func(xj_xi).*r_ij_vec;

S_i=S_i+s_ij;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

end

end

S_i_total(k:k+1, :) = S_i;

end

X_new=c*S_i_total'+(TargetPosition)'; % Eq. (3.7) in the paper

GrassHopperPositions_temp(i,:)=X_new';

end

% GrassHopperPositions

GrassHopperPositions=GrassHopperPositions_temp';

display(['At the iteration ', num2str(iter), ' there are ', num2str(Archive_member_no), ' non-dominated solutions in the archive']);

end

if (flag==1)

TargetPosition = TargetPosition(1:dim-1);

end

figure

Draw_ZDT1();

hold on

plot(Archive_F(:,1),Archive_F(:,2),'ro','MarkerSize',8,'markerfacecolor','k');

legend('True PF','Obtained PF');

title('MOGOA');

set(gcf, 'pos', [403  466  230  200])

img =gcf; %获取当前画图的句柄

print(img, '-dpng', '-r600', './img.png')     %即可得到对应格式和期望dpi的图像

3 仿真结果

4 参考文献

[1]潘峰, and 孙红霞. "基于蝗虫算法的图像多阈值分割方法." 电子测量与仪器学报 033.001(2019):149-155.

部分理论引用网络文献,若有侵权联系博主删除。

5 MATLAB代码与数据下载地址

见博客主页

【优化求解】基于蝗虫算法求解单目标问题matlab代码相关推荐

  1. 【PID优化】基于蝗虫算法PID控制器优化设计含Matlab源码

    1 内容介绍 该文针对广泛应用的PID控制器,在MATLAB仿真软件环境下,开发出一个过程控制系统的仿真软件包,能够实现模型辨识和PID参数调节,为过程控制系统仿真研究提供了方便. 该软件界面友好,操 ...

  2. 【优化求解】基于蝗虫算法求解单目标问题附matlab代码

    1 简介 蝗虫算法( Grasshopper Optimization Algorithm,GOA ) 是 由 Saremi 等[1]于2017 年提出的一种元启发式仿生优化算法.具体原理如下: 2 ...

  3. 【路径优化】基于帝企鹅算法求解TSP问题(Matlab代码实现)

    目录 1 帝企鹅算法 2 旅行商问题(TSP) 3 运行结果 4 参考文献 5 Matlab代码实现 1 帝企鹅算法 帝企鹅优化算法(emperor penguin optimizer,EPO)是Ga ...

  4. 【图像修复】基于criminis算法实现图像修复附matlab代码

    1 内容介绍 该算法出自Criminisi的论文 Region Filling and Object Removal by Exemplar-Based Image Inpainting 该算法只要思 ...

  5. 【图像检测】基于形态学算法实现空瓶检测matlab代码

    1 简介 近年来,机器视觉为主导的机器人研究工作正逐步推进,这不仅是对以往智能检测技术的有效突破,而且还能实现资源合理配置这一目标,这种类型的机器人 具 有 广 阔的 应 用 前 景.由 此 可见,本 ...

  6. 【预测模型】基于布谷鸟算法改进SVM实现预测matlab代码

    1 简介 支持向量机(Support Vector Machine,SVM) 是 Vapnik 等人于 1995 年提出的一种基于统计学习理论的新型机器学习方法,它能较好地解决小样本.非线性等实际问题 ...

  7. MATLAB应用实战系列( 七十五) -图像处理应用 MATLAB实现基于分水岭算法的图像分割 (附matlab代码)

    一.简介 二.源代码 clear, close all; clc; %1.读取图像并求取图像的边界.rgb = imread('tree.jpeg');%读取原图像 I = rgb2gray(rgb) ...

  8. 智能优化与机器学习结合算法实现时序数据预测matlab代码清单

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  9. 【数据聚类】基于蝙蝠算法实现数据聚类附matlab代码

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

最新文章

  1. nfs服务器与客户端配置
  2. 话里话外:成功实施ERP要做到的几个关注点
  3. (转) Hibernate框架基础——操纵持久化对象的方法(Session中)
  4. B站就服务器故障致歉:现已陆续恢复正常
  5. ios 控件徽章_一行代码给你的控件加上徽章(Badge)
  6. Eclipse中Java Web开发插件安装
  7. 洛谷 p1434 滑雪【记忆化搜索】
  8. CEC2018:动态多目标测试函数DF1~DF5的PS及PF
  9. Activiti6工作流入门初体验
  10. 利用Racher轻松构建PASS平台
  11. 一点点矩阵知识1:由一个矩阵理论题目展开的关于矩阵的核(kernel)与像(Image)的讲解。
  12. 计算机各个硬盘分区名称不见了,开机后电脑硬盘分区突然消失了,文件都不见了还能找回吗?...
  13. 超威主板关闭超线程教程
  14. oc贴材质透明logo有问题,logo贴图有底色,oc贴图怎么不平铺
  15. 抢票软件之——py12306使用指南
  16. android 5 投射屏幕,从手机投射屏幕到电视的5种方法
  17. Eclipse for C/C++ 版本怎么安装JDT(Java Development Tools)
  18. linux设备驱动,tty串口编程 如何查看linux下串口是否可用?串口名称等
  19. 查找计算机16mb的文件,如何搜索win7电脑里的文件
  20. 深入解读逻辑回归LogisticRegression:适用于初学者

热门文章

  1. ​​​​​​过滤器和拦截器详解
  2. 视觉语言导航综述Visual Language Navigation
  3. librosa@soundFile音频读取和绘图@声道@通道@包络
  4. 租车小程序系统开发制作功能介绍
  5. Android软件开发Log实时查看方式(无需数据线)
  6. 最小二乘法拟合椭圆——MATLAB和Qt-C++实现
  7. 一个可以免费下载O Reilly的书籍的地方
  8. C# 操作Excel数据透视表详解 – 创建、操作和删除
  9. Android APP如何实现支付宝支付
  10. 《硬件架构的艺术》读书笔记:Chapter 1 亚稳态的世界