简单实现了GWO灰狼优化算法的Matlab版本和Python版本,程序易读且简洁。
Matlab:
这里可以移步github:https://github.com/ZYunfeii/GreyWolfOptimization-GWO中GWO.mlx文件,因为我是用实时编辑器写的,用matlab打开这个文件可以更好得展示其中的批注。
Python:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
"""
author: Y. F. Zhang
"""import numpy as np
import matplotlib.pyplot as pltclass GWO:def __init__(self):self.wolf_num = 15self.max_iter = 150self.dim = 30self.lb = -30*np.ones((self.dim,))self.ub = 30*np.ones((self.dim,))self.alpha_pos = np.zeros((1,self.dim))self.beta_pos = np.zeros((1, self.dim))self.delta_pos = np.zeros((1, self.dim))self.alpha_score = np.infself.beta_score = np.infself.delta_score = np.infself.convergence_curve = np.zeros((self.max_iter,))self.position = np.zeros((self.wolf_num,self.dim))def run(self):count = 0self.init_pos()while count < self.max_iter:for i in range(self.wolf_num):flag_ub = self.position[i,:] > self.ubflag_lb = self.position[i,:] < self.lbself.position[i,:] = self.position[i,:]*(~(flag_lb+flag_ub))+flag_ub*self.ub+flag_lb*self.lbfitness = self.func(self.position[i,:])if fitness < self.alpha_score:self.alpha_score = fitnessself.alpha_pos = self.position[i,:]elif fitness < self.beta_score:self.beta_score = fitnessself.beta_pos = self.position[i,:]elif fitness < self.delta_score:self.delta_score = fitnessself.delta_pos = self.position[i,:]a = 2 - count*(2/self.max_iter)for i in range(self.wolf_num):for j in range(self.dim):alpha = self.update_pos(self.alpha_pos[j],self.position[i,j],a)beta = self.update_pos(self.beta_pos[j], self.position[i, j], a)delta = self.update_pos(self.delta_pos[j], self.position[i, j], a)self.position[i, j] = sum(np.array([alpha, beta, delta]) * np.array([1/3,1/3,1/3]))count += 1self.convergence_curve[count-1] = self.alpha_scoreself.plot_results()def init_pos(self):for i in range(self.wolf_num):for j in range(self.dim):self.position[i,j] = np.random.rand()*(self.ub[j]-self.lb[j])+self.lb[j]@staticmethoddef update_pos(v1,v2,a):A = 2*np.random.rand()*a-aC = 2*np.random.rand()temp = np.abs(C*v1-v2)return v1 - A*tempdef plot_results(self):plt.style.use('seaborn-darkgrid')plt.plot(range(1,self.max_iter+1),self.convergence_curve,'g.--')plt.xlabel('iteration')plt.ylabel('fitness')plt.title('GWO fitness curve')plt.show()@staticmethoddef func(x):dim, s = 30, 0for i in range(len(x)-1):s += 100*(x[i+1]-x[i]**2)**2+(x[i]-1)**2return sif __name__ == "__main__":gwo = GWO()gwo.run()

优化函数:
f(x)=∑i=1n−1[100(xi+1−xi2)2+(xi−1)2]f(x)=\sum_{i=1}^{n-1}\left[100\left(x_{i+1}-x_{i}^{2}\right)^{2}+\left(x_{i}-1\right)^{2}\right]f(x)=i=1∑n−1​[100(xi+1​−xi2​)2+(xi​−1)2]

  • 维数:30
  • 搜索范围[−30,30][-30,30][−30,30]
  • fmin=0f_{min}=0fmin​=0

结果:

左图是Matlab版本,右图是Python版本,这两份代码均在https://github.com/ZYunfeii/GreyWolfOptimization-GWO。

