当前位置: 首页 > news >正文

贵州企业品牌网站建设企业网盘系统

贵州企业品牌网站建设,企业网盘系统,广州市律师网站建设怎么样,wordpress 微站目录 一、灰狼优化算法的python实现 二、灰狼优化算法与遗传算法的对比分析#xff08;python#xff09; 2.1 GWO1.py 2.2 GA1.py 2.3 GWO_vs_GA.py 2.4 运行结果 ​三、基于莱维飞行改进的灰狼优化算法的python实现 一、灰狼优化算法的python实现 import numpy as …目录 一、灰狼优化算法的python实现  二、灰狼优化算法与遗传算法的对比分析python 2.1 GWO1.py 2.2 GA1.py 2.3 GWO_vs_GA.py 2.4 运行结果 ​三、基于莱维飞行改进的灰狼优化算法的python实现 一、灰狼优化算法的python实现  import numpy as np import matplotlib.pyplot as plt plt.rcParams[font.sans-serif][SimHei] plt.rcParams[axes.unicode_minus]False定义函数 def function(X0)::param X0: x的取值:param dim: 维度:return: 函数值s0s1/(1np.abs(X0[0])np.abs(X0[1])np.abs(X0[2])np.abs(X0[3]))return s灰狼优化算法——GWO def GWO(NP,dim,NG,amax,x_max,x_min)::param NP:种群规模:param dim: 数据维度:param NG: 最大迭代步数:param amax: 系数向量初始值:param x_max: 解允许的最大值:param x_min: 解允许的最小值:return: 最优解的目标函数值随机产生初始解X0np.zeros((NP,dim))value0[] #函数值for i in range(NP):X0[i]np.random.uniform(lowx_min,highx_max,size(1, dim))value0.append(function(X0[i]))存储历史最优解和历史最优函数值X_best[] #历史最优解value_best[] #历史最优函数值对初始解的目标函数值进行降序排序并一一对应得到相应的解#得到对目标函数值列表value0升序排列后的索引index_sortnp.argsort(np.array(value0))#对value0进行降序排列value0_sort[value0[i] for i in index_sort[::-1]]#对X0进行相应的排列X0_sort[X0[i] for i in index_sort[::-1]]得到初始解的最优解和最优函数值X_best.append(X0_sort[0])value_best.append(value0_sort[0])print(--------------------灰狼优化算法--------------------)print(初始最优解\n{}.format(X_best[0].tolist()))print(初始最优函数值\n{}.format(value_best[0]))选出最优的三个个体并获得它们的位置信息XalphaX0_sort[0]XbetaX0_sort[1]XdeltaX0_sort[2]开始利用灰狼优化算法进行训练for i in range(NG):计算系数向量的参数aratioi/NGaamax*(1-ratio)对每个个体的位置进行更新for j in range(NP):分别计算在函数值最优的前三个个体的影响下个体的位置移动量X1、X2、X3C12*np.random.rand()Dalphanp.abs(C1*Xalpha-X0[j])A12*a*np.random.rand()-aX1Xalpha-A1*DalphaC22*np.random.rand()Dbetanp.abs(C2*Xbeta-X0[j])A22*a*np.random.rand()-aX2Xbeta-A2*DbetaC32*np.random.rand()Ddeltanp.abs(C3*Xdelta-X0[j])A32*a*np.random.rand()-aX3Xdelta-A3*Ddelta计算个体移动后的位置及函数值X0[j](X1X2X3)/3value0[j]function(X0[j])对种群历史最优解和历史最优函数值进行更新if max(value0)max(value_best):value_best.append(max(value0))X_best.append(X0[value0.index(max(value0))])else:value_best.append(value_best[-1])X_best.append(X_best[-1])对初始解的目标函数值进行降序排序并一一对应得到相应的解#得到对目标函数值列表value0升序排列后的索引index_sortnp.argsort(np.array(value0))#对X0进行相应的降序排列X0_sort[X0[i] for i in index_sort[::-1]]选出最优的三个个体并获得它们的位置信息XalphaX0_sort[0]XbetaX0_sort[1]XdeltaX0_sort[2]返回最优解和最优函数值return X_best,value_best 二、灰狼优化算法与遗传算法的对比分析python 2.1 GWO1.py import numpy as np import matplotlib.pyplot as plt plt.rcParams[font.sans-serif][SimHei] plt.rcParams[axes.unicode_minus]False定义函数 def function(X0)::param X0: x的取值:param dim: 维度:return: 函数值s0s1/(1np.abs(X0[0])np.abs(X0[1])np.abs(X0[2])np.abs(X0[3]))return s灰狼优化算法——GWO def GWO(NP,dim,NG,amax,x_max,x_min)::param NP:种群规模:param dim: 数据维度:param NG: 最大迭代步数:param amax: 系数向量初始值:param x_max: 解允许的最大值:param x_min: 解允许的最小值:return: 最优解的目标函数值随机产生初始解X0np.zeros((NP,dim))value0[] #函数值for i in range(NP):X0[i]np.random.uniform(lowx_min,highx_max,size(1, dim))value0.append(function(X0[i]))存储历史最优解和历史最优函数值X_best[] #历史最优解value_best[] #历史最优函数值对初始解的目标函数值进行降序排序并一一对应得到相应的解#得到对目标函数值列表value0升序排列后的索引index_sortnp.argsort(np.array(value0))#对value0进行降序排列value0_sort[value0[i] for i in index_sort[::-1]]#对X0进行相应的排列X0_sort[X0[i] for i in index_sort[::-1]]得到初始解的最优解和最优函数值X_best.append(X0_sort[0])value_best.append(value0_sort[0])print(--------------------灰狼优化算法--------------------)print(初始最优解\n{}.format(X_best[0].tolist()))print(初始最优函数值\n{}.format(value_best[0]))选出最优的三个个体并获得它们的位置信息XalphaX0_sort[0]XbetaX0_sort[1]XdeltaX0_sort[2]开始利用灰狼优化算法进行训练for i in range(NG):计算系数向量的参数aratioi/NGaamax*(1-ratio)对每个个体的位置进行更新for j in range(NP):分别计算在函数值最优的前三个个体的影响下个体的位置移动量X1、X2、X3C12*np.random.rand()Dalphanp.abs(C1*Xalpha-X0[j])A12*a*np.random.rand()-aX1Xalpha-A1*DalphaC22*np.random.rand()Dbetanp.abs(C2*Xbeta-X0[j])A22*a*np.random.rand()-aX2Xbeta-A2*DbetaC32*np.random.rand()Ddeltanp.abs(C3*Xdelta-X0[j])A32*a*np.random.rand()-aX3Xdelta-A3*Ddelta计算个体移动后的位置及函数值X0[j](X1X2X3)/3value0[j]function(X0[j])对种群历史最优解和历史最优函数值进行更新if max(value0)max(value_best):value_best.append(max(value0))X_best.append(X0[value0.index(max(value0))])else:value_best.append(value_best[-1])X_best.append(X_best[-1])对初始解的目标函数值进行降序排序并一一对应得到相应的解#得到对目标函数值列表value0升序排列后的索引index_sortnp.argsort(np.array(value0))#对X0进行相应的降序排列X0_sort[X0[i] for i in index_sort[::-1]]选出最优的三个个体并获得它们的位置信息XalphaX0_sort[0]XbetaX0_sort[1]XdeltaX0_sort[2]返回最优解和最优函数值return X_best,value_best2.2 GA1.py import random import math import matplotlib.pyplot as plt plt.rcParams[font.sans-serif][SimHei] plt.rcParams[axes.unicode_minus]False产生初始种群 def initialpopulation(NP,n,x0,x1):NP代表种群规模n代表目标函数的未知量的个数;x0代表未知数取值的下限x1代表未知数取值的上限initial[]for i in range(NP):n_initial[random.uniform(x0,x1) for j in range(n)]initial.append(n_initial)return initial标定适值函数 def fitnessfunction(X):X代表存储各个未知量的取值的列表return 1/(math.sqrt(X[0]**2)math.sqrt(X[1]**2)math.sqrt(X[2]**2)math.sqrt(X[3]**2)1)采用轮盘赌选择算法选择个体 def selection(NP,X0):NP代表种群规模X0代表种群#计算种群中各个个体的适应值value[]for i in range(NP):value.append(fitnessfunction(X0[i]))计算适应度和累计概率函数#计算选择概率fsum0for i in range(NP):fsumfsumvalue[i]**2value_ratio[]for i in range(NP):value_ratio.append((value[i]**2)/fsum)#计算累加概率value_ratio_add[]for i in range(NP):if i0:value_ratio_add.append(value_ratio[i])else:value_ratio_add.append(value_ratio_add[i-1]value_ratio[i])#产生[0,1]之间的随机数进行NP次轮转random_ratio[random.uniform(0,1) for i in range(NP)]#进行轮盘赌选择choose_index[] #从0开始计value_ratio_add0[0,*value_ratio_add] #在列表value_ratio_add的最前面加上一个0for i in range(NP):for j in range(NP):if random_ratio[i]value_ratio_add0[j] and random_ratio[i]value_ratio_add0[j1]:choose_index.append(j)break#得到经过轮盘赌选择算法后的种群population[X0[i] for i in choose_index]return population遗传运算——双切点交叉 def crossover1(X0,pc,NP,n):X0代表种群,pc代表交叉概率,NP代表种群规模,n代表染色体上的基因数目# 对每个染色体生成一个[0,1]之间的随机数random_crossover[random.uniform(0, 1) for i in range(NP)]# 判断哪些染色体进行交叉运算crossover_index[] # 种群中进行交叉运算的染色体的索引值for i in range(NP):if random_crossover[i]pc:crossover_index.append(i)# 判断初步确定的需要交叉的染色体个数如果为奇数则最后一个染色体不进行交叉运算if (len(crossover_index)%2)!0:crossover_index.pop()crossover_indexcrossover_index#进行双切点交叉if len(crossover_index)!0:randint_index[sorted(random.sample([i for i in range(0,n-1)],2)) for i in range(int(len(crossover_index)/2))]for i in range(0,len(crossover_index),2):crossover1X0[crossover_index[i]]crossover2X0[crossover_index[i1]]crossoverindexrandint_index[int(i/2)]#分割crossover1_1[crossover1[j] for j in range(crossoverindex[0]1)]crossover1_2[crossover1[j] for j in range(crossoverindex[0]1,crossoverindex[1]1)]crossover1_3[crossover1[j] for j in range(crossoverindex[1]1,n)]crossover2_1[crossover2[j] for j in range(crossoverindex[0]1)]crossover2_2[crossover2[j] for j in range(crossoverindex[0]1,crossoverindex[1]1)]crossover2_3[crossover2[j] for j in range(crossoverindex[1]1,n)]#交换X0[crossover_index[i]][*crossover1_1,*crossover2_2,*crossover1_3]X0[crossover_index[i1]][*crossover2_1,*crossover1_2,*crossover2_3]#返回进行双切点交叉后的种群return X0进行遗传运算——变异 def mutation(X0,pm,NP,n,x0,x1):X0代表种群,pm代表交叉概率,NP代表种群规模,n代表染色体上的基因数目x0代表未知数取值的下限x1代表未知数取值的上限#生成在[0,1]上的随机数列表random_gene[[random.uniform(0,1) for i in range(n)] for j in range(NP)]#进行变异运算for i in range(NP):for j in range(n):if random_gene[i][j]pm:X0[i][j]random.uniform(x0,x1)#返回经过变异操作后的种群return X0计算种群中所有个体的适应值并返回最大值 def fitnessmax(X0,NP):X0代表种群NP代表种群规模#计算种群中各个个体的适应值value[]for i in range(NP):value.append(fitnessfunction(X0[i]))value_maxmax(value)#适应值最大所对应的索引值index_maxvalue.index(max(value))#适应值最大所对应的染色体X0_maxX0[index_max]return value_max,X0_max使用双切点交叉的遗传算法 def GA1(NP,NG,n,x0,x1,pc,pm):NP代表种群规模NG代表最大代数n代表一个染色体的基因数x0代表未知数取值的下限x1代表未知数取值的上限pc代表交叉概率pm代表变异概率#遗传算法——单切点交叉#print(----------------------------------------------------------遗传算法(双切点交叉)----------------------------------------------------------)#产生初始种群X0initialpopulation(NP,n,x0,x1)得到种群的最大适应值和对应的染色体value_max, valueX0_max fitnessmax(X0, NP)print(--------------------遗传算法--------------------)print(初始最优解\n{}.format(valueX0_max))print(初始最优函数值\n{}.format(value_max))#存储最大适应值和对应的函数值的列表fitnessmax_list[]X0max_list[]#历史最大适应值history_max0history[]history_X0[]for i in range(NG):得到种群的最大适应值和对应的染色体value_max,valueX0_maxfitnessmax(X0,NP)fitnessmax_list.append(value_max)X0max_list.append(valueX0_max)if i0:history_maxvalue_maxhistory.append(history_max)history_X0.append(valueX0_max)else:if value_maxhistory_max:history_maxvalue_maxhistory.append(history_max)history_X0.append(valueX0_max)else:history.append(history_max)history_X0.append(history_X0[i-1])#print(第{}代{} value_max{}.format(i 1, history_X0[i], history[i]))选择X1selection(NP,X0)双切点交叉运算X2crossover1(X1,pc,NP,4)变异运算X3mutation(X2,pm,NP,4,-10,10)X0X3print(最优解Best{}.format(history[-1]))#print(---------------------------------------------------------------进程结束---------------------------------------------------------------)返回历代的最优函数值和最优解return history,history_X0 2.3 GWO_vs_GA.py import GWO1 import GA1 import matplotlib.pyplot as plt plt.rcParams[font.sans-serif][SimHei] plt.rcParams[axes.unicode_minus]Falseif __name____main__:得到遗传算法求解结果#最大迭代步数NG1000#种群规模NP100#交叉率pc0.9#变异率pm0.1#染色体基因数n4#未知数的下限x0-10#未知数的上限x110#进行双切点交叉的遗传运算historymax,historymaxX0GA1.GA1(NP,NG,n,x0,x1,pc,pm)print(最优解\n{}.format(historymaxX0[-1]))print(最优函数值\n{}.format(historymax[-1]))得到灰狼优化算法的求解结果#最大迭代步数NG1000#种群规模NP100#数据维度dim4#x允许的最大值和最小值x_max10x_min-10#系数向量初始值amax2灰狼优化算法X_best,value_bestGWO1.GWO(NP,dim,NG-1,amax,x_max,x_min)print(最优解\n{}.format(X_best[-1]))print(最优函数值\n{}.format(value_best[-1]))绘制遗传算法和灰狼优化算法的优化过程plt.plot([int(i) for i in range(NG)],historymax,labelGA)plt.plot([int(i) for i in range(NG)],value_best,labelGWO,cred)plt.title(遗传算法GA和灰狼优化算法GWO的优化过程)plt.xlabel(代数)plt.ylabel(函数值)plt.grid()plt.legend()plt.show()2.4 运行结果 三、基于莱维飞行改进的灰狼优化算法的python实现 import numpy as np import math import matplotlib.pyplot as plt plt.rcParams[font.sans-serif][SimHei] plt.rcParams[axes.unicode_minus]False定义函数并求解函数值 def function(X0)::param X0:解向量:return: 函数值s10for i in range(len(X0)):s1s1(X0[i])**2s20for i in range(len(X0)):s2s2np.cos(2*(np.pi)*X0[i])s-20*np.exp(-0.2*(np.sqrt((1/len(X0))*s1)))-np.exp((1/len(X0))*s2)20np.ereturn s嵌入莱维飞行的灰狼优化算法 def LGWO(NP,dim,NG,amax,x_max,x_min)::param NP:种群规模:param dim: 数据维度:param NG: 最大迭代步数:param amax: 系数向量初始值:param x_max: 解允许的最大值:param x_min: 解允许的最小值:return: 最优解和最优解的目标函数值随机产生初始解X0np.zeros((NP,dim))value0[] #函数值for i in range(NP):X0[i]np.random.uniform(lowx_min,highx_max,size(1, dim))value0.append(function(X0[i]))存储历史最优解和历史最优函数值X_best[] #历史最优解value_best[] #历史最优函数值对初始解的目标函数值进行升序排序并一一对应得到相应的解#得到对目标函数值列表value0升序排列后的索引index_sortnp.argsort(np.array(value0))#对value0进行升序排列value0_sort[value0[i] for i in index_sort]#对X0进行相应的排列X0_sort[X0[i] for i in index_sort]得到初始解的最优解和最优函数值X_best.append(X0_sort[0])value_best.append(value0_sort[0])print(初始最优解\n{}.format(X_best[0].tolist()))print(初始最优函数值\n{}.format(value_best[0]))选出最优的两个个体并获得它们的位置信息XalphaX0_sort[0]Xalpha_scorevalue0_sort[0]XbetaX0_sort[1]Xbeta_scorevalue0_sort[1]进行嵌入莱维飞行的灰狼优化算法for i in range(NG):计算系数向量的参数aratioi/NGaamax*(1-ratio)for j in range(NP):边界处理for k in range(dim):if X0[j][k]x_max:X0[j][k]x_maxif X0[j][k]x_min:X0[j][k]x_min计算函数值valuefunction(X0[j])更新Alpha,Betaif valueXalpha_score:Xalpha_scorevalueXalphaX0[j]elif valueXbeta_score:Xbeta_scorevalueXbetaX0[j]更新所有个体XbestX0[0]valuebestfunction(X0[0])for j in range(NP):for k in range(dim):r1np.random.rand()r2np.random.rand()A12*a*r1-aC12*r2D_alphanp.abs(C1*Xalpha[k]-X0[j][k])r1np.random.rand()r2np.random.rand()A22*a*r1-aC22*r2D_betanp.abs(C2*Xbeta[k]-X0[j][k])X0_oldX0[j]Anp.random.rand()if np.abs(A)0.5:X0[j][k]0.5*(Xalpha[k]-A1*D_alphaXbeta[k]-A2*D_beta)else:beta1.5 #beta一般取1.5sigma_u((math.gamma(1beta)*math.sin(np.pi*beta/2))/(math.gamma((1beta)/2)*beta*2**(0.5*(beta-1))))**(1/beta)unp.random.normal(0,sigma_u)vnp.random.normal(0,1)alpha_levi(0.01*u*(X0[j][k]-Xalpha[k]))/(np.abs(v)**(-beta))X0[j][k]0.5*(Xalpha[k]-A1*D_alphaXbeta[k]-A2*D_alpha)alpha_levi贪婪选择算法rnewnp.random.rand()pnp.random.rand()if function(X0[j])function(X0_old) and rnewp:X0[j]X0_old计算函数值value1function(X0[j])更新历史最优解和历史最优函数值if value1valuebest:valuebestvalue1XbestX0[j]if valuebestvalue_best[-1]:value_best.append(valuebest)X_best.append(Xbest)else:value_best.append(value_best[-1])X_best.append(X_best[-1])绘制优化过程plt.plot([int(i) for i in range(NG1)],value_best)plt.title(嵌入莱维飞行的灰狼优化算法LGWO的优化过程)plt.xlabel(代数)plt.ylabel(函数值)plt.grid()plt.show()return X_best[-1],value_best[-1]主函数 if __name____main__:最大迭代步数NG500种群规模NP30数据维度dim30x允许的最大值和最小值x_max32x_min-32系数向量初始值amax2嵌入莱维飞行的灰狼优化算法X_best,value_bestLGWO(NP,dim,NG,amax,x_max,x_min)print(最优解\n{}.format(X_best))print(最优函数值\n{}.format(value_best))
http://www.tj-hxxt.cn/news/142262.html

