在一个投资组合优化问题中,我有一个高维(n=500)的空间,其上下界为[0 – 5,000,000]。使用PSO时,我发现解法迅速收敛到局部最优,我已经将问题缩小到几个方面:
- 速度:粒子的速度在上下界[0 – 5,000,000]的背景下迅速衰减到极小的步长[0-10]。我发现的一个解决方法是通过使用Sigmoid函数将速度更新函数改为二进制步长[例如250,000],但这显然只是一个临时解决方案。有什么建议可以保持速度较高吗?
- 初始可行解:在初始化1,000个粒子时,我可能发现只有5%是符合我的约束条件的可行解。我曾想通过重新运行初始化,直到所有粒子都从可行空间开始来改善搜索空间,但结果表明这实际上导致了更差的表现,所有粒子都停留在靠近其初始向量的位置。
关于我的参数,w1=c1=c2=0.5。这是否可能是这两个问题的根源?
我对这方面的任何建议都持开放态度,因为理论上这应该是投资组合优化的好方法,但在实践中我没有看到这种效果。
回答:
考虑更改参数。使用w=0.5 ‘稳定’粒子,从而阻止其逃离局部最优,因为它已经收敛。此外,我建议将c1和c2的值设定为大于1(我认为建议值是2),并且可以将c1的值(倾向于移动到全局最优)稍微设定得比c2小,以防止在一个解决方案上过度集中。
无论如何,你是否尝试过使用更多的粒子进行PSO?人们通常使用100-200个粒子来解决2-10维的问题。我认为在500维空间中使用1,000个粒子是不够的。我还建议使用更高级的初始化方法,而不是正态分布或均匀分布(例如混沌映射、Sobol序列、拉丁超立方采样)。