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调用windows api锁定计算机示例
Apr 17 Python
python提取字典key列表的方法
Jul 11 Python
Python yield 使用方法浅析
May 20 Python
Python中如何优雅的合并两个字典(dict)方法示例
Aug 09 Python
Python定义二叉树及4种遍历方法实例详解
Jul 05 Python
centos6.8安装python3.7无法import _ssl的解决方法
Sep 17 Python
Python类和对象的定义与实际应用案例分析
Dec 27 Python
详解django中url路由配置及渲染方式
Feb 25 Python
python中pytest收集用例规则与运行指定用例详解
Jun 27 Python
Python更新所有已安装包的操作
Feb 13 Python
Python如何根据时间序列数据作图
May 12 Python
python中if及if-else如何使用
Jun 02 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读取msn上的用户信息类
2008/12/05 PHP
PHP程序员面试 切忌急功近利(更需要注重以后的发展)
2010/09/01 PHP
探讨:如何使用PhpDocumentor生成文档
2013/06/25 PHP
PHP中把对象转换为关联数组代码分享
2015/04/09 PHP
幻宇的层模拟窗口效果-提供演示和下载
2007/01/20 Javascript
JQuery 获取和设置Select选项的代码
2010/02/07 Javascript
轻松创建nodejs服务器(7):阻塞操作的实现
2014/12/18 NodeJs
react 应用多入口配置及实践总结
2018/10/17 Javascript
每个 JavaScript 工程师都应懂的33个概念
2018/10/22 Javascript
详解用async/await来处理异步
2019/08/28 Javascript
微信小程序scroll-view锚点链接滚动跳转功能
2019/12/12 Javascript
vue使用video插件vue-video-player的示例
2020/10/03 Javascript
vue项目开启Gzip压缩和性能优化操作
2020/10/26 Javascript
vue项目配置 webpack-obfuscator 进行代码加密混淆的实现
2021/02/26 Vue.js
python读写ini文件示例(python读写文件)
2014/03/25 Python
Python实现获取命令行输出结果的方法
2017/06/10 Python
Python 闭包的使用方法
2017/09/07 Python
python实现批量修改文件名代码
2017/09/10 Python
python opencv之SIFT算法示例
2018/02/24 Python
python实现决策树、随机森林的简单原理
2018/03/26 Python
神经网络(BP)算法Python实现及应用
2018/04/16 Python
python批量创建指定名称的文件夹
2019/03/21 Python
tensorflow之自定义神经网络层实例
2020/02/07 Python
基于Python第三方插件实现西游记章节标注汉语拼音的方法
2020/05/22 Python
从python读取sql的实例方法
2020/07/21 Python
携程英文网站:Trip.com
2017/02/07 全球购物
贝玲妃英国官网:Benefit英国
2018/02/03 全球购物
美国豪华的多品牌精品店:The Webster
2019/07/31 全球购物
实习鉴定范文
2013/12/19 职场文书
学校消防安全责任书
2014/07/23 职场文书
领导班子整改措施
2014/10/24 职场文书
技术股东合作协议书
2014/12/02 职场文书
文明班级申报材料
2014/12/24 职场文书
公文写作:工伤事故分析报告怎么写?
2019/11/05 职场文书
微信小程序用户授权最佳实践指南
2021/05/08 Javascript
《巫师》是美食游戏?CDPR10月将推出《巫师》官方食谱
2022/04/03 其他游戏