前文介绍的的CS算法隶属于 “直接搜索法(direct search methods)” ,而直接搜索法的基本原则是:从现有解决方案中开始算法,并不断地检查试验解集合。 如果发现当前的试验解有改进,则更新现有解;否则,则减小步长参数,并检查新的试验点集合。

本节改进了CS算法,并介绍了另外两类新的直接搜索法——generalised pattern search (GPS) 和 mesh adaptive direct search (MADS)

  1. 首先,这些方法允许在除2n个正负坐标方向之外的其他方向上搜索;
  2. 其次,除了本地轮询步骤之外,这些方法还包括全局搜索步骤;
  3. 最后,在成功迭代的情况下,该方法允许增加搜索半径;
  4. 综合起来,这些改进具有更大的灵活性,拓宽了目标问题的范围,并提供了更强的收敛性分析和改进的数值结果。

一、GPS算法(Generalised Pattern Search)

众所周知,CS算法的核心就是 Poll step 这一步:

上式中的集合Pk:={xk±δkei:i=1,2,...,n}P^k:=\{x^k\pm\delta^ke_i:i=1,2,...,n\}Pk:={xk±δkei​:i=1,2,...,n}被称为“ polling set”,由前文分析可知,CS算法的搜索仅局限于2n个方向,即:每个坐标维度的正负两个方向。这里定义“poll directions”的集合,为Dk:={xk±δkd:d∈Dk}D^k:=\{x^k\pm\delta^kd:d\in D^k\}Dk:={xk±δkd:d∈Dk},

算法流程如下:

读完上述算法,可知,(1)搜索方向从原本坐标轴的仅正负两个方向,扩展到现在的任意方向(准确地说是:k维空间的正张成集中,即张成集是可张成整个k维空间的);(2)搜索不局限于“局部最优解”;(3)总结,GPS通过引入网格尺寸调整参数τ允许对网格的搜索过程进行一般的粗化和细化。这不会增加数学难度,并且在实践中可能非常有用。

二、MADS算法(Mesh Adaptive Direct Search)

MADS算法是GPS算法的改进,GPS算法应用受限,尤其是GPS算法必须要应用于无约束的优化问题中。

算法收敛性定理:

关于直接搜索算法的文献记录(原文记录如下):
In 2003, Kolda, Lewis, and Torczon [109] published a 100-page survey, which contains an enormous quantity of information on direct search methods. A more recent survey is found in [10]. High-level and historical papers on direct search methods appear in [16, 117, 118, 160, 161].

(更新中…)

black-box优化——第二篇:直接搜索算法相关推荐

  1. SQL性能优化第二篇之Mybatis如何能够执行多条SQL

    在第一篇基础上,数据库能够成功执行语句,但是放到Java代码中会报错有木有. 原来,mybatis在我们使用链接连接数据库时,需要我们手动在连接上加上代码: &allowMultiQuerie ...

  2. Android 进阶第二篇——性能优化

    Android 进阶第二篇--性能优化 一些Android书籍喜欢把性能优化放在最后的章节,简单提一提作为内容全面的点缀.在这里我将工具使用和性能优化的一些个人经验放在进阶系列博客的开始,因为我认为防 ...

  3. Unity3D 优化总篇

    转载[整理]unity3d优化总结篇 -- yxriyin 对项目优化有很多点,如:mesh合并 ,减少DrawCall和模型骨骼以及物理计算,合并材质球,优化代码等等, 优化: 1. 更新不透明贴图 ...

  4. Spotify敏捷模式详解三部曲第二篇:研发过程

    本文转自:Scrum 中文网 引言 在本系列文章的第一篇,我们介绍了Spotify的敏捷研发团队,以及它独特的组织架构.Spotify的研发团队采用的是一种非常独特的组织架构,如下图所示: 整个研发组 ...

  5. JavaScript优化基本篇

    本文章适合于与作者一样想要学习JavaScript的的"非前台专业"的大学生或者后台工程师. 如果,你想进行进一步的优化,那么请点击JavaScript性能优化小知识点总结 个人笔 ...

  6. 第二篇|腾讯开源项目盘点:ncnn、xLua、libco等

    开源展示了人类共同协作,成果分享的魅力,每一次技术发展都是站在巨人的肩膀上,技术诸多创新和发展往往就是基于开源发展起来的,没有任何一家网络公司可以不使用开源技术,仅靠自身技术而发展起来. 腾讯开源了个 ...

  7. linux性能优化--cpu篇

    linux性能优化--cpu篇 前言 负载 CPU使用率 proc perf 一些链接 `perf list` 比较有用的event `perf stat` `perf record` Profili ...

  8. [翻译]Go与C#的比较,第二篇:垃圾回收

    Go vs C#, part 2: Garbage Collection | by Alex Yakunin | ServiceTitan - Titan Tech | Medium 目录 译者注 什 ...

  9. 【.NET Core 跨平台 GUI 开发】第二篇:Gtk# 布局入门,初识HBox 和 VBox

    这是 Gtk# 系列博文的第二篇.在上一篇博文<编写你的第一个 Gtk# 应用>中,我们提到"一个 Gtk.Window 只能直接包含一个部件".这意味着,在不做其他额 ...

最新文章

  1. 提高mysql性能的开源软件
  2. 带无线驱动的linux版本,怎么在Linux里查询无线网卡的驱动程序版本
  3. 面试官最想要的synchronized,你值得拥有
  4. IT规划的企业应用实践(10)研究的范围和限制
  5. {}是set类型还是dict类型呢
  6. 需求文档可以不签字吗? 之一
  7. Linux Signals 进程信号简介
  8. Windows更新右下角出现 天气温度等提示,如何取消
  9. html5 getchildren,jquery children() find()用法
  10. 那些在11gR2中可能惹祸的新特性,一张列表帮助你摆脱升级11gR2带来的烦恼
  11. 关于自我学习停滞的思考
  12. string StartsWith 方法 Https
  13. windows实用软件
  14. 【Java 8 新特性】Java CompletableFuture thenApply()
  15. 转: qemu-kvm内存管理
  16. Linux就这个范儿 第12章 一个网络一个世界
  17. 相似度算法--莱文斯坦距离加入同义词逻辑
  18. 字号,行距,磅,像素……(word排版)
  19. hbase表按rowkey和时间清理数据
  20. Centos7安装Mysql(yum 安装)

热门文章

  1. Vue学习笔记:创建一个Vue实例
  2. 赋予mysql用户触发器权限_MYSQL设置触发器权限问题的解决方法
  3. 2017.10.18 开店 失败总结
  4. 【Linux使用】Centos 7 YUM仓库配置文件代理服务器设置
  5. python基础的学习
  6. MySQL将一张表数据插入到另一张表
  7. Unity Optimizing Shader Load Time
  8. SQL表连接,排序输出
  9. day46-CSS3新增功能
  10. 关于C#中虚方法重载的说明