【优化求解】基于蝗虫算法求解单目标问题matlab代码
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代码相关推荐
- 【PID优化】基于蝗虫算法PID控制器优化设计含Matlab源码
1 内容介绍 该文针对广泛应用的PID控制器,在MATLAB仿真软件环境下,开发出一个过程控制系统的仿真软件包,能够实现模型辨识和PID参数调节,为过程控制系统仿真研究提供了方便. 该软件界面友好,操 ...
- 【优化求解】基于蝗虫算法求解单目标问题附matlab代码
1 简介 蝗虫算法( Grasshopper Optimization Algorithm,GOA ) 是 由 Saremi 等[1]于2017 年提出的一种元启发式仿生优化算法.具体原理如下: 2 ...
- 【路径优化】基于帝企鹅算法求解TSP问题(Matlab代码实现)
目录 1 帝企鹅算法 2 旅行商问题(TSP) 3 运行结果 4 参考文献 5 Matlab代码实现 1 帝企鹅算法 帝企鹅优化算法(emperor penguin optimizer,EPO)是Ga ...
- 【图像修复】基于criminis算法实现图像修复附matlab代码
1 内容介绍 该算法出自Criminisi的论文 Region Filling and Object Removal by Exemplar-Based Image Inpainting 该算法只要思 ...
- 【图像检测】基于形态学算法实现空瓶检测matlab代码
1 简介 近年来,机器视觉为主导的机器人研究工作正逐步推进,这不仅是对以往智能检测技术的有效突破,而且还能实现资源合理配置这一目标,这种类型的机器人 具 有 广 阔的 应 用 前 景.由 此 可见,本 ...
- 【预测模型】基于布谷鸟算法改进SVM实现预测matlab代码
1 简介 支持向量机(Support Vector Machine,SVM) 是 Vapnik 等人于 1995 年提出的一种基于统计学习理论的新型机器学习方法,它能较好地解决小样本.非线性等实际问题 ...
- MATLAB应用实战系列( 七十五) -图像处理应用 MATLAB实现基于分水岭算法的图像分割 (附matlab代码)
一.简介 二.源代码 clear, close all; clc; %1.读取图像并求取图像的边界.rgb = imread('tree.jpeg');%读取原图像 I = rgb2gray(rgb) ...
- 智能优化与机器学习结合算法实现时序数据预测matlab代码清单
✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.
- 【数据聚类】基于蝙蝠算法实现数据聚类附matlab代码
✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.
最新文章
- nfs服务器与客户端配置
- 话里话外:成功实施ERP要做到的几个关注点
- (转) Hibernate框架基础——操纵持久化对象的方法(Session中)
- B站就服务器故障致歉:现已陆续恢复正常
- ios 控件徽章_一行代码给你的控件加上徽章(Badge)
- Eclipse中Java Web开发插件安装
- 洛谷 p1434 滑雪【记忆化搜索】
- CEC2018:动态多目标测试函数DF1~DF5的PS及PF
- Activiti6工作流入门初体验
- 利用Racher轻松构建PASS平台
- 一点点矩阵知识1:由一个矩阵理论题目展开的关于矩阵的核(kernel)与像(Image)的讲解。
- 计算机各个硬盘分区名称不见了,开机后电脑硬盘分区突然消失了,文件都不见了还能找回吗?...
- 超威主板关闭超线程教程
- oc贴材质透明logo有问题,logo贴图有底色,oc贴图怎么不平铺
- 抢票软件之——py12306使用指南
- android 5 投射屏幕,从手机投射屏幕到电视的5种方法
- Eclipse for C/C++ 版本怎么安装JDT(Java Development Tools)
- linux设备驱动,tty串口编程 如何查看linux下串口是否可用?串口名称等
- 查找计算机16mb的文件,如何搜索win7电脑里的文件
- 深入解读逻辑回归LogisticRegression:适用于初学者
热门文章
- ​​​​​​过滤器和拦截器详解
- 视觉语言导航综述Visual Language Navigation
- librosa@soundFile音频读取和绘图@声道@通道@包络
- 租车小程序系统开发制作功能介绍
- Android软件开发Log实时查看方式(无需数据线)
- 最小二乘法拟合椭圆——MATLAB和Qt-C++实现
- 一个可以免费下载O Reilly的书籍的地方
- C# 操作Excel数据透视表详解 – 创建、操作和删除
- Android APP如何实现支付宝支付
- 《硬件架构的艺术》读书笔记:Chapter 1 亚稳态的世界