【智能优化算法】蚱蜢优化算法(Grasshopper Optimization Algorithm,GOA)

蚱蜢优化算法(Grasshopper Optimization Algorithm,GOA)是期刊“IEEE Access”(IF 3.9)的2021年智能优化算法

01.引言

蚱蜢优化算法(Grasshopper optimization algorithm, GOA),并将其应用于结构优化中的挑战性问题。该算法在数学上模拟和模拟了自然界中蚱蜢群的行为,以解决优化问题。首先在包括CEC2005在内的一系列测试问题上对GOA算法进行基准测试,对其性能进行定性和定量的测试和验证。然后,利用该方法对52杆桁架、3杆桁架和悬臂梁进行了优化设计,验证了该方法的适用性。结果表明,与文献中已知的和最新的算法相比,所提出的算法能够提供更好的结果。实际应用的结果也证明了GOA在解决具有未知搜索空间的实际问题方面的优点。

02.优化算法的流程

03.论文中算法对比图

04.部分代码

% The Grasshopper Optimization Algorithm
function [TargetFitness,TargetPosition,Convergence_curve,Trajectories,fitness_history, position_history]=GOA(N, Max_iter, lb,ub, dim, fobj)
disp('GOA is now estimating the global optimum for your problem....')
flag=0;
if size(ub,1)==1ub=ones(dim,1)*ub;lb=ones(dim,1)*lb;
end
if (rem(dim,2)~=0) % this algorithm should be run with a even number of variables. This line is to handle odd number of variablesdim = dim+1;ub = [ub; 100];lb = [lb; -100];flag=1;
end
%Initialize the population of grasshoppers
GrassHopperPositions=initialization(N,dim,ub,lb);
GrassHopperFitness = zeros(1,N);
fitness_history=zeros(N,Max_iter);
position_history=zeros(N,Max_iter,dim);
Convergence_curve=zeros(1,Max_iter);
Trajectories=zeros(N,Max_iter);
cMax=1;
cMin=0.00004;
%Calculate the fitness of initial grasshoppers
for i=1:size(GrassHopperPositions,1)if flag == 1GrassHopperFitness(1,i)=fobj(GrassHopperPositions(i,1:end-1));elseGrassHopperFitness(1,i)=fobj(GrassHopperPositions(i,:));endfitness_history(i,1)=GrassHopperFitness(1,i);position_history(i,1,:)=GrassHopperPositions(i,:);Trajectories(:,1)=GrassHopperPositions(:,1);
end
[sorted_fitness,sorted_indexes]=sort(GrassHopperFitness);
% Find the best grasshopper (target) in the first population 
for newindex=1:NSorted_grasshopper(newindex,:)=GrassHopperPositions(sorted_indexes(newindex),:);
end
TargetPosition=Sorted_grasshopper(1,:);
TargetFitness=sorted_fitness(1);
% Main loop
l=2; % Start from the second iteration since the first iteration was dedicated to calculating the fitness of antlions
while l<Max_iter+1c=cMax-l*((cMax-cMin)/Max_iter); % Eq. (2.8) in the paperfor i=1:size(GrassHopperPositions,1)temp= GrassHopperPositions';for k=1:2:dimS_i=zeros(2,1);for j=1:Nif i~=jDist=distance(temp(k:k+1,j), temp(k:k+1,i)); % Calculate the distance between two grasshoppersr_ij_vec=(temp(k:k+1,j)-temp(k:k+1,i))/(Dist+eps); % xj-xi/dij in Eq. (2.7)xj_xi=2+rem(Dist,2); % |xjd - xid| in Eq. (2.7) s_ij=((ub(k:k+1) - lb(k:k+1))*c/2)*S_func(xj_xi).*r_ij_vec; % The first part inside the big bracket in Eq. (2.7)S_i=S_i+s_ij;endendS_i_total(k:k+1, :) = S_i;endX_new = c * S_i_total'+ (TargetPosition); % Eq. (2.7) in the paper      GrassHopperPositions_temp(i,:)=X_new'; end% GrassHopperPositionsGrassHopperPositions=GrassHopperPositions_temp;for i=1:size(GrassHopperPositions,1)% Relocate grasshoppers that go outside the search space Tp=GrassHopperPositions(i,:)>ub';Tm=GrassHopperPositions(i,:)<lb';GrassHopperPositions(i,:)=(GrassHopperPositions(i,:).*(~(Tp+Tm)))+ub'.*Tp+lb'.*Tm;% Calculating the objective values for all grasshoppersif flag == 1GrassHopperFitness(1,i)=fobj(GrassHopperPositions(i,1:end-1));elseGrassHopperFitness(1,i)=fobj(GrassHopperPositions(i,:));endfitness_history(i,l)=GrassHopperFitness(1,i);position_history(i,l,:)=GrassHopperPositions(i,:);Trajectories(:,l)=GrassHopperPositions(:,1);% Update the targetif GrassHopperFitness(1,i)<TargetFitnessTargetPosition=GrassHopperPositions(i,:);TargetFitness=GrassHopperFitness(1,i);endendConvergence_curve(l)=TargetFitness;
%     disp(['In iteration #', num2str(l), ' , target''s objective = ', num2str(TargetFitness)])l = l + 1;
end
if (flag==1)TargetPosition = TargetPosition(1:dim-1);
end
end
function d = distance(a,b)
d=sqrt((a(1)-b(1))^2+(a(2)-b(2))^2);
end
function o=S_func(r)
f=0.5;
l=1.5;
o=f*exp(-r/l)-exp(-r);  % Eq. (2.3) in the paper
end

