争取几句话描述一下爬山法,模拟退火,遗传算法

转自http://blog.csdn.net/lvhao92/article/details/50826709

首先,这仨算法都是求成本函数最优的方法。

爬山法:成本函数抽象成了一座山(想象一下一个2维坐标系,横轴为变量,纵轴为成本函数,成本函数随着横轴的递增而上下起伏绵延不绝,好似一座山),某人可在山中一任意位置左右移动(取该函数中的一点),因此,随着某人水平方向的变化(变量的变化),这哥们的海拔高度也在变化(成本函数随着变量的变化而变化)。可惜,这哥们一心想去山的最底处。所以他总喜欢走下坡路,一旦发现各个方向再走都是上坡的时候,那这哥们认为他终于走到了山的最底处,他不再走了并返回此时他的位置。(该例子的成本函数仅和一个变量有关,但现实生活中,成本函数是和多个变量有关。道理也是一样,就好像这个哥们每次走路的时候有N个方向供他选择(N个变量))

明眼的人都能看出来,这哥们非常容易的会把局部最小值当成全局最小值。以为山的小凹谷就是整座山的最低处了(这座山绵延不绝,并不是两头连接大地的那种,是长度无限长的那种),too navie。

有什么办法呢?就是随机重复爬山法,让你每次初始位置都随机的多试几次。说不定还真能蒙到正确结果。

模拟退火算法:这哥们突然变聪明了,认为有时候退一步海阔天空,我有的时候稍微走点上坡路,指不定后面会有一个大下坡等着我呢,于是这哥们开始只要上坡路不是上升的特别离谱,他都会试着去尝试一下,走走看。不过,随着时间的流逝,这哥们开始越来越不愿意走上坡路,一开始可能这是上坡路还会去尝试着走一下呢。到后来,越来越不愿意去尝试。这个愿不愿意去尝试走上坡路的心态就跟刚出炉放在空气中的铁一样,随着时间的流逝而渐渐降温,渐渐冷却,渐渐退火。公式表示就是这样:.,如果新的成本函数降低了,当然欣然接受一开始,不多说。但是如果新的成本函数增高了,那么就开始考虑要不要试一下要不要走,一开始的时候,温度很高,高低成本之差显得很小,除了个温度接近为0,这个P值接近为1,一般程序当中都是用一个0和1之间的随机数与P值比较,如果比P小那么就尝试,如果比P大那么不尝试。所以很明显,一开始肯定是乐意尝试的,后来随着时间的增加,温度的下降,P值越来越小接近于0。因此,更加不愿意去尝试上坡路了。

这个方法的问题和爬山法其实差不多,每次结果可能都会不同,尝试着每次改下参数(初始温度和温度下降的速度)来试试。

遗传算法:这时候,想象成人类吧。人类的生存环境十分的残酷,只有优秀的一拨人才能活下来(优秀的人意为成本函数小的最优解),一代一代,每代之中会有变异(对既有解进行微小的,简单的,随机的改变)也会有交叉(选取最优解中的两个解,然后将他们按照某种方式进行结合)。很显然,变异和交叉会产生新的种群(会对成本函数产生或增或减的影响)。同样,这些新的种群有的能适应这个世界而存活下去,有的就消失在人类的进化长河里。正所谓物竞天择适者生存。真是残酷。

时间: 2024-10-07 10:32:56

争取几句话描述一下爬山法,模拟退火,遗传算法的相关文章

被洗脑的中国人常用的10句话

近日,有媒体归纳了被洗脑的中国人常用的10句话,值得中国人深思.  NO.1[你不能改变别人,只能改变自己]  适用人群:这句话对有一种人是管用的,那就是一天到晚只会嫌别人做的不好,似乎全天下都欠了他从来不反思自己是不是有问题的人.特别是那种试图让全世界都按照他们的方式运转的人.只可惜,越是这种人,喊"改变自己"喊得越响,他们是在要求别人改变来适应他们的固执.  奴性潜台词:改变有很多种,但是一大部分喜欢用这句话给别人洗脑的人,强调的总是让人变得柔顺的那一面.遇到了矛盾,要求你先理解体

解释 -- 探寻“这件事引起了那件事”这句话意味着什么

