我想加快 MATLAB 中凸优化问题的收敛速度。
我的目标函数是具有三个参数的凸函数,并且我正在使用梯度上升来最大化。
现在我正在手动编写迭代,终止条件是新参数值和旧参数值之间的差异非常小(大约 0.0000001)。我不能根据迭代次数终止,因为它不能保证它已经收敛到最佳解决方案。
所以,收敛需要很多时间——差不多 2 天!有什么办法可以加快这个速度吗?
实际上我的目标函数只有三个参数。我知道我的第一个参数的值应该大于第二个参数的值。
所以从初始条件开始,第二个参数的值开始迅速增加。达到某一点后,第一个参数的值开始快速增加。当第一个参数的值开始增加时,第二个参数的值开始缓慢下降。最终,我的第一个参数的值大于第二个参数的值。
有什么方法可以加快这个过程吗?2天是很长的时间。此外,计算梯度也很耗时。它需要大量的矩阵计算。
我不想从定义的参数值开始,比如 parameter1 的值大于秒的值。此外,第一个参数不必总是大于第二个参数。我只知道哪个参数值应该更大。有什么建议么?