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中lambda的用法及其与def的区别解析
Jul 28 Python
浅谈python中的getattr函数 hasattr函数
Jun 14 Python
Python中selenium实现文件上传所有方法整理总结
Apr 01 Python
scrapy爬虫实例分享
Dec 28 Python
python命令行解析之parse_known_args()函数和parse_args()使用区别介绍
Jan 24 Python
Python实现识别手写数字 Python图片读入与处理
Mar 23 Python
Python实现统计英文文章词频的方法分析
Jan 28 Python
Python判断有效的数独算法示例
Feb 23 Python
Numpy数组array和矩阵matrix转换方法
Aug 05 Python
python 在sql语句中使用%s,%d,%f说明
Jun 06 Python
Pythonic版二分查找实现过程原理解析
Aug 11 Python
简单了解python关键字global nonlocal区别
Sep 21 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 curl 登录163邮箱并抓取邮箱好友列表的代码(经测试)
2011/04/07 PHP
php获取字符串中各个字符出现次数的方法
2015/02/23 PHP
YII框架中使用memcache的方法详解
2017/08/02 PHP
javascript 动态添加表格行
2006/06/22 Javascript
nullJavascript中创建对象的五种方法实例
2013/05/07 Javascript
利用NodeJS的子进程(child_process)调用系统命令的方法分享
2013/06/05 NodeJs
小结Node.js中非阻塞IO和事件循环
2014/09/18 Javascript
jQuery实现Email邮箱地址自动补全功能代码
2015/11/03 Javascript
jquery验证邮箱格式是否正确实例讲解
2015/11/16 Javascript
Bootstrap 3 按钮标签实例代码
2017/02/21 Javascript
JS简单实现获取元素的封装操作示例
2017/04/07 Javascript
详解vue2.0脚手架的webpack 配置文件分析
2017/05/27 Javascript
JavaScript常用工具函数大全
2020/05/06 Javascript
[00:14]PWL:老朋友Mushi拍VLOG与中国玩家问好
2020/11/04 DOTA
Python字符转换
2008/09/06 Python
Python实现将绝对URL替换成相对URL的方法
2015/06/28 Python
使用Python脚本生成随机IP的简单方法
2015/07/30 Python
使用py2exe在Windows下将Python程序转为exe文件
2016/03/04 Python
python机器学习之神经网络(三)
2017/12/20 Python
Python实现的绘制三维双螺旋线图形功能示例
2018/06/23 Python
Python 字符串、列表、元组的截取与切片操作示例
2019/09/17 Python
Python 复平面绘图实例
2019/11/21 Python
python实现差分隐私Laplace机制详解
2019/11/25 Python
python GUI库图形界面开发之PyQt5 MDI(多文档窗口)QMidArea详细使用方法与实例
2020/03/05 Python
virtualenv介绍及简明教程
2020/06/23 Python
HTML5实现分享到微信好友朋友圈QQ好友QQ空间微博二维码功能
2018/01/03 HTML / CSS
html5使用canvas绘制一张图片
2014/12/15 HTML / CSS
一道写SQL的面试题和答案
2013/11/19 面试题
策划助理岗位职责
2013/11/18 职场文书
个人简历自我评价
2014/01/06 职场文书
厂办主管岗位职责范本
2014/02/28 职场文书
视光学专业自荐信
2014/06/24 职场文书
村道德模范事迹材料
2014/08/28 职场文书
雨花台导游词
2015/02/06 职场文书
护士医德考评自我评价
2015/03/03 职场文书
vue使用watch监听属性变化
2022/04/30 Vue.js