问题

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

重点思路

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

实现

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实现爬山算法的思路详解,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

java实现爬山算法_python实现爬山算法的思路详解相关推荐

  1. python实现括号匹配代码_python实现括号匹配的思路详解

    1.用一个栈[python中可以用List]就可以解决,时间和空间复杂度都是O(n) # -*- coding: utf8 -*- # 符号表 SYMBOLS = {'}': '{', ']': '[ ...

  2. java二分查找法_java算法之二分查找法的实例详解

    java算法之二分查找法的实例详解 原理 假定查找范围为一个有序数组(如升序排列),要从中查找某一元素,如果该元素在此数组中,则返回其索引,否则返回-1.通过数组长度可取出中间位置元素的索引,将其值与 ...

  3. JAVA算法:回文字符串相关问题详解(回文字符串总结)

    JAVA算法:回文字符串相关问题详解(回文字符串总结) Q1. 编写一个工具方法判断给定的字符串是否为回文字符串 例如:给定一个字符串"aabbaa",判断该字符串是否为回文字符串 ...

  4. DL之DilatedConvolutions:Dilated Convolutions(膨胀卷积/扩张卷积)算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略

    DL之DilatedConvolutions:Dilated Convolutions(膨胀卷积/扩张卷积)算法的简介(论文介绍).架构详解.案例应用等配图集合之详细攻略 目录 Dilated Con ...

  5. DL之ShuffleNetV2:ShuffleNetV2算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略

    DL之ShuffleNetV2:ShuffleNetV2算法的简介(论文介绍).架构详解.案例应用等配图集合之详细攻略 目录 ShuffleNetV2算法的简介(论文介绍) 1.论文特点 2.基于硬件 ...

  6. DL之ShuffleNet:ShuffleNet算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略

    DL之ShuffleNet:ShuffleNet算法的简介(论文介绍).架构详解.案例应用等配图集合之详细攻略 相关文章 DL之ShuffleNet:ShuffleNet算法的简介(论文介绍).架构详 ...

  7. DL之MobileNetV2:MobileNetV2算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略

    DL之MobileNet V2:MobileNet V2算法的简介(论文介绍).架构详解.案例应用等配图集合之详细攻略 目录 MobileNetV2算法的简介(论文介绍) MobileNet V2算法 ...

  8. DL之MobileNet:MobileNet算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略

    DL之MobileNet:MobileNet算法的简介(论文介绍).架构详解.案例应用等配图集合之详细攻略 目录 MobileNet算法的简介(论文介绍) 1.研究背景 2.传统的模型轻量化常用的方法 ...

  9. DL之SqueezeNet:SqueezeNet算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略

    DL之SqueezeNet:SqueezeNet算法的简介(论文介绍).架构详解.案例应用等配图集合之详细攻略 目录 SqueezeNet算法的简介(论文介绍) 1.轻量级的CNN架构优势 2.主要特 ...

最新文章

  1. 构造方法和方法的重载。
  2. PHP中的常用关键字
  3. Android 更新UI的两种方法——handler和runOnUiThread()
  4. Linux Crontab内环境变量与Shell环境变量的关系及解决问题的办法
  5. 随想录(用好自己的时间)
  6. 数据库索引的使用及优化
  7. 推荐四格漫画:勇者、魔族、龙族
  8. 关于Java的this关键字
  9. bilibili直播: Vue.js Podcast(小记录)~~~
  10. android 音量调节流程分析,Android 4.4 音量调节流程分析(二)
  11. 5款不错的整站下载工具
  12. iOS前后台切换和监听
  13. 云知声打磨四年的AI芯片出炉,中国造芯势力群起
  14. 在Windows 7中使用AppLocker限制对程序的访问
  15. 阻止微信后退,阻止微信页面关闭 history.pushState 无刷新改变页面URL
  16. 苹果开发者账号申请 App IDs(应用身份证)
  17. 【明解C语言】选择语句之switch
  18. 1分钟链圈 | 比特大陆推出挖矿路由器!苏宁正式上线区块链产品“星际家园”...
  19. Linux磁盘分区初始化
  20. Linux软件源更新地址

热门文章

  1. vue项目在IE浏览器和360兼容模式下页面不显示问题,亲测有效
  2. 2022-2027年中国装饰装潢行业发展前景及投资战略咨询报告
  3. 这可能是简易的机器学习入门(小白必读)
  4. 如何制作移动追踪马赛克?
  5. 2020年5月份所有文章汇总
  6. 北上资金 python_你都用 Python 来做什么?
  7. U9Bom阶层展开脚本
  8. 苹果cms模板_苹果cms怎么添加TV电视直播栏目?
  9. AI在蚂蚁金服产品线中的大规模应用
  10. html中表单下拉列表,我们如何使用HTML表单中的简单项目下拉列表?