找图中函数在区间(5、8)的最大值,
爬山算法会收敛到局部最优,解决办法是初始值在定义域上随机取乱数100次,总不可能100次都那么倒霉。
实现
进口numpy np 进口matplotlib。pyplot作为plt 导入数学 #搜索步长 δ=0.01 #定义域x从5到8闭区间 绑定=(5、8) #随机取乱数100次 一代=100 def F (x): 返回sin (x *) + 2.0 * math.cos (2.0 * *) def hillClimbing (x): 当F (x +δ)在F (x)和x + DELTA<绑定[1]=x + DELTA>=绑定[0]: x=x +δ 当F (x-DELTA)在F (x)和x-DELTA<=绑定[1]和x-DELTA>=绑定[0]: x=x-DELTA 返回x, F (x) def findMax (): 最高=[0,-1000) 我的范围(代): x=np.random.rand() *(绑定[1]绑定[0])+绑定[0] currentValue=https://www.yisu.com/zixun/hillClimbing (x) 打印(当前值是:,currentValue) 如果currentValue[1]比;最高[1]: [:]=currentValue最高 回报最高的 (x, y)=findMax () 打印(' y,最高点是x: {}: {}“.format (x, y))
运行结果:
以上所述是小编给大家介绍的python实现爬山算法的思路详解,希望对大家有所帮助,如果大家有任何疑问欢迎给我留的言,小编会及时回复大家的!