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


Posted in Python onApril 09, 2019

问题

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

找图中函数在区间[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实现爬山算法的思路详解

总结

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

Python 相关文章推荐
python模块之StringIO使用示例
Apr 08 Python
在Python中使用SQLite的简单教程
Apr 29 Python
python统计日志ip访问数的方法
Jul 06 Python
Python的socket模块源码中的一些实现要点分析
Jun 06 Python
在pandas多重索引multiIndex中选定指定索引的行方法
Nov 16 Python
python性能测量工具cProfile使用解析
Sep 26 Python
python numpy之np.random的随机数函数使用介绍
Oct 06 Python
python+selenium+chrome批量文件下载并自动创建文件夹实例
Apr 27 Python
一文详述 Python 中的 property 语法
Sep 01 Python
Python Opencv实现单目标检测的示例代码
Sep 08 Python
pycharm 复制代码出现空格的解决方式
Jan 15 Python
python中requests库+xpath+lxml简单使用
Apr 29 Python
Python使用Pickle模块进行数据保存和读取的讲解
Apr 09 #Python
Python爬取数据保存为Json格式的代码示例
Apr 09 #Python
python实现QQ空间自动点赞功能
Apr 09 #Python
Python实现的多进程拷贝文件并显示百分比功能示例
Apr 09 #Python
Python使用crontab模块设置和清除定时任务操作详解
Apr 09 #Python
Python实现的读取文件内容并写入其他文件操作示例
Apr 09 #Python
Python实现根据日期获取当天凌晨时间戳的方法示例
Apr 09 #Python
You might like
php常量详细解析
2015/10/27 PHP
thinkphp微信开发(消息加密解密)
2015/12/02 PHP
PHP Smarty模版简单使用方法
2016/03/30 PHP
PHP封装的page分页类定义与用法完整示例
2018/12/24 PHP
onsubmit阻止form表单提交与onclick的相关操作
2010/09/03 Javascript
读jQuery之十 事件模块概述
2011/06/27 Javascript
单击和双击事件的冲突处理示例代码
2014/04/03 Javascript
jquery实现的网页自动播放声音
2014/04/30 Javascript
JS实现鼠标经过好友列表中的好友头像时显示资料卡的效果
2014/07/02 Javascript
jquery text()方法取标签中的文本
2014/07/25 Javascript
浅谈JavaScript function函数种类
2014/12/29 Javascript
JavaScript计算两个日期时间段内日期的方法
2015/03/16 Javascript
jquery 重写 ajax提交并判断权限后 使用load方法报错解决方法
2016/01/19 Javascript
分分钟玩转Vue.js组件
2016/10/25 Javascript
js提示框替代系统alert,自动关闭alert对话框的实现方法
2016/11/07 Javascript
简单实现js选项卡切换效果
2017/02/09 Javascript
JS实现select选中option触发事件操作示例
2018/07/13 Javascript
封装微信小程序http拦截器过程解析
2019/08/13 Javascript
原生js实现点击轮播切换图片
2020/02/11 Javascript
nuxt.js添加环境变量,区分项目打包环境操作
2020/11/06 Javascript
如何使用 vue-cli 创建模板项目
2020/11/19 Vue.js
[04:55]完美世界副总裁蔡玮:DOTA2的自由、公平与信任
2013/12/18 DOTA
[07:38]2014DOTA2国际邀请赛 Newbee顺利挺进胜者组赛后专访
2014/07/15 DOTA
[47:02]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS paiN
2018/03/30 DOTA
python多线程编程中的join函数使用心得
2014/09/02 Python
浅谈python累加求和+奇偶数求和_break_continue
2020/02/25 Python
python如何进行矩阵运算
2020/06/05 Python
理解Django 中Call Stack机制的小Demo
2020/09/01 Python
PyCharm 2020.2下配置Anaconda环境的方法步骤
2020/09/23 Python
python 决策树算法的实现
2020/10/09 Python
python lambda的使用详解
2021/02/26 Python
CSS3教程:background-clip和background-origin
2008/10/17 HTML / CSS
耐克巴西官方网站:Nike巴西
2016/08/14 全球购物
安全的后院和健身蹦床:JumpSport
2019/07/15 全球购物
信息学院毕业生自荐信范文
2014/03/04 职场文书
爱国主义影片观后感
2015/06/18 职场文书