粒子群算法(Particle Swarm Optimization,PSO)于1955年提出,源于对对鸟群觅食过程中的迁徙和群居的模拟。
这个算法由两个公式组成:
速度更新公式
位置更新公式
PSO/GA的广义理解:
Ø具有隐含的选择机制
Ø进化方程与实数编码的算术交叉向类似,“认知”与“社会”部分可理解为两个父代产生一个子代的算术交叉运算。
Ø速度更新方程也可理解为一个变异算子,其变异强度取决于两个父代微粒间的距离,即个体最优和全局最优的两个微粒的距离;
ØW×vd可看作另一种变异形式,其大小于微粒在前代进化中的位置相关。
Ø进化类算法——子代替代父代 只利用位置信息 PSO进化为自适应过程,微粒位置x根据速度向量自适应更新; 同时利用位置与速度信息;
Ø如果将PSO位置更新公式看作变异算子,则PSO与进化规划相似;
PSO:微粒向群体经验给出的最好方向飞行
进化规划:随机变异道任何方向。
ØPSO为“意识(Conscious)”的变异,如果“意识”可提供有用信息,则PSO有更多机会更快飞到很好解的区域。
PSO求解约束化问题:
利用罚函数法。将目标函数和约束同时综合为一个罚函数
将目标函数和约束同时综合为一个罚函数
设计思路归纳为,在设计罚函数方面,不但考虑不可行解违反约束的总量,而且还利用各不可行解违反约束的个数这一信息;
在罚因子选择方面,基于协进化模型,把罚因子也作为寻优变量,在搜索过程中利用PSO算法自适应地进行调整,使算法最终不仅获得约束优化问题的优良解,同时还获得适合于问题的最佳罚因子。
协进化的原理可解释为,算法采用多个种群,或者将一个种群分为多个部分,各种群在各自独立进化的同时相互间共享和交互信息,各种群不仅利用从外界获得的信息来指导自身的搜索,同时还把探索得到的经验与其他种群分享,从而使整个系统协同进化,直至获得最优解。
cpso算法包含两类种群:
l一类种群包含M2个子种群Swarm1,j(j=1, …, M2},子种群规模均为M1,种群中的每个微粒Ai(i=l,…,k)则表示问题的一个决策解,该类种群用于进化决策解; ,
l另一个规模为M2的种群Swarm 2,其每个微粒Bj{j=1,...,M2})代表一组罚因子。用于计算Swarm1 , j中各微粒的罚函数值(或称适配值)。
Swarm1 , j中的每个微粒利用B,表示的罚因子计算适配值,
并连续采用PSO算法进化G、代获得一个新的解的种群Swarm1 ,j;
然后,根据Swarm1 , j中所有解的优劣信息,评价Swarm 2中微粒Bj的优劣,即评价罚因子;
当Swarm 2中所有微粒B,均得到评价后,Swarm 2采用PSO算法进化一代,从而获得新的种群Swarm 2,即得到M:组新的罚因子。
在一代协进化结束后Swarm1,j(j=1.2,…,M2})再分别用新的M2组罚因子进行评价,以此类推,直到满足算法终止准则,例如达到给定的最大协进化代数G2。
算法通过比较所有Swarm1,j得到的历史最好解,将最优者作为最终解输出,同时算法输出终止时Swarm 2中的最优微粒。即最佳罚因子。