首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MATLAB:凸优化算法的慢收敛

MATLAB:凸优化算法的慢收敛
EN

Stack Overflow用户
提问于 2012-05-14 03:13:29
回答 1查看 1K关注 0票数 1

我想在MATLAB中加速一个凸优化问题的收敛速度。

我的目标函数是具有三个参数的凸函数,我使用梯度上升来最大化。

现在,我正在手动编写迭代,终止条件是新参数值和旧参数值之间的差异非常小(大约0.0000001)。我不能基于迭代次数来终止,因为它不能保证它已经收敛到最优解。

所以,它需要很长时间才能收敛--几乎需要2天!有没有什么方法可以加快速度呢?

实际上,我的目标函数只有三个参数。我知道第一个参数的值应该大于第二个参数的值。

因此,从初始条件开始,第二个参数的值开始快速增加。在达到某一点后,第一个参数的值开始快速增加。当第一个参数的值开始增加时,第二个参数的值开始缓慢减少。最后,我让第一个参数的值大于第二个参数的值。

有没有办法加快这个过程?2天是很长的一段时间。此外,计算梯度也很耗时。它需要大量的矩阵计算。

我不想从定义的参数值开始,比如parameter1的值大于second的值。而且,第一个参数不必总是大于第二个参数。我只知道哪个参数值应该更大。有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2012-09-19 23:36:06

如果渐变的计算非常慢,而你仍然想做一个手动实现,你可以尝试一下,它将需要更多的步骤,但可能会快得多,因为步骤非常简单:

定义步长

尝试变量沿步长方向移动的所有点-1次、0次或1次(3^3 = 27种可能性)

选一个最好的

如果最好的是前一个,则将步长乘以0.5。

当然,这个过程的成功取决于函数的属性。此外,应该注意的是,更简单的解决方案可能是将所需的差值设置为类似于0.0001的值

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10574464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档