局部搜索算法

人工智能原理第2章 搜索技术(下) 本章内容2.1 搜索与问题求解2.2 无信息搜索策略2.3 启发式搜索策略2.4 局部搜索算法2.5 约束满足问题2.6 博弈搜索参考书目附录 A*算法可采纳性的证明 2.4 局部搜索算法2.4.1 局部搜索与最优化2.4.2 爬山法搜索2.4.3 模拟退火搜索2.4.4 局部剪枝搜索2.4.5 遗传算法 局部搜索算法 前面的搜索算法都是保留搜索路径的,到达目标的路径就是问题的解—然而许多问题中到达目标的路径是无关紧要的 与系统地搜索状态空间(保留各种路径)相对,不关心路径的搜索算法就是局部搜索算法 局部搜索从一个单独的当前状态出发,通常只移动到相邻状态 典型情况下搜索的路径不保留 局部搜索算法的应用 集成电路设计 工厂场地布局 车间作业调度 自动程序设计 电信网络优化 车辆寻径 文件夹管理 2.4.1 局部搜索与最优化问题 局部搜索算法的优点: 只使用很少的内存(通常是一个常数) 经常能在不适合系统化算法的很大或无限的状态空间中找到合理的解 最优化问题—根据一个目标函数找到最佳状态 / 只有目标函数,而不考虑(没有)“目标测试”和“路径耗散” 局部搜索算法适用于最优化问题 状态空间地形图(1) 状态空间地形图(2) 在状态图中,既有“位置”(用状态表示)又有“高度”(用耗散值或目标函数值表示) 如果高度对应于耗散值,则目标是找到全局最小值,即图中最低点 如果高度对应于目标函数,则目标是找到全局最大值,即图中最高峰 如果存在解,则完备的局部搜索算法能够找到解 而最优的局部搜索算法能够找到全局最大或最小值 局部搜索算法 本节简要介绍以下4种局部搜索算法 / 介绍其算法思想 爬山法搜索 模拟退火搜索 局部剪枝搜索 遗传算法 从搜索的角度看遗传算法也是搜索假设空间的一种方法(学习问题归结为搜索问题)—生成后继假设的方式 2.4.2 爬山法搜索 爬山法(hill-climbing)—就是向值增加的方向持续移动—登高过程 / 如果相邻状态中没有比它更高的值,则算法结束于顶峰 爬山法搜索算法思想: (1)令初始状态S0为当前状态 (2)若当前状态已经达标,则算法运行结束,搜索成功 (3)若存在一个动作可以作用于当前状态以产生一个新状态,使新状态的估计值优于当前状态的估计值,则放弃当前状态,并令刚产生的新状态为当前状态,转(2) (4)取当前状态为相对最优解,停止执行算法 爬山法搜索的局限 爬山法是一种局部贪婪搜索,不是最优解算法(或是不完备的) / 其问题是: 局部极大值—比其邻居状态都高的顶峰,但是小于全局最大值(参照状态空间地形图) 山脊—一系列的局部极大值 高原—评价函数平坦的一块区域(或者山肩) 爬山法搜索的变形 爬山法的变形 随机爬山法—随机选择下一步 首选爬山法—随机选择直到有优于当前节点的下一步 随机重新开始爬山法—随机生成初始状态,进行一系列爬山法搜索—这时算法是完备的概率接近1 2.4.3 模拟退火搜索 将爬山法(停留在局部山峰)和随机行走以某种方式结合,以同时获得完备性和效率 模拟退火的思想 想象在不平的表面上如何使一个乒乓球掉到最深的裂缝中—如果只让其在表面滚动,则它只会停留在局部极小点 / 如果晃动平面,可以使乒乓球弹出局部极小点 / 技巧是晃动足够大使乒乓球弹出局部极小点,但又不能太大把它从全局极小点中赶出 模拟退火的解决思路(1) 思路—开始使劲晃动(先高温加热)然后慢慢降低摇晃的强度(逐渐降温)[退火过程] 算法的核心—移动选择 选择随机移动,如果评价值改善,则移动被接受,否则以某个小于1的概率接受 概率按照移动评价值变坏的梯度ΔE而呈指数级下降 / 同时也会随着作为控制的参数—“温度”T的降低(数值减小)而降低 接受概率=eΔE/T(注意此时ΔE <0) 模拟退火的解决思路(2) 温度T是时间的函数,按照模拟退火的思想,数值应该逐渐减小(降温) 因为接受概率=eΔE/T且ΔE <0,所以当温度高时,接受概率较大(接近1) / 而T越来越低时,ΔE/T变大,因而接受概率降低 可以证明,如果T下降得足够慢,则算法找到全局最优解的概率接近1 2.4.4 局部剪枝搜索 基本思想—与只从一个单独的起始状态出发不同,局部剪枝搜索从k个随机生成的状态开始,每步生成全部k个状态的所有后继状态 / 如果其中之一是目标状态,算法停止;否则从全部后继状态中选择最佳的k个状态继续搜索 在局部剪枝搜索过程中,有用的信息在k个并行的搜索线程之间传递—算法会很快放弃没有成果的搜索而把资源放在取得最大进展的搜索上 随机剪枝搜索 如果k个状态缺乏多样性,则局部剪枝搜索会受其影响,性能变差 算法的变种—随机剪枝搜索帮助缓解这一问题—随机剪枝搜索不