GWO灰狼优化算法python和matlab代码相关推荐

  1. 【MATLAB教程案例16】基于GWO灰狼优化算法的函数极值计算matlab仿真及其他应用

    FPGA教程目录 MATLAB教程目录 目录 1.软件版本 2.GWO灰狼优化算法的理论知识 2.1包围 2.2追捕 2.3攻击

  2. 果蝇(FOA)优化算法(附完整Matlab代码,可直接复制)

    果蝇优化算法的核心是利用果蝇搜索实物的机制来对问题进行寻优.果蝇根据气味来确定食物的位置,食物腐烂程度越高,气味越大,果蝇对其越敏感.果蝇的觅食行为如下图: Fig1. 果蝇觅食行为示意图 1.果蝇位 ...

  3. MATLAB实战系列(十一)-多种群遗传算法的函数优化算法(附MATLAB代码)

    前言: 本篇博文参考,智能优化算法书籍<MATLAB智能算法30个案例分析(第2版)>,今天要与大家分享的智能算法是多种群遗传算法. 本地MATLAB环境部署 因为后面要介绍的多种群遗传算 ...

  4. GWO灰狼优化算法综述(Grey Wolf Optimization)

    GWO通过模拟灰狼群体捕食行为,基于狼群群体协作的机制来达到优化的目的. GWO算法具有结构简单.需要调节的参数少.容易实现等特点,其中存在能够自适应调整的收敛因子以及信息反馈机制,能够在局部寻优与全 ...

  5. GWO灰狼优化算法以及Matlab代码

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 GWO灰狼算法原理 进化更新 位置更新(紧随3只头狼) GWO灰狼算法流程图 GWO优化算法matlab代码 main函数 ...

  6. 孔雀优化算法(POA)——(含MATLAB代码)

    先要声明的是,这个算法的争议较大,评论是两边倒的,一些学者觉得是一锅乱炖,我个人不发表观点,这里只是把这个算法介绍一下.我不推荐它,也不反对大家去了解,只做单纯的讲解.觉得这个算法不行的就不看吧~ 孔 ...

  7. 浣熊优化算法(COA)(含MATLAB代码)

    先做一个声明:文章是由我的个人公众号中的推送直接复制粘贴而来,因此对智能优化算法感兴趣的朋友,可关注我的个人公众号:启发式算法讨论.我会不定期在公众号里分享不同的智能优化算法,经典的,或者是近几年提出 ...

  8. 压缩感知之常用稀疏恢复算法(凸优化算法)及matlab代码

    文章目录 前言 一.基追踪算法(BP) 1.原理概述 2.matlab代码(基于linprog的基追踪MATLAB代码) 二.梯度投影法 1.原理概述 2.matlab代码 总结 前言   除了贪婪算 ...

  9. 【群智能算法】一种改进的蚁狮优化算法IALO【Matlab代码#5】

    文章目录 [`获取资源`请见文章第5节:资源获取] 1. 原始蚁狮优化算法 1.1 蚂蚁随机游走公式 1.2 设置陷阱 1.3 陷阱诱惑蚂蚁 1.4 捕获猎物并重建洞穴 2. 改进蚁狮优化算法 2.1 ...

最新文章

  1. 《OpenCV3编程入门》学习笔记5 Core组件进阶(四)图像对比度、亮度值调整
  2. 「倒计时」2021年移动云 API 应用创新开发大赛,你居然还没报名?!
  3. 运行程序报“应用程序配置不正确”或者缺少运行库造成程序不可移植的问题...
  4. ClassLoader.getSystemResourceAsStream()
  5. 全球农业南南合作论坛 唐盛尧:对话国际农民丰收节贸易会
  6. matlab光学远轴光的折射,光学课后习题
  7. JAVA多线程之UncaughtExceptionHandler——处理非正常的线程中止
  8. java ajax cookies_HttpOnly cookie如何处理AJAX请求?
  9. Maven--可选依赖
  10. python安装nodejs_linux上nodejs安装
  11. java爬虫框架哪个好_Java爬虫(二)Java爬虫框架
  12. 电子商务公司创业计划书
  13. 一个月空余时间微信诗词小程序前后端开发上线实践指南
  14. win10系统 专业版 安装教程
  15. agd插值算法_插值算法(一):各种插值方法比较
  16. element-ui使用踩坑记录 2022/8/24
  17. Netpod Alive网络拓扑图生成、绘制有生命的网络拓扑图工具
  18. android button设置边框背景颜色
  19. 关于为什么RAID5往往掉一个盘后第二个盘也立刻挂掉的原因分析
  20. Codeforces Round #439 (Div. 2) E. The Untended Antiquity 二维线段树||二维树状数组

热门文章

  1. 智能养老手环能够防止老年人出现安全意外
  2. Bentley 软件公司发起 2021 基础设施数字化光辉大奖赛项目征集活动
  3. HDU5142 NPY and arithmetic progression BestCoder Round #23 1002
  4. 计算机输入法切换用户,电脑的输入法切换不了怎么办,教您如何解决电脑系统输入法...
  5. 拍沪牌服务器响应,上海虹口代拍沪牌费用,百兆光线实时响应
  6. Mac 终端 oh-my-zsh 配置,内含解决oh-my-zsh 下载不下来的方法
  7. java h5 视频播放_selenium(java)处理HTML5的视频播放
  8. 海豚php 授权价格,数据授权(1.3.2+) · DolphinPHP1.5.0完全开发手册-基于ThinkPHP5.1.41LTS的快速开发框架 · 看云...
  9. 泰坦尼克号任务-模型建立和评估
  10. python爬虫 京东关键词搜索商品及具体参数和评论