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中内置的NotImplemented类型的用法
Mar 31 Python
python同时给两个收件人发送邮件的方法
Apr 30 Python
Python的Django框架下管理站点的基本方法
Jul 17 Python
python中如何使用朴素贝叶斯算法
Apr 06 Python
11月编程语言排行榜 Python逆袭C#上升到第4
Nov 15 Python
Python使用cx_Freeze库生成msi格式安装文件的方法
Jul 10 Python
利用django+wechat-python-sdk 创建微信服务器接入的方法
Feb 20 Python
Python中的pathlib.Path为什么不继承str详解
Jun 23 Python
django框架模板语言使用方法详解
Jul 18 Python
vue学习笔记之动态组件和v-once指令简单示例
Feb 29 Python
Python内存泄漏和内存溢出的解决方案
Sep 26 Python
Pycharm操作Git及GitHub的步骤详解
Oct 27 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中输出转义JavaScript代码的实现代码
2011/04/22 PHP
PHP代码网站如何防范SQL注入漏洞攻击建议分享
2012/03/01 PHP
linux环境apache多端口配置虚拟主机的方法深入介绍
2013/06/09 PHP
php页面函数设置超时限制的方法
2014/12/01 PHP
php实现的任意进制互转类分享
2015/07/07 PHP
jquery checkbox,radio是否选中的判断代码
2010/03/20 Javascript
精通Javascript系列之数据类型 字符串
2011/06/08 Javascript
jquery中attr和prop的区别分析
2015/03/16 Javascript
javascript实现简单的二级联动
2015/03/19 Javascript
JavaScript调用浏览器打印功能实例分析
2015/07/17 Javascript
Bootstrap前端开发案例二
2016/06/17 Javascript
jQuery使用siblings获取某元素所有同辈(兄弟姐妹)元素用法示例
2017/01/30 Javascript
在vue项目创建的后初始化首次使用stylus安装方法分享
2018/01/25 Javascript
video.js 实现视频只能后退不能快进的思路详解
2018/08/09 Javascript
Vue项目从webpack3.x升级webpack4不完全指南
2019/04/28 Javascript
微信小程序框架的页面布局代码
2019/08/17 Javascript
axios 实现post请求时把对象obj数据转为formdata
2019/10/31 Javascript
[02:09]抵达西雅图!中国军团加油!
2014/07/07 DOTA
Python中取整的几种方法小结
2017/01/06 Python
Python爬虫_城市公交、地铁站点和线路数据采集实例
2018/01/10 Python
python定向爬取淘宝商品价格
2018/02/27 Python
Python3使用SMTP发送带附件邮件
2020/06/16 Python
python标记语句块使用方法总结
2019/08/05 Python
python实现邮件发送功能
2019/08/10 Python
python之PyQt按钮右键菜单功能的实现代码
2019/08/17 Python
pandas-resample按时间聚合实例
2019/12/27 Python
PyCharm中如何直接使用Anaconda已安装的库
2020/05/28 Python
Python中BeautifulSoup通过查找Id获取元素信息
2020/12/07 Python
阿里巴巴Oracle DBA笔试题答案-备份恢复类
2013/11/20 面试题
北京某公司的.net笔试题
2014/03/20 面试题
合伙经营协议书范本(通用版)
2014/12/03 职场文书
爱岗敬业事迹材料
2014/12/24 职场文书
2016国庆节67周年寄语
2015/12/07 职场文书
2016年学校十一国庆节活动总结
2016/04/01 职场文书
详解 TypeScript 枚举类型
2021/11/02 Javascript
Minikube搭建Kubernetes集群
2022/03/31 Servers