JAVA用爬山法解决八皇后问题_局部搜索算法.ppt相关推荐

  1. JAVA用爬山法解决八皇后问题_八皇后问题爬山法实现(C语言)

    1 #include 2 #include 3 #include 4 #include 5 // 6 //编程题7 //爬山法(八皇后问题)8 // 9 10 11 //棋子结构体12 //typed ...

  2. Python:爬山法/随机重启爬山法/允许侧移的爬山法解决八皇后问题

    文章目录 1 八皇后问题 2 程序代码 2.1 程序1 2.2 程序2 2.3 程序3 2.3.1 爬山法 2.3.2 随机重启爬山法 2.3.3 允许皇后侧移的爬山法 3 评价 1 八皇后问题 有一 ...

  3. Python:各种算法解决八皇后问题

    文章目录 1 八皇后问题 2 解决方案 3 性能对比 4 总结 1 八皇后问题 问题:有一个8乘8的棋盘,现在要将八个皇后放到棋盘上,满足:对于每一个皇后,在自己所在的行.列.两个对角线都没有其他皇后 ...

  4. 遗传算法解决八皇后问题(java源码)

    本文源码下载链接:https://download.csdn.net/download/goulvjiang3176/11221063 另有贪心算法解决八皇后问题的源码下载链接:https://dow ...

  5. 八皇后时间复杂度_回溯算法 | 追忆那些年曾难倒我们的八皇后问题

    文章收录在公众号:bigsai,关注更多干货和学习资源 记得点赞.在看 前言 说起八皇后问题,它是一道回溯算法类的经典问题,也可能是我们大部分人在上数据结构或者算法课上遇到过的最难的一道题-- 在这里 ...

  6. 回溯法在解决八皇后问题中的应用

    回溯法:有这样一类题目,它们要求在相对问题的输入规模按照指数速度增长(或者更快)的域中,找出一个具有指定特性的元素.例如:在图顶点的所有排列中求一个哈密顿回路,在背包问题的一个实例中求其中最有价值的物 ...

  7. 爬山法求解八皇后问题的全部解法

    爬山法求解八皇后问题的全部解法 程序的概要设计思想 初始状态 冲突函数 寻找邻居状态 寻找全部解集 程序主要函数的作用 运行结果截图 Python源代码 程序的概要设计思想 爬山算法是一种局部贪婪算法 ...

  8. Python解决八皇后问题

    Python解决八皇后问题 参考文章: (1)Python解决八皇后问题 (2)https://www.cnblogs.com/littleseven/p/5362791.html 备忘一下.

  9. 回溯算法解决八皇后_4皇后问题和使用回溯算法的解决方案

    回溯算法解决八皇后 4-皇后问题 (4 - Queen's problem) In 4- queens problem, we have 4 queens to be placed on a 4*4 ...

最新文章

  1. python使用matplotlib可视化subplots绘制子图、自定义几行几列子图,如果M行N列,那么最终包含M*N个子图、在指定的子图中添加可视化结果
  2. 2021年4月22日 阿里供应链Java开发实习面试(三面)(含总结)
  3. php编译工具 知乎,关于知乎回答问题编辑框用Ctrl+V 粘贴图片是如何实现的详解...
  4. scrapy proxy and user_agent
  5. android读取本地yaml文件_python笔记11-读取yaml配置文件(pyyaml)
  6. 外链引入css有哪些方式_快速收录的外链操作技巧
  7. nginx 学习记录:IP+端口号配置网站、隐藏端口号、自签名证书配置Https、强制Https、自定义404
  8. cal日历工具的用法
  9. C语言-PIC18F25K22-AD7705
  10. 信贷风控中如何定位基站位置
  11. html加载三维地图,Cesium加载三维地形及WMS地图,并实现动态控制显示
  12. 2021年钟霖高考成绩查询,2021年高考倒计时祝福短信
  13. pubgmob国际服服务器维护中,pubgmob国际服
  14. DeepSpeech语音转文本合成技术
  15. TMS28335 XINTF
  16. Android客户端与PHP服务端API接口Token安全验证
  17. 二层交换机的工作原理
  18. 计算机硬件故障可分为哪几类,计算机硬件故障有哪些(浅谈计算机硬件故障的识别与处理)...
  19. 经典题目-如何测试一个一次性纸杯
  20. hive窗口函数(开窗函数)

热门文章

  1. excel迷你图 vba_显示隐藏数据的Excel迷你图
  2. 情人节用C++给女朋友比个心
  3. 苹果自带拼音转换方法
  4. spring 定时任务@Scheduled详解
  5. 嗯哼~还有什么比学习更快乐的呢
  6. [iOS]-NSTimer与循环引用的理解
  7. 软件工程之uni-app技术调研
  8. 基于jsp+ssm+mysql实现简单的物流快递管理系统
  9. 写一个设备的分配与调度简单方案_第八章:I/O设备管理
  10. 前端缓存 浏览器存储