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实现异步回调机制代码分享
Jan 10 Python
举例讲解Python设计模式编程的代理模式与抽象工厂模式
Jan 16 Python
Python使用re模块实现信息筛选的方法
Apr 29 Python
virtualenv 指定 python 解释器的版本方法
Oct 25 Python
Python查找文件中包含中文的行方法
Dec 19 Python
Python增强赋值和共享引用注意事项小结
May 28 Python
python基于Selenium的web自动化框架
Jul 14 Python
python对绑定事件的鼠标、按键的判断实例
Jul 17 Python
Python网络编程之使用TCP方式传输文件操作示例
Nov 01 Python
利用setuptools打包python程序的方法步骤
Jan 18 Python
python相对企业语言优势在哪
Jun 12 Python
Python超详细分步解析随机漫步
Mar 17 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
咖啡常见的种类
2021/03/03 新手入门
摩卡咖啡
2021/03/03 咖啡文化
生成静态页面的PHP类
2006/07/15 PHP
php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
2011/05/09 PHP
php获取数据库结果集方法(推荐)
2017/06/01 PHP
在IE上直接编辑网页内容的js代码(IE地址栏js)
2009/04/27 Javascript
prettify 代码高亮着色器google出品
2010/12/28 Javascript
日历查询的算法 如何计算某一天是星期几
2012/12/12 Javascript
nodejs教程之制作一个简单的文章发布系统
2014/11/21 NodeJs
使用javascript实现简单的选项卡切换
2015/01/09 Javascript
jquery实现submit提交表单
2015/02/03 Javascript
JS定义网页表单提交(submit)的方法
2015/03/20 Javascript
Jquery实现鼠标移动放大图片功能实例
2015/03/25 Javascript
jQuery实现下拉框多选 jquery-multiselect 的实例代码
2016/07/14 Javascript
微信小程序 教程之注册页面
2016/10/17 Javascript
jQuery实现图片滑动效果
2017/03/08 Javascript
vue源码入口文件分析(推荐)
2018/01/30 Javascript
详解Vue的常用指令v-if, v-for, v-show,v-else, v-bind, v-on
2018/10/12 Javascript
JavaScript实现身份证验证代码实例
2019/08/26 Javascript
Python中DJANGO简单测试实例
2015/05/11 Python
Python基于递归实现电话号码映射功能示例
2018/04/13 Python
Python命名空间的本质和加载顺序
2018/12/17 Python
Python打包模块wheel的使用方法与将python包发布到PyPI的方法详解
2020/02/12 Python
Python通过kerberos安全认证操作kafka方式
2020/06/06 Python
Python 远程开关机的方法
2020/11/18 Python
微信浏览器左上角返回按钮拦截功能
2017/11/21 HTML / CSS
canvas基础之图形验证码的示例
2018/01/02 HTML / CSS
蔻驰英国官网:COACH英国
2020/07/19 全球购物
遇到的Mysql的面试题
2014/06/29 面试题
会计找工作求职信范文
2013/12/09 职场文书
社区七一党员活动方案
2014/01/25 职场文书
11月升旗仪式讲话稿
2014/02/15 职场文书
《充气雨衣》教学反思
2014/04/07 职场文书
森林病虫害防治方案
2014/06/02 职场文书
2015大学生暑期实习报告
2015/07/13 职场文书
vue+springboot实现登录验证码
2021/05/27 Vue.js