粒子群优化:在高维度上太快收敛到局部最优 space
Particle Swarm Optimisation: Converges to local optima too quickly in high dimension space
在一个投资组合优化问题中,我有一个高维 (n=500) space,上下限为 [0 - 5,000,000]。使用 PSO,我发现解决方案可以快速收敛到局部最优值,并将问题缩小到多个区域:
- 速度:在 upper/lower 边界 [0 - 5,000,000] 的范围内,粒子速度迅速衰减到极小的步长 [0-10]。我发现的一个插件是我可以将速度更新函数更改为二进制步长 [例如250,000] 通过使用 sigmoid 函数,但这显然只是一个插头。关于如何激励速度保持高位有什么建议吗?
- 初始可行解:当初始化 1,000 个粒子时,我可能会发现在我的约束条件下只有 5% 是可行解。我认为我可以通过重新 运行 初始化来改进搜索 space,直到所有粒子都以可行的 space 开始,但事实证明这实际上会导致更差的性能和所有粒子只是停留在它们的初始化向量附近。
关于我的参数,w1=c1=c2=0.5。这可能是这两个问题的根源吗?
我愿意接受任何关于此的建议,因为理论上它应该是投资组合优化的好方法,但在实践中我没有看到这一点。
考虑更改参数。使用 w=0.5 'stabilizes' 粒子,从而防止逃离局部最优,因为它已经收敛。此外,我建议将c1和c2的值设置为大于1(我认为2是建议值),并可能将c1(Tendency to move to global best)的值修改为略小于c2以防止过度拥挤在一个解决方案上。
不管怎样,你试过用更多的粒子做粒子群优化吗?人们通常使用 100-200 个粒子来解决 2-10 维的问题。我认为 500 维 space 中的 1,000 个粒子不会削减它。我还建议使用更高级的初始化方法而不是正态分布或均匀分布(例如混沌映射、Sobol 序列、拉丁超立方体采样)。
在一个投资组合优化问题中,我有一个高维 (n=500) space,上下限为 [0 - 5,000,000]。使用 PSO,我发现解决方案可以快速收敛到局部最优值,并将问题缩小到多个区域:
- 速度:在 upper/lower 边界 [0 - 5,000,000] 的范围内,粒子速度迅速衰减到极小的步长 [0-10]。我发现的一个插件是我可以将速度更新函数更改为二进制步长 [例如250,000] 通过使用 sigmoid 函数,但这显然只是一个插头。关于如何激励速度保持高位有什么建议吗?
- 初始可行解:当初始化 1,000 个粒子时,我可能会发现在我的约束条件下只有 5% 是可行解。我认为我可以通过重新 运行 初始化来改进搜索 space,直到所有粒子都以可行的 space 开始,但事实证明这实际上会导致更差的性能和所有粒子只是停留在它们的初始化向量附近。
关于我的参数,w1=c1=c2=0.5。这可能是这两个问题的根源吗?
我愿意接受任何关于此的建议,因为理论上它应该是投资组合优化的好方法,但在实践中我没有看到这一点。
考虑更改参数。使用 w=0.5 'stabilizes' 粒子,从而防止逃离局部最优,因为它已经收敛。此外,我建议将c1和c2的值设置为大于1(我认为2是建议值),并可能将c1(Tendency to move to global best)的值修改为略小于c2以防止过度拥挤在一个解决方案上。
不管怎样,你试过用更多的粒子做粒子群优化吗?人们通常使用 100-200 个粒子来解决 2-10 维的问题。我认为 500 维 space 中的 1,000 个粒子不会削减它。我还建议使用更高级的初始化方法而不是正态分布或均匀分布(例如混沌映射、Sobol 序列、拉丁超立方体采样)。