麻省理工公开课13 学习:遗传算法

遗传算法是一种模拟自然选择的优化算法。

生物学中的遗传过程:

染色体——一些基因突变——部分交叉交换——生成个体——每个个体有不同的适应性,用数字量化(适应性越强的个体活到下一代概率越大)——活到下一代的个体开始新的一轮遗传

请添加图片描述

突变:就是在爬山

交叉互换:将多个个体的优点集中在一个个体身上

一、适应性

如何基于适应性 计算活到下一代的概率?

1、每个个体活到下一代的概率加起来应该是=1的。

2、选出第i个个体的概率PiP_iPi正比于个体的适应性fif_ifi
Pi=fi∑ifi P_i=\frac{f_i}{\sum\limits_{i}f_i} Pi=ififi

例子:用遗传算法寻找空间中的最佳值

空间:很多等高线,很多山

请添加图片描述

适应性是xy的函数,可以这样表示:

请添加图片描述

这里的α\alphaαβ\betaβ是为了让演示图象更好看。

计算时,几个x-y对会发生突变(比如x从0.3变成0.2),也会进行交叉互换。

请添加图片描述

不加交叉互换(本质上还是爬山机制):卡在了局部极大值

请添加图片描述

加了交叉互换:

请添加图片描述

或许能到,但是不确定。因为无法控制随机数。

改进:提高步长。也不是很明显。

请添加图片描述

如何将适应性更好地转化为生存概率?

二、一个更好的思路:排序空间、模拟退火

排序空间 Rank Space

关心适应性最强的排序,而不是具体适应性是多少。

适应性最强的候选者将有最大概率活到下一代。(类似于赋分制)

请添加图片描述

选第一个的概率 = pcp_cpc

选第二个的概率=没选第一个,且选了第二个 =(1−pc)×pc(1-p_c)\times p_c1pc×pc

后面依次类推。

效果:

小步长依然会困在局部最大值

请添加图片描述

但是调大步长就会很快到全局最大值

请添加图片描述

再将步长调小,就可以锁定在全局最大值。

大步长开始,逐渐缩小到小步长——模拟退火 simulated annealing。这样就能爬上全局最优值。

但是在更复杂一点的空间(壕沟问题)中,会倾向于卡在局部最优解。

请添加图片描述

三、考虑多样性

多样性:这一代和上一代的差异有多大

优先考虑适应性最强、多样性也最强的个体。如果没有同时满足的,就可以画等优线(图中的弧线)。

请添加图片描述

这个例子在实际运用时,是先选适应性最强的,然后剩下的候选者按照多样性进行排序。
请添加图片描述

就会扩散开,然后将多样性关掉,还是用适应性,就能锁在全局最优。
请添加图片描述

壕沟问题:很快就能到右上角,关掉多样性,再次锁在全局最优。
请添加图片描述请添加图片描述

一些实例

可以用在什么上面?

1、做计划

两个计划各有步骤,可以交叉互换其中的步骤。

请添加图片描述

2、将基因突变和交叉互换写成规则:

请添加图片描述

X‘就是稍微突变后的X。

那么遗传算法就是我们最想要的吗?

一个算法的结果很有趣,贡献在于空间的丰富性和编程者的聪明才智,而不在于遗传算法本身有多好。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值