读书笔记《集体智慧编程》Chapter 5 : Optimization

本章概要

本章介绍了优化问题的基本概念,以及常见的优化算法(随机搜索,爬山,模拟退火,遗传算法)。读完本章后,感觉茅塞顿开,之前一直认为遗传算法高深莫测,原来这些算法都是根据生物,物理的启发而来的,顿时亲切了许多。

 

什么是优化(Optimization

一个问题的解有一系列组合,在这些组合中找出最优的解的过程就是优化。最笨的方法,枚举出所有可能的结果,找出最优的解。但是,往往可能性太多,计算机根本上无法枚举出所有的解决方案。

 

成本函数(Cost Function)

最优的解决方案在成本函数中得到最大或最小值。成本函数是指导优化继续进行的根本。

 

优化算法

  • 随机搜索:计算一组随机的组合方案,在这个方案中找到最优秀解,比较盲目,有可能最优解并不在这个随机的解决方案中。
  • 爬山:个人理解就是贪心算法,找到相比于当前解决方案而言最优的相邻方案,如此往复,直到找不到更优的方案为止。显著的问题就是只能找到局部最优解,无法找到全局最优解。改进算法是当找到一个最优解后,随机开始另一组探寻,多尝试几次。这样,虽然可以找到全局最优解,但是不能保证每次都可以。
  • 模拟退火(Simulated Annealling):此方法受物理中锻造合金的启发,首先将合金加热到一个高的温度,然后慢慢冷却,在冷却过程中,可以找到low energy configuration。算法大体思想与爬山有点类似,首先随机选取一个相邻的解决方案,如果更优,那么选取,否则,不拒绝,也不选取,会通过一个概率计算到底是拒绝还是选取,开始时,此概率会比较大,温度比较高,但是每一次选举后,温度会降低,选择较差方案的概率会降低。当温度降到一定程度,过程结束。这个方法可以使得优化在开始时,允许出现非最优解,这样可以加大找到全局最优解的机会。
  • 遗传算法(Genetic Algorithm):遗传算法受到生物遗传的启发,主要思路是首先随机组合第一代解决方案,根据目标函数的结果排序,取出最优的一部分作为第二代(称之为精英),其他的全部淘汰掉(是不是很残忍),然后在在精英中通过突变或者杂交的方式,创建出第其他的方案,称之为第二代,然后对第二待排序,任然取出精英,如此往复,直到精英基本不变或者代数到达一定上限时结束。

 

优化算法的不足

上面提到的优化算法依赖一个事实,最优解通常与次优解较近,但是如果较远,如下图所示:

image

全局最优点在比较靠右的地方,但是由于最优点的两边是一些不好的点,所以根据上面的优化算法,找到全局最游解的概率不高。如果解空间无规律,那么可能随机搜索会比其他优化方案更好。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/463024.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第五章· MySQL数据类型

一.数据类型介绍二.列属性介绍一.数据类型介绍 1.四种主要类别1)数值类型2)字符类型3)时间类型4)二进制类型 2.数据类型的 ABC 要素1)Appropriate(适当)2)Brief&#xf…

MySQL buffer pool里的三种链表和三种page

mysql buffer pool里的三种链表和三种page buffer pool是通过三种list来管理的 1) free list 2) lru list 3) flush list buffer pool中的最小单位是page,在innodb中定义三种page 1) free page :此page未被使用,此种类型page位于free链表中 2) clean pag…

Windows 运行... 可执行的命令

Windows "运行..." 可执行的命令 以下内容与操作系统版本有关,并不保证所有Windows都能运行 winver 检查Windows版本 wmimgmt.msc 打开Windows管理体系结构(wmi) wupdmgr Windows更新程序 wscript Windows脚本宿主设置 write 写字板 winmsd 系统信息 wiaa…

深入浅出Android:初识Intent(BMI)

1、strings.xml 1 <?xml version"1.0" encoding"utf-8"?>2 <resources>3 4 <string name"app_name">BMI</string>5 <string name"height">身高(cm)</string>6 <string …

xcode10 自定义代码块

xcode10 之后自定义代码块已经不是10之前&#xff0c;直接将代码拖拽到代码块列表进行编辑了&#xff0c;10之后自定义代码块的方法&#xff0c;选择代码右键Create Code Snippet 在这里查看代码块 然后选中想要自定义的代码块&#xff0c;光标放在图标上&#xff0c;就会出现个…

MySQL 引擎特性 · InnoDB Buffer Pool

前言 用户对数据库的最基本要求就是能高效的读取和存储数据&#xff0c;但是读写数据都涉及到与低速的设备交互&#xff0c;为了弥补两者之间的速度差异&#xff0c;所有数据库都有缓存池&#xff0c;用来管理相应的数据页&#xff0c;提高数据库的效率&#xff0c;当然也因为…

Foursquare引爆了什么

我们可以把Twitter、Foursquare和Facebook看作新一代互联网的三个图层&#xff0c;“时间、地点、与谁一起”。这三个图层的叠加&#xff0c;就是未来互联网最完整的画面。 谷歌一直在寻找一种方法让天底下所有商户都到它的Adsense上来做广告。换句话说&#xff0c;就是创造一种…

“BindingNavigator”如何在删除前弹出确认框?

问题的缘起在于有一个学习数据操作的人询问我“BindingNavigator”如何点击“删除”前进行确认。我一开始模拟创建了一个表&#xff0c;然后通过设计器的方式生成了这四类控件&#xff0c;随后拖拽一个Navigator到WinForm上&#xff0c;双击红色叉叉部分&#xff0c;写入一个Me…

解决虚拟机卡顿、卡死、待机后不动的情况(真实有效

本人环境&#xff1a; VM workstation 17.5 ubuntu 22.04 虚拟机配置&#xff1a;4核 4g issue&#xff1a; 出现开机卡死不动运行一段时间&#xff0c;可能半小时不到&#xff0c;就页面卡死不动经常需要关机重启才解决&#xff0c;可能没有解决 1.配置虚拟化引擎 这一步我称…

JVM内存溢出时快照转存HeapDump到文件

# Heap Dump 获取方式使用 JVM 参数获取 dump 文件进入Tomcat的bin目录&#xff0c;在catalina.sh文件里添加如下内容 >-XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPathc:\jakarta-tomcat\webapps 然后使用MAT分析工具&#xff0c;如jhat命令&#xff0c;eclipse的mat插件…

为什么auto_ptr智能指针不能作为STL标准容器的元素

上个星期的博客shared_ptr源码剖析里其实遗漏了一个问题:为什么auto_ptr不可以作为STL标准容器的元素&#xff0c;而shared_ptr可以? 我在网上看了好多篇讲shared_ptr的文章里讲到了这个问题&#xff0c;不过大多文章只是简单两笔带过。我研究了一下这个问题&#xff0c;发现…

【读书笔记】MSDN 上关于加密解密的一个例子

MSDN上的一个不错的例子&#xff1a; 那从内存清除密码的句子有个问题。 需要再看看这个问题到底是怎么回事&#xff0c;怎么解决 cannot convert from Sytem.InPtr to ref string 把下面这句 public static extern bool ZeroMemory(ref string Destination, int Length); 用这…

[luogu3380][bzoj3196]【模板】二逼平衡树【树套树】

题目地址 【洛谷传送门】 题目大意 区间查询k的排名&#xff0c;查找k排名的数&#xff0c;单点修改&#xff0c;区间前驱&#xff0c;区间后继。 感想 真的第一次写树套树&#xff0c;整个人都不对了。重构代码2次&#xff0c;发现样例都过不了&#xff0c;splay直接爆炸&…

Parquet格式描述

背景 2010年 google 发表了一篇论文《Dremel: Interactive Analysis of Web-Scale Datasets》&#xff0c;介绍了其 Dermel 系统是如何利用列式存储管理嵌套数据的&#xff0c;嵌套数据就是层次数据&#xff0c;如定义一个班级&#xff0c;班级由同学组成&#xff0c;同学的信…

Notepad++ 快捷键 大全

修改快捷键的话&#xff1a;设置----管理快捷键----就好比第一个快捷键新建吧--------鼠标双击&#xff0c;然后会弹出来对话框让你对具体想要设置的快捷键进行设置&#xff0c;所有的快捷键都是这么设置的&#xff0c;但是我就是不明白&#xff0c;你要设置的是哪个&#xff1…

Kevin专栏---如何制作试用版安装包

首先需要在http://activationservice.installshield.com/doLogin.do注册一个试用账号。注册完成后系统会自动发送一个15天的试用账号和密码。 在图标Trialware Files上点击鼠标右键&#xff0c;创建一个试用配置项&#xff08;见下图&#xff09;。 首先选择试用文件&#xff0…

ldd命令解析

在linux中&#xff0c;经常会碰到查看可执行文件需要依赖哪些动态链接库&#xff0c;这时ldd命令就可以排上用场了 由于某种原因&#xff0c;屏蔽了一些内容&#xff0c;结果如下&#xff1a; 可以根据结果查找对应的动态链接库

UDP和TCP协议包大小的计算-转

UDP和TCP协议包大小的计算 UDP一次发送数据包的大小&#xff0c;TCP一次发送数据包的大小。MTU最大传输单元&#xff0c;这个最大传输单元实际上和链路层协议有着密切的关系&#xff0c;EthernetII帧的结构DMACSMACTypeDataCRC由于以太网传输电气方面的限制&#xff0c;每个以太…

洛谷 - P1361 - 小M的作物 - 最小割 - 最大权闭合子图

第一次做最小割&#xff0c;不是很理解。 https://www.luogu.org/problemnew/show/P1361 要把东西分进两类里&#xff0c;好像可以应用最小割的模板&#xff0c;其中一类A作为源点&#xff0c;另一类B作为汇点&#xff0c;价值就是边的容量。 然后最小割一定会割断每个中间结点…

LVS

1、安装lvs 在分发器上在172.16.10.1上执行&#xff0c;事先应该配置好你的yum源&#xff0c;保证能够读取介质中的Cluster目录&#xff01;&#xff03;yum install ipvsadm编写&#xff0c;分发规则&#xff08;注意&#xff0c;清空之前的防火墙iptable -F ; iptable -t nat…