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获取当前日期前后N天或N月日期的方法示例
Jul 30 Python
python2.7无法使用pip的解决方法(安装easy_install)
Apr 03 Python
解决Spyder中图片显示太小的问题
Apr 27 Python
python批量查询、汉字去重处理CSV文件
May 31 Python
python的pandas工具包,保存.csv文件时不要表头的实例
Jun 14 Python
pygame实现简易飞机大战
Sep 11 Python
Python Tkinter 简单登录界面的实现
Jun 14 Python
python笔记_将循环内容在一行输出的方法
Aug 08 Python
Python爬虫运用正则表达式的方法和优缺点
Aug 25 Python
python hmac模块验证客户端的合法性
Nov 07 Python
Ubuntu20下的Django安装的方法步骤
Jan 24 Python
python numpy中multiply与*及matul 的区别说明
May 26 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/19 PHP
PHP使用递归按层级查找数据的方法
2019/11/10 PHP
用jquery ajax获取网站Alexa排名的代码
2009/12/12 Javascript
ExtJs中简单的登录界面制作方法
2010/08/19 Javascript
基于Jquery+Ajax+Json的高效分页实现代码
2011/10/29 Javascript
jQuery自带的一些常用方法总结
2014/09/03 Javascript
js实现从中间开始往上下展开网页窗口的方法
2015/03/02 Javascript
JavaScript中Cookies的相关使用教程
2015/06/04 Javascript
浅谈MVC+EF easyui dataGrid 动态加载分页表格
2016/11/10 Javascript
遍历js中对象的属性和值的实例
2016/11/21 Javascript
关于微信上网页图片点击全屏放大效果
2016/12/19 Javascript
canvas知识总结
2017/01/25 Javascript
从零学习node.js之简易的网络爬虫(四)
2017/02/22 Javascript
详解Vue.js项目API、Router配置拆分实践
2018/03/16 Javascript
基于JS实现一个随机生成验证码功能
2019/05/29 Javascript
vue和iview实现Scroll 数据无限滚动功能
2019/10/31 Javascript
Vue项目中使用jsonp抓取跨域数据的方法
2019/11/10 Javascript
浅析vue中的nextTick
2020/12/28 Vue.js
python每隔N秒运行指定函数的方法
2015/03/16 Python
Scrapy抓取京东商品、豆瓣电影及代码分享
2017/11/23 Python
python中in在list和dict中查找效率的对比分析
2018/05/04 Python
解决tensorflow1.x版本加载saver.restore目录报错的问题
2018/07/26 Python
python实现LRU热点缓存及原理
2019/10/29 Python
Tensorflow: 从checkpoint文件中读取tensor方式
2020/02/10 Python
python实现逆滤波与维纳滤波示例
2020/02/26 Python
python为QT程序添加图标的方法详解
2020/03/09 Python
pymysql之cur.fetchall() 和cur.fetchone()用法详解
2020/05/15 Python
Django DRF APIView源码运行流程详解
2020/08/17 Python
法国女性内衣购物网站:Glamuse
2019/05/13 全球购物
预备党员政审材料
2014/02/04 职场文书
收银出纳员岗位职责
2014/02/23 职场文书
计算机网络专业自荐书
2014/06/09 职场文书
机械操作工岗位职责
2014/08/08 职场文书
落实八项规定专题民主生活会对照检查材料
2014/09/15 职场文书
交通事故代理词范文
2015/05/23 职场文书
一级电子管军用接收机测评
2022/04/05 无线电