相关文章:

  • 长清做网站莱芜警方网站官网
  • 企业网站建设推广实训报告免费网站后台模版
  • 网站建设依据郑州网络推广哪家厉害
  • php建站上海网站建设那家好
  • cpa怎么做网站购物网站建设策划报告
  • 微信公众号和网站建设方案网站链接怎么做二维码
  • 东莞网站制作功能WordPress创建页面左侧导航
  • 没有营业执照 怎么做网站做网站一班需要多少钱
  • 网站建设好评语wordpress直播功能插件
  • 哈尔滨企业网站模板建站手机端网页制作公司
  • 做普通网站价格wordpress用户角色
  • 郑州定制网站推广工具产品有几个网站如何做外贸
  • 网站安全检测发生告警后网页界面设计艺术教程
  • 小说类网站程序驻马店阿里巴巴做网站
  • 网站教程王烨晨
  • 网站怎么做域名解析小程序制作方案
  • 网站空间自己做石家庄网站建设策略
  • 网站首页模板怎么做策划网站建设七大步骤
  • 网站建站商务平台外贸都有哪些平台
  • 订阅号上链接的网站怎么做的有个印度做网站的天天找我
  • 温州专业手机网站制作哪家好贵州省交通工程建设质监局网站
  • 备案信息如何上传的网站上网络seo培训
  • 做网站如何下载别人网站图片上海建设工程信息网站
  • 桂林象鼻山离哪个高铁站近三明住房和城乡建设部网站
  • 游戏 网站模板手机创建个人网站 免费
  • 哪一家网站做简历软件设计工具有哪些
  • 佛山网站建设服务商网站建设实践报告
  • 建设项目咨询公司网站手机做简单的网站
  • 做网站的公司跑了wordpress添加背景音乐
  • 阿里云备案增加网站兼职游戏网站怎么做