mopso多目标粒子群算法的matlab实现,基于yarpiz版本的改进

in 默认分类 with 3 comments

多目标粒子群优化(MOPSO)由Coello Coello等人于2004年提出。它是PSO的多目标版本,它结合了Pareto包络和网格制作技术,类似于基于Pareto包络的选择算法来处理多目标优化问题。

就像PSO一样,MOPSO中的粒子正在共享信息,并朝着全球最佳粒子和他们自己的(本地)最佳记忆迈进。但是,与PSO不同,有不止一个准则来确定和定义最佳(全局或局部)。群中所有非支配的粒子都被收集到一个称为“存储库”的子群中,每个粒子都在此存储库成员中选择其全局最佳目标。对于个人(局部)最佳粒子,使用基于控制的概率规则。

yarpiz在他们的网站上公开了他们的mopso在matlab中的实现,但是在使用的时候我发现这份程序虽然可以输入多个参数但是无法独立设置多个参数的范围,我对其做了一小点优化以实现对独立范围的支持。

我将直接分享这个代码包,以BSD分享。

mopso.zip

Responses / Cancel Reply
  1. MZ

    yarpiz的代码中的目标函数是求最大值还是最小值?没有完全看懂,谢谢

    Reply
    1. @MZ

      多目标会求出pareto解,要得到具体的哪一个解需要你自己再使用别的算法比如topsis来计算。
      因为比如你说的最大值和最小值,如果是a,b两个目标,正常情况下很难得到绝对最优(a最大时正好b最大),那你怎么去判断哪个是最好的呢。
      如果你只有一个目标,那么你应该使用单目标的优化函数。
      博客看得少,可以邮件 hunsh.cn@gmail.com 联系我

      Reply
  2. JZ

    666

    Reply