04.本代码效果图

获取代码请关注MATLAB科研小白的个人公众号(即文章下方二维码),并回复智能优化算法本公众号致力于解决找代码难,写代码怵。各位有什么急需的代码,欢迎后台留言~不定时更新科研技巧类推文,可以一起探讨科研,写作,文献,代码等诸多学术问题,我们一起进步。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/4958.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安卓手机APP开发__媒体开发部分__APK裁剪

安卓手机APP开发__媒体开发部分__APK裁剪 目录 概述 仅使用必要的依赖 启用代码和资源的裁剪 指定你的APP需要哪一个渲染器 指定你的APP需要哪个抽取器 定制媒体源的实例化 概述 最小化APK的大小是开发一个好的安卓APP的一个重要的方面.当面向的是正在开发 的市场时更是…

Linux的docker基础知识

centOS7安装 yum install docker -y systemctl start docker systemctl enable dockerkali安装 # 添加docker的gpg密钥&#xff0c;签名用的 curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/gpg | sudo apt-key add -# 添加docker的清华大学apt镜像…

Microsoft Edge浏览器:高效、简洁、个性化的网页浏览体验

Microsoft Edge是微软公司推出的一款网络浏览器&#xff0c;它是基于Chromium开源项目开发的&#xff0c;因此与Google Chrome有很多相似之处。以下是一些使用Microsoft Edge的心得体会&#xff1a; 1. 界面简洁&#xff1a;Microsoft Edge的界面设计非常简洁&#xff0c;用户…

华为od入职第13天!

今天早上就分配活了&#xff0c;写一个模块的ut&#xff0c;但是今天一句代码没写成&#xff0c;一直在看代码逻辑。下午就是新员工的一个会&#xff0c;部门20来个人做一下自我介绍啥的。晚上我导师给我们几个新员工讲项目框架和一些代码逻辑啥的&#xff0c;讲了一个多小时&a…

区块链技术与应用学习笔记(5-7节)——北大肖臻课程

​ 目录 ​BTC实现 基于交易的账本模式&#xff1a; UTXO集合&#xff1a; 交易费用&#xff1a; BTC网络 1.应用层&#xff1a; 2.网络层&#xff1a; 3传播层&#xff1a; 什么是鲁棒&#xff1f; BTC挖矿&#xff1a; 出块奖励&#xff1a; 挖矿难度调整&#…

Python | Leetcode Python题解之第51题N皇后

题目&#xff1a; 题解&#xff1a; class Solution:def solveNQueens(self, n: int) -> List[List[str]]:def generateBoard():board list()for i in range(n):row[queens[i]] "Q"board.append("".join(row))row[queens[i]] "."return b…

ChatGPT使用指南:Prompt简单提示词

在使用ChatGPT或其他基于AI的聊天模型时&#xff0c;有效地构建prompt&#xff08;提示词或指令&#xff09;是非常重要的。好的prompt可以帮助模型更准确地理解您的需求&#xff0c;并提供更贴切的回答。以下是一些构建高效prompt的技巧和示例。 1. 明确具体 当您向ChatGPT提…

yolo3的实现流程是怎样的?

YOLOv3&#xff08;You Only Look Once version 3&#xff09;是一种流行的目标检测算法&#xff0c;它的实现流程大致如下&#xff1a; 1. 输入图像&#xff1a;YOLOv3 接受一张输入图像&#xff0c;并将其送入一个卷积神经网络&#xff08;CNN&#xff09;。 2. 特征提取&a…

【C语言刷题系列】对数字添加逗号

