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使用dis模块把Python反编译为字节码的用法详解
Jun 14 Python
python 添加用户设置密码并发邮件给root用户
Jul 25 Python
python实现简单点对点(p2p)聊天
Sep 13 Python
Python使用Flask-SQLAlchemy连接数据库操作示例
Aug 31 Python
Python装饰器用法实例分析
Jan 14 Python
windows下安装Python虚拟环境virtualenvwrapper-win
Jun 14 Python
django实现用户注册实例讲解
Oct 30 Python
Python selenium 自动化脚本打包成一个exe文件(推荐)
Jan 14 Python
关于pytorch中全连接神经网络搭建两种模式详解
Jan 14 Python
python与c语言的语法有哪些不一样的
Sep 13 Python
改变 Python 中线程执行顺序的方法
Sep 24 Python
Python实现手势识别
Oct 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设计模式 Singleton(单例模式)
2011/06/26 PHP
apache中为php 设置虚拟目录
2014/12/17 PHP
Zend Framework教程之Zend_Config_Ini用法分析
2016/03/23 PHP
php生成验证码,缩略图及水印图的类分享
2016/04/07 PHP
Laravel (Lumen) 解决JWT-Auth刷新token的问题
2019/10/24 PHP
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/06/05 Javascript
JavaScript实现强制重定向至HTTPS页面
2015/06/10 Javascript
浅谈Nodejs观察者模式
2015/10/13 NodeJs
jQuery插件之Tocify动态节点目录菜单生成器附源码下载
2016/01/08 Javascript
原生JS实现图片左右轮播
2016/12/30 Javascript
jquery分页插件pagination使用教程
2018/10/23 jQuery
Vee-validate 父组件获取子组件表单校验结果的实例代码
2019/05/20 Javascript
Vue使用Ref跨层级获取组件的步骤
2021/01/25 Vue.js
Python实现的金山快盘的签到程序
2013/01/17 Python
使用python实现扫描端口示例
2014/03/29 Python
python中的装饰器详解
2015/04/13 Python
Python验证企业工商注册码
2015/10/25 Python
Python中列表、字典、元组数据结构的简单学习笔记
2016/03/20 Python
python try except 捕获所有异常的实例
2018/10/18 Python
10分钟教你用Python实现微信自动回复功能
2018/11/28 Python
Python如何基于selenium实现自动登录博客园
2019/12/16 Python
用python写一个带有gui界面的密码生成器
2020/11/06 Python
python 基于PYMYSQL使用MYSQL数据库
2020/12/24 Python
HTML利用九宫格原理进行网页布局
2020/03/13 HTML / CSS
阿联酋电子产品购物网站:Menakart
2017/09/15 全球购物
小学教师管理制度
2014/01/18 职场文书
运动会稿件200字
2014/02/07 职场文书
助理政工师申报材料
2014/06/03 职场文书
工作自我评价范文
2019/03/21 职场文书
古诗之爱国古诗5首
2019/09/20 职场文书
MySQL令人咋舌的隐式转换
2021/04/05 MySQL
微信小程序实现拍照和相册选取图片
2021/05/09 Javascript
Android Rxjava3 使用场景详解
2022/04/07 Java/Android
公历12个月名称的由来
2022/04/12 杂记
Java版 简易五子棋小游戏
2022/05/04 Java/Android
Nginx 匹配方式
2022/05/15 Servers