对SPEA算法的一些总结

SPEA以及SPEA2也算是和NSGAII 可以说得上并列的有名的多目标问题的优化 算法 了。并且NSGAII,SPEA,以及SPEA2会经常拿来和自己的算法来做对比。下面总结一下这个算法,主要是描述一下流程,: 
1:首先初始化一个archive的集合P1,以及一个常用的population的集合P。设置P1的大小是N1,P的大小是N。初始的时候P1是空的,而P是已经初始化好的种群个体。 
2:对P1进行评价,选出来里面的pareto front为1(下面用PF1来代替了)的个体,copy到P1中,如果PF1的数量大于N1的话,这个接下来再说,目前假定PF1的数量小于N1。 
3:此时P1中也有了个体,那么先给P1中的个体分配fitness,分配的思路是 f(i)=SiN+1 . i 就是P1中的个体, Si 代表它在P中支配的个体的数量,然后再除以 N+1 保证这个值小于1。 
4:接着再给P中的个体安排fitness,对于P中的个体来说 f(i)=1+S(j) j 是代表在P1中支配 i 的个体。所以,在P中被别人支配的越多的个体,它的fitness就越大 
5:接着再说下再进行crossover,有个选择parent的过程,这里也是用的tournament的方法,那么选择的依据是什么?就是合并P和P1,从里面选择fitness最小的。这个地方和NSGAII不同的就是没涉及到crowding。

6:再说下在步骤2中,如果PF1的数量大于N1的话,就选择crowding最大的(这个crowding和NSGAII中的不一样,此时用的是一种CLUSTERING的方法)。并且在每次从PF1中copy到P1的时候,还是要重新计算下,此时都在PF1中才行,不满足的要删除掉。

PS:SPEA2针对SPEA适应度分配不精确以及多样性差等特点,使用了精确的适应度分配策略、密度估计技术、增强截断方法,使算法收敛速度加快、pareto最优解分配均匀。

你可能感兴趣的:(优化算法)