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变量不能以数字打头详解
Jul 06 Python
Python使用SocketServer模块编写基本服务器程序的教程
Jul 12 Python
python网络爬虫学习笔记(1)
Apr 09 Python
django 发送手机验证码的示例代码
Apr 25 Python
解决Pandas to_json()中文乱码,转化为json数组的问题
May 10 Python
Python3 Post登录并且保存cookie登录其他页面的方法
Dec 28 Python
Python3解释器知识点总结
Feb 19 Python
python通过paramiko复制远程文件及文件目录到本地
Apr 30 Python
在python tkinter中Canvas实现进度条显示的方法
Jun 14 Python
Pandas之DataFrame对象的列和索引之间的转化
Jun 25 Python
Python matplotlib画图时图例说明(legend)放到图像外侧详解
May 16 Python
python 解决selenium 中的 .clear()方法失效问题
Sep 01 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
关于查看MSSQL 数据库 用户每个表 占用的空间大小
2013/06/21 PHP
浅析PHP Socket技术
2013/08/02 PHP
yii框架builder、update、delete使用方法
2014/04/30 PHP
php $_SESSION会员登录实例分享
2021/01/19 PHP
php进行ip地址掩码运算处理的方法
2016/07/11 PHP
PHP实现图片压缩
2020/09/09 PHP
基于jquery实现的鼠标拖拽元素复制并写入效果
2011/08/23 Javascript
解析window.open的使用方法总结
2013/06/19 Javascript
直接在JS里创建JSON数据然后遍历使用
2014/07/25 Javascript
jQuery easyui的validatebox校验规则扩展及easyui校验框validatebox用法
2016/01/18 Javascript
vue.js如何将echarts封装为组件一键使用详解
2017/10/10 Javascript
微信小程序实现多选框全选与取消全选功能示例
2019/05/14 Javascript
深入了解JavaScript 的 WebAssembly
2019/06/15 Javascript
vue使用prop可以渲染但是打印台报错的解决方式
2019/11/13 Javascript
Python bsddb模块操作Berkeley DB数据库介绍
2015/04/08 Python
Python遍历zip文件输出名称时出现乱码问题的解决方法
2015/04/08 Python
详细分析python3的reduce函数
2017/12/05 Python
Pandas标记删除重复记录的方法
2018/04/08 Python
pandas 实现字典转换成DataFrame的方法
2018/07/04 Python
Python装饰器模式定义与用法分析
2018/08/06 Python
python+unittest+requests实现接口自动化的方法
2018/11/29 Python
Python实现的线性回归算法示例【附csv文件下载】
2018/12/29 Python
Pytorch evaluation每次运行结果不同的解决
2020/01/02 Python
Python 字典一个键对应多个值的方法
2020/09/29 Python
详解通过focusout事件解决IOS键盘收起时界面不归位的问题
2019/07/18 HTML / CSS
法国发饰品牌:Alexandre De Paris
2018/12/04 全球购物
德国二手设计师时装和复古时装跳蚤市场:Mädchenflohmarkt
2020/11/09 全球购物
开办大学饮食联盟创业计划书
2014/01/29 职场文书
骨干教师考核方案
2014/05/09 职场文书
网吧消防安全责任书
2014/07/29 职场文书
学习优秀共产党员先进事迹思想报告
2014/09/17 职场文书
2014年护理部工作总结
2014/11/14 职场文书
团委副书记工作总结
2015/08/14 职场文书
基于Nginx实现限制某IP短时间访问次数
2021/03/31 Servers
pandas中关于apply+lambda的应用
2022/02/28 Python
vue-cil之axios的二次封装与proxy反向代理使用说明
2022/04/07 Vue.js