1. 如何看待因果解释?从一个梦游症暴力案件说起 一名居住在堪萨斯州的男子在经历了一系列梦游事件之后,去了一家睡眠障碍的诊所,想要查出他到底得了什么病.一个多月后,他被确诊为非快速眼动睡眠异常症.这种睡眠障碍可能会导致人们做出一些奇怪的行为,比如在睡眠中导出走动或吃东西等,但大脑不会记住这些事情.在他被确诊两个月后,医生增加了他的用药量,而在增加用药量的两天后,他被捕了,并且被控告杀死了自己的妻子. 睡眠异常症患者以外杀人的案例十分罕见,但这个案例会是其中之一吗? 从证据的角度来看,这个案例似乎

【】五句话搞定JavaScript作用域

JavaScript的作用域一直以来是前端开发中比较难以理解的知识点,对于JavaScript的作用域主要记住几句话,走遍天下都不怕... 一.“JavaScript中无块级作用域” 在Java或C#中存在块级作用域,即:大括号也是一个作用域.  Java  C# 在JavaScript语言中无块级作用域 1 2 3 4 5 6 7 function Main(){     if(1==1){         var name = 'seven';     }     console.log(n

恭喜Yeslab(上海)郑同学于北京一次PASS RS CCIE,有句话叫做“逆袭未来”!

恭喜Yeslab(上海)郑同学于北京一次PASS RS CCIE,有句话叫做"逆袭未来"! 但还请记住,逆袭者仅仅留给有准备的人 恭喜Yeslab(上海)郑同学于北京一次PASS RS CCIE,有句话叫做"逆袭未来"!,布布扣,bubuko.com

快来对号入座!四句话告诉你怎样的企业适用于移动平台

眼下,移动平台成为各大企业竞相追捧的"香饽饽",然而,并不是所有的企业一开始都需要选用企业级移动平台,移动平台技术也不是满足所有企业的移动化转型需求.那么,究竟什么样的企业才适合用于移动平台呢?下面,小编用四句话告诉你. 1.组织结构较为复杂 大中型企业拥有很多分支机构和部门,政府机关也包括很多的下属单位,每个机构和单位都存在移动应用的建设诉求,如果每个单位或部门都单独建设移动应用项目,那么在项目建设上会存在极大浪费,并且后续的运维管理也面临很多的困难,所以这种体量较大的组织机构需要构

HTML元素title里面和js里面几句话如何换行 格式代码是如何的?

在调试代码的时候我就遇到一个问题,HTML元素title里面通常只显示一行,那我想要他换行,就是多行显示,如何实现?JS代码里面比如Alert里面又该如何换行? 经过我的一番实验 要实现这种效果有几种方法,并且非常简单: 在HTML元素中,可以使用:1.直接按"回车键"换行,代码中换行,实际中也会换行   2.用代码换行,只要在想要换行的地方输入这两个" "和" "任意中的一个都达到实现换行的效果!          在JS代码中,想要类似提示框

实习第二天-java参数传递-精华在文章最后2句话

对于基本类型的传递,我们很容易理解,而对于对象,总让人感觉是按引用传递,看下面的程序: public class ObjectRef { //基本类型的参数传递 public static void testBasicType(int m) { System.out.println("m=" + m);//m=50 m = 100; System.out.println("m=" + m);//m=100 } //参数为对象,不改变引用的值 ?????? publi

两个对象值相同(x.equals(y)==true),但却可有不同的hashcode这句话对吗?

1.这句话当然不对啦,请参看官方文档给出的解释! hashCode public int hashCode()返回该对象的哈希码值.支持此方法是为了提高哈希表(例如 java.util.Hashtable 提供的哈希表)的性能. hashCode 的常规协定是: 在 Java 应用程序执行期间,在对同一对象多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是将对象进行 equals 比较时所用的信息没有被修改.从某一应用程序的一次执行到同一应用程序的另一次执行,该整数无需保持一致

新年上班第一天:浏阳市委书记三句话感动“乡”商(图)c

新年上班第一天:浏阳市委书记三句话感动"乡"商(图)德乙混的二比零领先本赛季德乙联赛最大黑马霍芬海姆几乎已经提前完成了是在主场战胜霍芬海姆后本赛季的j5ml6h.mkayf.cn/p1vf2y.mkayf.cn/odext6.mkayf.cn/r4gjwf.mkayf.cn/tyjfjk.mkayf.cn/q5211p.mkayf.cn/h3466x.mkayf.cn/v37a8w.mkayf.cn/h73e5x.mkayf.cn/u8rc5r.mkayf.cn/gz3oz1.mkay