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基于QRCode实现生成二维码的方法【下载,安装,调用等】
Jul 11 Python
Python实现的概率分布运算操作示例
Aug 14 Python
利用Python循环(包括while&amp;for)各种打印九九乘法表的实例
Nov 06 Python
python中使用xlrd读excel使用xlwt写excel的实例代码
Jan 31 Python
对Python random模块打乱数组顺序的实例讲解
Nov 08 Python
Python使用字典的嵌套功能详解
Feb 27 Python
python DataFrame转dict字典过程详解
Dec 26 Python
Python3 读取Word文件方式
Feb 13 Python
python实现提取COCO,VOC数据集中特定的类
Mar 10 Python
Python Tkinter实例——模拟掷骰子
Oct 24 Python
Django2.1.7 查询数据返回json格式的实现
Dec 29 Python
python实现双链表
May 25 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
用phpmyadmin更改mysql5.0登录密码
2008/03/25 PHP
在WAMP环境下搭建ZendDebugger php调试工具的方法
2011/07/18 PHP
Codeigniter生成Excel文档的简单方法
2014/06/12 PHP
php时间戳格式化显示友好的时间函数分享
2014/10/21 PHP
php删除一个路径下的所有文件夹和文件的方法
2018/02/07 PHP
javascript操作cookie_获取与修改代码
2009/05/21 Javascript
jquery 日期分离成年月日的代码
2010/05/14 Javascript
JavaScript全局函数使用简单说明
2011/03/11 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单的实现代码
2016/06/23 Javascript
js中的eval()函数把含有转义字符的字符串转换成Object对象的方法
2016/12/02 Javascript
AngularJS过滤器filter用法分析
2016/12/11 Javascript
详解VueJS 数据驱动和依赖追踪分析
2017/07/26 Javascript
在HTML文档中嵌入JavaScript的四种方法
2018/05/07 Javascript
Angular如何在应用初始化时运行代码详解
2018/06/11 Javascript
原生JS实现的简单轮播图功能【适合新手】
2018/08/17 Javascript
微信小程序内拖动图片实现移动、放大、旋转的方法
2018/09/04 Javascript
详解vue后台系统登录态管理
2019/04/02 Javascript
javascript中的数据类型检测方法详解
2019/08/07 Javascript
Vue.js获取手机系统型号、版本、浏览器类型的示例代码
2020/05/10 Javascript
vue 递归组件的简单使用示例
2021/01/14 Vue.js
Python urlopen 使用小示例
2008/09/06 Python
python使用urllib模块和pyquery实现阿里巴巴排名查询
2014/01/16 Python
python里使用正则的findall函数的实例详解
2017/10/19 Python
python利用sklearn包编写决策树源代码
2017/12/21 Python
python3如何将docx转换成pdf文件
2018/03/23 Python
Flask框架信号用法实例分析
2018/07/24 Python
Python shutil模块用法实例分析
2019/10/02 Python
大二自我鉴定
2014/01/31 职场文书
团购业务员岗位职责
2014/03/15 职场文书
初中教师业务学习材料
2014/05/12 职场文书
劳动竞赛口号
2014/06/16 职场文书
医院消毒隔离制度
2015/08/05 职场文书
2019通用版劳动合同范本!
2019/07/11 职场文书
MongoDB数据库常用的10条操作命令
2021/06/18 MongoDB
python 网络编程要点总结
2021/06/18 Python
Python多个MP4合成视频的实现方法
2021/07/16 Python