python遗传算法求函数极值的实现代码

  

废话不多说,大家直接看代码吧!

        ”““遗传算法实现求函数极大值-Zjh“”“   进口numpy np   进口随机   进口matplotlib。pyplot作为plt   类Ga ():   ”“求出二进制编码的长度”“   def __init__(自我):   自我。boundsbegin=2   自我。boundsend=3   精度=0.0001 #运算精确度   自我。Bitlength=int (np.log2(自我。boundsend - self.boundsbegin)/精密))+ 1 # %染色体长度   自我。popsize=50 #初始种群大小   自我。Generationmax=12 #最大进化代数   自我。pcrossover=0.90 #交叉概率   自我。pmutation=0.2 #变异概率   self.population=np.random.randint(0、2、大?(self.popsize self.Bitlength))      ”““计算出适应度”“   def健身(自我、人口):   Fitvalue=https://www.yisu.com/zixun/[]   cumsump=[]   因为我在人口:   x=self.transform2to10 (i) #二进制对应的十进制   xx=自我。boundsbegin + x *(自我。boundsend self.boundsbegin)/(战俘(self.Bitlength) 1)   s=self.targetfun (xx)   Fitvalue.append (s)   fsum=总和(Fitvalue)   everypopulation=[x/fsum Fitvalue)   cumsump.append (everypopulation [0])   everypopulation.remove (everypopulation [0])   在everypopulation j:   p=cumsump [1] + j   cumsump.append (p)   返回Fitvalue cumsump”“选择两个基因,准备交叉”“   def选择(自我,cumsump):   seln=[]   因为我在范围(2):   j=1   r=np.random.uniform (0, 1)   prand=x (x r cumsump)   虽然prand [j] & lt;0:   j=+ 1   seln.append (j)   返回seln   ”““交叉”“”   def交叉(自我,seln, pc):   d=self.population [seln [1]] .copy ()   f=self.population [seln [0]] .copy ()   r=np.random.uniform ()   如果r之前      

一个函数求极值的仿真的作业,参考了别人的matlab代码,用python复现了一遍,加深印象!

  

以上这篇python遗传算法求函数极值的实现代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

python遗传算法求函数极值的实现代码