1. 步骤

Step1:种群初始化:包括种群数量N,最大迭代次数Maxlter,调控参数a,A,C.Step2:根据变量的上下界来随机初始化灰狼个体的位置X。
Step3:计算每一头狼的适应度值,并将种群中适应度值最优的狼的位置信息保存α,将种群中适应度值次优的狼的位置信息保存为β,将种群中适应度第三优的灰狼的位置信息保存为δ。
Step4:更新灰狼个体X的位置。
step5:更新参数a,A和C。
Step6:计算每一头灰狼的适应度值,并更新三匹头狼的最优位置。
Step7:判断是否到达最大迭代次数Maxlter,若满足则算法停止并返回Xa的值作为最终得到的最优解,否则转到Step4

2. 流程图

3. python实现

#=======导入库======
import random
import numpyimport matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号
def GWO(objf, lb, ub, dim, SearchAgents_no, Max_iter):#===初始化 alpha, beta, and delta_pos=======Alpha_pos = numpy.zeros(dim)  # 位置.形成30的列表Alpha_score = float("inf")  # 这个是表示“正负无穷”,所有数都比 +inf 小;正无穷:float("inf"); 负无穷:float("-inf")Beta_pos = numpy.zeros(dim)Beta_score = float("inf")Delta_pos = numpy.zeros(dim)Delta_score = float("inf")  # float() 函数用于将整数和字符串转换成浮点数。#====list列表类型=============if not isinstance(lb, list):  # 作用:来判断一个对象是否是一个已知的类型。其第一个参数(object)为对象,第二个参数(type)为类型名,若对象的类型与参数二的类型相同则返回Truelb = [lb] * dim  # 生成[100,100,.....100]30个if not isinstance(ub, list):ub = [ub] * dim#========初始化所有狼的位置===================Positions = numpy.zeros((SearchAgents_no, dim))for i in range(dim):  # 形成5*30个数[-100,100)以内Positions[:, i] = numpy.random.uniform(0, 1, SearchAgents_no) * (ub[i] - lb[i]) + lb[i]  # 形成[5个0-1的数]*100-(-100)-100Convergence_curve = numpy.zeros(Max_iter)#========迭代寻优=====================for l in range(0, Max_iter):  # 迭代1000for i in range(0, SearchAgents_no):  # 5#====返回超出搜索空间边界的搜索代理====for j in range(dim):  # 30Positions[i, j] = numpy.clip(Positions[i, j], lb[j], ub[j])  # clip这个函数将将数组中的元素限制在a_min(-100), a_max(100)之间,大于a_max的就使得它等于 a_max,小于a_min,的就使得它等于a_min。#===计算每个搜索代理的目标函数==========fitness = objf(Positions[i, :])  # 把某行数据带入函数计算# print("经过计算得到:",fitness)#====更新 Alpha, Beta, and Delta================if fitness < Alpha_score:Alpha_score = fitness  # Update alphaAlpha_pos = Positions[i, :].copy()if (fitness > Alpha_score and fitness < Beta_score):Beta_score = fitness  # Update betaBeta_pos = Positions[i, :].copy()if (fitness > Alpha_score and fitness > Beta_score and fitness < Delta_score):Delta_score = fitness  # Update deltaDelta_pos = Positions[i, :].copy()#===========以上的循环里,Alpha、Beta、Delta===========a = 2 - l * ((2) / Max_iter);  #   a从2线性减少到0for i in range(0, SearchAgents_no):for j in range(0, dim):r1 = random.random()  # r1 is a random number in [0,1]主要生成一个0-1的随机浮点数。r2 = random.random()  # r2 is a random number in [0,1]A1 = 2 * a * r1 - a;  # Equation (3.3)C1 = 2 * r2;  # Equation (3.4)# D_alpha表示候选狼与Alpha狼的距离D_alpha = abs(C1 * Alpha_pos[j] - Positions[i, j]);  # abs() 函数返回数字的绝对值。Alpha_pos[j]表示Alpha位置,Positions[i,j])候选灰狼所在位置X1 = Alpha_pos[j] - A1 * D_alpha;  # X1表示根据alpha得出的下一代灰狼位置向量r1 = random.random()r2 = random.random()A2 = 2 * a * r1 - a;  #C2 = 2 * r2;D_beta = abs(C2 * Beta_pos[j] - Positions[i, j]);X2 = Beta_pos[j] - A2 * D_beta;r1 = random.random()r2 = random.random()A3 = 2 * a * r1 - a;C3 = 2 * r2;D_delta = abs(C3 * Delta_pos[j] - Positions[i, j]);X3 = Delta_pos[j] - A3 * D_delta;Positions[i, j] = (X1 + X2 + X3) / 3  # 候选狼的位置更新为根据Alpha、Beta、Delta得出的下一代灰狼地址。Convergence_curve[l] = Alpha_score;if (l % 1 == 0):print(['迭代次数为' + str(l) + ' 的迭代结果' + str(Alpha_score)]);  # 每一次的迭代结果# 绘图plt.plot(Convergence_curve)plt.title('Convergence_curve')plt.show()print("The best solution obtained by GWO is : "+ str(Alpha_pos))print("The best optimal value of the objective funciton found by GWO is : "+ str(Alpha_score))
#========函数==========
def F1(x):s=numpy.sum(x**2) return s
#===========主程序================
func_details = ['F1', -100, 100, 30]
function_name = func_details[0]
Max_iter = 1000#迭代次数
lb = -100 #下界
ub = 100 #上届
dim = 30 #狼的寻值范围
SearchAgents_no = 5 #寻值的狼的数量
# print(F1)
x = GWO(F1, lb, ub, dim, SearchAgents_no, Max_iter)

