Kairbon'Blog.

进化策略(Evolution Strategy)

字数统计: 552阅读时长: 1 min
2019/07/13

进化策略(Evolution Strategy)

建议在了解ES之前先确保对遗传算法的思路有一定的了解,在比较中学习更有效率

与遗传算法的相同之处:
都是利用进化理论进行优化,即利用遗传信息一代代传承变异适者生存,从而得到最优解。

与遗传算法的不同之处:

1.DNA序列采用实数编码,而非0-1二进制码

2.变异时无法进行简单的0-1互换,思考:实数值该怎么变?随机?

变异思路:为DNA序列上的每一个实数值添加变异强度。根据这个变异强度决定DNA序列上的实数值该变成多少。

3.编码:

由第2点可知,进化策略在编码时,不仅要有表示解决方案的实数编码链A1,还得有一条表示每个实属值对应的变异强度值组成的链A2(也就是说,遗传给后代的信息有两种)。

4.交叉:

两条链都要交叉,即A1与B1交叉形成表示子代解决方案的C1链,A2与B2交叉形成表示C1链对应位置实数值变异强度的C2链(父:A,母:B,子:C)。

5.C1链上值的变异方法:

将C1链上的值看作正态分布的均值μ;
将C2链上变异强度值看作标准差σ;
用正态分布产生一个与C1链上选定位置相近的数,进行替换;

6.C2链上值的变异方法:

因为随着不断遗传迭代,种群中个体1号链的值不断逼近最优解,变异的强度也应当不断减小。所以也需要根据需求自定义2号链的变异方法。

7.选择:

将生成的孩子加入父代中,形成一个包含两代DNA的种群U;
对U种群中每个DNA序列的1号链(表示解决方案)进行fitness计算(打分),并根据分值从大到小排列(用U‘表示排列后的混合种群);
截取U’中的分值高的前n位(n表示一代种群中的个体数目)形成新种群;

CATALOG
  1. 1. 进化策略(Evolution Strategy)
    1. 1.1. 1.DNA序列采用实数编码,而非0-1二进制码
    2. 1.2. 2.变异时无法进行简单的0-1互换,思考:实数值该怎么变?随机?
    3. 1.3. 3.编码:
    4. 1.4. 4.交叉:
    5. 1.5. 5.C1链上值的变异方法:
    6. 1.6. 6.C2链上值的变异方法:
    7. 1.7. 7.选择: