Closed ilovewarpig closed 4 years ago
修正了粒子速度更新时未考虑个体最优值的问题。 经过尝试,发现在原代码中self.addr和self.bestAddr共同指向了addr,任一方的修改都会影响另一个变量(有时变好有时变差),并且self.bestFit不会同步更新。因此在原代码中历代deltam始终为空集合,导致粒子的速度更新时从未考虑自己的最优值。 对init和upData中的代码进行了修改,添加[:]可避免self.addr和self.bestAddr共同访问同一存储空间的问题,加快收敛。
将变异和交叉引入解TSP问题的PSO算法的想法很有意思!受教了!
修正了粒子速度更新时未考虑个体最优值的问题。 经过尝试,发现在原代码中self.addr和self.bestAddr共同指向了addr,任一方的修改都会影响另一个变量(有时变好有时变差),并且self.bestFit不会同步更新。因此在原代码中历代deltam始终为空集合,导致粒子的速度更新时从未考虑自己的最优值。 对init和upData中的代码进行了修改,添加[:]可避免self.addr和self.bestAddr共同访问同一存储空间的问题,加快收敛。