目录 一、问题描述 二、解题思路 三、源代码 拓展&#xff1a; 个人主页&#xff1a; 倔强的石头的博客 系列专栏 &#xff1a;C语言指南 C语言刷题系列 一、问题描述 二、解题思路 题目的要求&#xff0c;即对于一个较大的整数&#xff0c;每三位数字之间添加…

CSS + HTML

目录 一.CSS&#xff08;层叠样式表&#xff09; 二. CSS 引入方式 三.选择器 3.1 标签选择器 3.2 类选择器 3.3 id选择器 3.4 通配符选择器 3.5 画盒子 四.文字控制属性 4.1字体大小 4.2字体粗细 4.3 字体倾斜 4.4行高 4.5行高--垂直居中 4.6 字体族 4.7 字体复…

使用mmdetection来训练自己的数据集(visdrone)(四)结果分析

测试 python tools/test.py <your-config-file> <your-model-weights-file> --out <save-pickle-path>关于test.py 的命令行 parser.add_argument(--out,typestr,helpdump predictions to a pickle file for offline evaluation)计算量、参数量计算脚本 pyth…

考研数学精选题目016

题目 ∫ x 4 x 6 1 d x \int {{{{x^4}} \over {{x^6} 1}}dx} ∫x61x4​dx 来源 魏姐姐的积木法 思考 在做积分题时&#xff0c;若遇到不会积分的&#xff0c;我们可以考虑先积简单&#xff08;形式和原式一样&#xff09;的积分&#xff1a; ∫ x 6 1 x 6 1 d x x C ( 1 …

【自然语言处理】Word2VecTranE的实现

作业一 Word2Vec&TranE的实现 1 任务目标 1.1 案例简介 Word2Vec是词嵌入的经典模型&#xff0c;它通过词之间的上下文信息来建模词的相似度。TransE是知识表示学习领域的经典模型&#xff0c;它借鉴了Word2Vec的思路&#xff0c;用“头实体关系尾实体”这一简单的训练目…

【Linux】dlopen: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29‘ not found

[30116] Error loading Python lib /tmp/_MEIlvdUu6/libpython3.8.so.1.0: dlopen: /lib/x86_64-linux-gnu/libm.so.6: version GLIBC_2.29 not found (required by /tmp/_MEIlvdUu6/libpython3.8.so.1.0)1 cd到指定路径 cd /usr/local 2 下载 wget http://ftp.gnu.org/gnu/gl…

Ant Design助力:实现用户列表的优雅展示与管理

文章目录 概要前端讲解登录组件注册组件用户列表组件 后端讲解连接数据库db.js路由routes.jsexpress应用app.js 启动项目小结 概要 在上一篇博客&#x1f6aa;中&#xff0c;我们已经成功实现了登录注册系统的基本功能。现在&#xff0c;我们将进一步完善系统&#xff0c;实现…

大型语言模型:奇迹背后的未知哲学,人类智慧的边界探索

大型语言模型可以做出令人瞠目结舌的事情。但没有人确切知道原因。 这是一个问题。弄清楚它是我们这个时代最大的科学难题之一&#xff0c;也是控制更强大的未来模型的关键一步。 多长时间才能学会加法&#xff1f; 两年前&#xff0c;旧金山 OpenAI 公司的研究人员尤里布尔…

ABAP Visual Code 新建sap系统连接

本文主要介绍如何新建SAP前端系统链接 前提是你已经都扩展完了 1.点击SAP fiori--》点击新建 2.选择 abap on premise 3.输入如下信息 4.这里介绍下URL 如何获取 SMICM-->点击service 明细里面可以看到你的host name 和 port 当然你也可以随便找一个你的odata 服务看下ur…

C++之const

const是C中的关键字&#xff0c;又叫常量限定符&#xff0c;作用是告知编译器const修饰的变量是不可修改的。 1、const修饰常量 1.1、修饰常量 #include <iostream> using namespace std;int main(int argc, char argv[]) {// 在修饰常量时&#xff0c;int const和con…

C++奇迹之旅:类和对象const成员static关键字友元内部类

文章目录 &#x1f4dd;const成员&#x1f320; const 成员函数是什么&#xff1f;&#x1f320; 取地址及const取地址操作符重载 &#x1f309;static成员&#x1f320;概念&#x1f320;static特性&#x1f309;static小题 &#x1f320;友元&#x1f309; 友元函数&#x1f…

标准版/开源版 移动端新增页面使用文档

在标准版开发的实际使用中&#xff0c;随着用户移动端的产品和信息内容不断增多&#xff0c;新增页面来展示对应的产品详情、模块等内容。针对一些概念或者步骤较多的内容&#xff0c;可以新增子页面构建多级模块结构&#xff0c;帮助用户快速定位。 下面就如何新增页面做一讲…