您的位置:首页 > 脚本大全 > > 正文

python 简单算法(python实现爬山算法的思路详解)

更多 时间:2021-10-19 06:15:01 类别:脚本大全 浏览量:725

python 简单算法

python实现爬山算法的思路详解

问题

python 简单算法(python实现爬山算法的思路详解)

找图中函数在区间[5,8]的最大值 

重点思路

爬山算法会收敛到局部最优,解决办法是初始值在定义域上随机取乱数100次,总不可能100次都那么倒霉。

实现

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • import numpy as np
  • import matplotlib.pyplot as plt
  • import math
  • # 搜索步长
  • delta = 0.01
  • # 定义域x从5到8闭区间
  • bound = [5,8]
  • # 随机取乱数100次
  • generation = 100
  • def f(x):
  •   return math.sin(x*x)+2.0*math.cos(2.0*x)
  • def hillclimbing(x):
  •   while f(x+delta)>f(x) and x+delta<=bound[1] and x+delta>=bound[0]:
  •     x = x+delta
  •   while f(x-delta)>f(x) and x-delta<=bound[1] and x-delta>=bound[0]:
  •     x = x-delta
  •   return x,f(x)
  • def findmax():
  •   highest = [0,-1000]
  •   for i in range(generation):
  •     x = np.random.rand()*(bound[1]-bound[0])+bound[0]
  •     currentvalue = hillclimbing(x)
  •     print('current value is :',currentvalue)
  •     
  •     if currentvalue[1] > highest[1]:
  •       highest[:] = currentvalue
  •   return highest
  • [x,y] = findmax()
  • print('highest point is x :{},y:{}'.format(x,y))
  • 运行结果:

    python 简单算法(python实现爬山算法的思路详解)

    总结

    以上所述是小编给大家介绍的python实现爬山算法的思路详解,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

    原文链接:https://www.jianshu.com/p/70b4c878917e

    标签:Python 算法
    您可能感兴趣