首页 > 编程知识 正文

模拟退火算法和遗传算法结合,进化算法应用

时间:2023-05-05 23:48:49 阅读:147730 作者:1458

目录1引言2 GA遗传算法3 ES进化算法4es(1)算法5模拟退火算法6总结

1引言

学习这类启发式算法需紧抓两点

如何从父级生成子级点。 简而言之,种群如何交叉繁殖如何实现优胜劣汰,以及使用什么算法来存储和抓住表现种群优秀的个体,有的放矢,启发式算法都很简单。 2 GA遗传算法这里主要论述GA算法的宏观思路。

初始化100个父母(实际上是上图100个点的x值)后,如何通过这些父母产生孩子呢? 这里必须理解生物学的概念。 现在我们把父母和孩子当成个体和染色体。 它在生物学上,一条染色体上有很多基因。 在生物上,通过将父母、母亲的基因遗传给后代来增加后代。 那么,这些x轴的数值是如何基于生物学的呢? 这就是有趣的地方。 首先,从父母中随机取出两点,即精明的哈密瓜、数据线。 如果妈妈的x值是23,爸爸的x值是27。 那个会产生什么样的子孙呢? 请看下图。 那个孩子19岁。

根据上述内容,现在可以通过将实数转换为二进制代码来获得子代。 很巧妙。 遗传算法除交叉繁殖外还有变异。 变异也非常简单,随机选择几个孩子,在他们的DNA二进制码上,要么把0变成1,要么把1变成0。 如下图所示。

接下来应该做的事情是优胜劣败。 也就是说,保留优秀的个体。 由于种群中的个体为100个,从中取50个亲本和50个母本进行交叉繁殖,产生50个子代。 现在种群有150个,输入函数和模型,找到了最合适的前100个个体。

重复上述操作。 假设迭代代数为50代,则跑完这些代,将100个个体中的最佳值作为该问题的解。

相关资料:

3359 blog.csdn.net/ha _ ha _ ha 233/article/details/91364937

3 ES进化算法

学习这种启发式算法的关键是如何找到点。 也就是说,如何从父母那里生成孩子。 所谓ES算法,是通过随机从父母那里随机取点,再加上标准正态分布上的值,完成交叉繁殖的过程。 因为是进化,所以我觉得肯定也有变异功能,怎么实现呢? 请往下看分解。 我们需要再给每个孩子维持一个变异强度的序列。 那么,这个序列是如何作用于步骤2的子代生成的呢? 我说直接把这个值加起来不就行了吗? 呵呵,那太肤浅了。 这样的话,哪里会出现变异强度的字面意思呢? ES算法只需改变步骤2中使用的标准正态分布,就使用标准偏差为变异强度、平均值为0的正态分布。 那么,为什么哩表示变异的强度越大,也就是说标准差越大,数值越分散,靠近两侧的数值越多,曲线就越扁平。 通过这样的正态分布得到的值偏于阿。 不是感觉很奇怪吗? 手动移动狗头。yishou备注:这几天在研究启发式算法,找了很多资料,但大部分都很无聊。 给了很多公式,看了也不知道,我要崩溃了。 之后发现了宝物up,给了我很大的启发。 哈哈,想要吗? 拜托了。 请继续狗头。

相关资料:

3359 mofan py.com/tutorials/machine-learning/evolutionary-algorithm/evolution-strategy /

4es(1)算法

总的来说,es(1)算法可以看作是两点的斗争

父母生孩子。 将标准偏差为变化强度(全局变量)且平均值为0的正态分布与父代值相加以生成子代

情况1 )当生成的子代优于父代时,将子代的值分配给父代,增大变异强度的值

情况2 )父母优于子女时,保留父母的值,减小变异强度的值

重复2、3、4步。 可以看出,在该算法中,子代承担着临时变量的作用。 变异的强度为什么会这样变化呢? 还没有收敛的时候,我想加大变异的强度。如果已经接近收敛了,我想减小变异的强度。 很合理啊。

下图是该算法的优化过程。

下图是该算法的变异强度变化公式。 这个公式是怎么来的? 我认为是ES的始祖提出的,基于概率导出的最佳公式。

相关资料:

3359 mofan py.com/tutorials/machine-learning/evolutionary-algorithm/evolution-strategy-1 plus1- es /

5模拟退火算法

将父点随机化,并在其附近使用随机分布生成子点,然后输入到黑箱模型中。 情况1 )如果子代的积分优于父代的积分,则将子代分配给父代。 情况2 )那么,如果生成的孩子没有父母,是优秀的吗? 留住父母? 不,我们给定一定的概率,给孩子赋值。 纵观过去,父母变坏了,但这样可以有更高的概率摆脱全局最优解。 重复1、2、3的步骤。 重复50次就可以“降温”。 每重复50次,此温度参数将步骤1更改为范围较低的随机分布。 实际上,算法接近收敛阶段,希望生成的孩子在父母的小范围内变动。 模拟退火算法的核心是解决这一概率问题。

概率如下公式,至于怎么来的,我猜测可能就是金属降温的一个能量公式吧!!!

相关资料:

https://blog.csdn.net/WFRainn/article/details/80303138

6 总结

在学习最优模型参数时,梯度下降不是唯一的选择。在我们不知道目标函数的精确解析形式或不能直接计算梯度的情况下,启发式算法是有效的。在AI安全的黑盒攻击领域尤其适用。

代码汇总:

以下链接,包括GA遗传算法,ES基本进化策略,ES(1+1),模拟退火算法代码

https://colab.research.google.com/drive/10I9xkrUNnALWmbjbmP-D71JHcfy7jeK0?usp=sharing

还是那句话,如有疑问,评论区留言,力所能及,必答之。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。