执行结果

灰狼优化算法——python实现相关推荐

  1. GWO灰狼优化算法python和matlab代码

    简单实现了GWO灰狼优化算法的Matlab版本和Python版本,程序易读且简洁. Matlab: 这里可以移步github:https://github.com/ZYunfeii/GreyWolfO ...

  2. 灰狼优化算法GWO的理论知识以及python代码实现

    灰狼优化算法GWO的理论知识以及python代码实现 GWO 算法的等级结构 GWO 算法的数学模型 灰狼算法的python实现 寻优结果 下载链接 GWO 算法的等级结构 灰狼优化算法是模拟食物链顶 ...

  3. Python实现GWO智能灰狼优化算法优化支持向量机分类模型(SVC算法)项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 灰狼优化算法(GWO),由澳大利亚格里菲斯大学学者 Mirjal ...

  4. Python实现GWO智能灰狼优化算法优化支持向量机回归模型(svr算法)项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 灰狼优化算法(GWO),由澳大利亚格里菲斯大学学者 Mirjal ...

  5. 智能优化算法之灰狼优化算法(GWO)的实现(Python附源码)

    文章目录 一.灰狼优化算法的实现思路 1.社会等级结构分级 2.包围猎物 3.攻击猎物 4.搜索猎物 二.算法步骤 三.实例 一.灰狼优化算法的实现思路 灰狼优化算法(Grey Wolf Optimi ...

  6. Python实现GWO智能灰狼优化算法优化随机森林分类模型(RandomForestClassifier算法)项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 灰狼优化算法(GWO),由澳大利亚格里菲斯大学学者 Mirjal ...

  7. Python实现GWO智能灰狼优化算法优化卷积神经网络分类模型(CNN分类算法)项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 灰狼优化算法(GWO),由澳大利亚格里菲斯大学学者 Mirjal ...

  8. 基于 Iterative 映射和单纯形法的改进灰狼优化算法-附代码

    基于 Iterative 映射和单纯形法的改进灰狼优化算法 文章目录 基于 Iterative 映射和单纯形法的改进灰狼优化算法 1.灰狼优化算法 2. 改进灰狼优化算法(SMIGWO) 2.1 混沌 ...

  9. 基于透镜成像学习策略的灰狼优化算法-附代码

    基于透镜成像学习策略的灰狼优化算法 文章目录 基于透镜成像学习策略的灰狼优化算法 1.灰狼优化算法 2.基于透镜成像学习的 GWO 算法 2.1修改控制参数*C*策略 2.2 透镜成像反向学习策略 3 ...

最新文章

  1. 前端的单页面模式和多页面模式
  2. jhipster创建项目问答汇总_[恭喜JHipster社区喜提 VueJS !]
  3. python的基本语句_Python的基本语句
  4. 042_Popconfirm气泡确认框
  5. 北大OJ百练——4075:矩阵旋转(C语言)
  6. UA池和IP代理池使用
  7. 如何去掉jQWidgets中TreeGrid和Grid右下角的链接
  8. GitHub Research:超过50%的Java记录语句写错了
  9. java编程石头剪刀布_java 开发的石头,剪刀,布的游戏 demo
  10. spark 读取多个路径_spark
  11. 2021-09-08 全排列
  12. [开源软件]数值计算软件OCTAVE 、SCILAB与R简介
  13. 截图软件 : Snipaste
  14. UVA: 1589 Xiangqi
  15. 批量cherry-pick
  16. 大数据技术之数据质量管理
  17. android开发实例之minitwitter登录界面+代码,登录界面_记住密码
  18. 我的一周re学习总结
  19. python直接下载图片到内存
  20. 读《Python Algorithms: Mastering Basic Algorithms in the Python Language》

热门文章

  1. 第七章 :Hadoop+Zookeeper 3节点高可用集群搭建和原理解释
  2. oracle 9i hwm,Oracle 之HWM
  3. Mysql完整性约束详解(字段唯一,非空,主键primary key,外键foreign key,自增长auto_increment)
  4. 【目标检测】36、OTA: Optimal Transport Assignment for Object Detection
  5. select的onChange事件问题解决
  6. C语言共用体(C语言union用法)详解
  7. 从管理者转变成领导者,到底需要什么样的特质?
  8. 云计算(Gitlab+jenkins+maven)
  9. 江苏省工业互联网标识创新应用案例集
  10. WPF TabControl的好看样式