首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用MATLAB全局优化算法求解非凸优化问题

用MATLAB全局优化算法求解非凸优化问题
EN

Stack Overflow用户
提问于 2016-01-12 10:14:22
回答 2查看 2.2K关注 0票数 2

我有一个简单的无约束非凸优化问题。由于这些类型的问题有多个局部极小值,所以我正在寻找产生唯一/全局最小值的全局优化算法。在互联网上,我遇到了诸如遗传算法、模拟退火等全局优化算法,但是对于求解一个简单的一个变量不受约束的非凸优化问题,我认为使用这些高级算法似乎不是一个好主意。有人能推荐我一个简单的全局算法来解决这样简单的一个变量无约束的非凸优化问题吗?我将非常感谢关于这方面的想法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-21 14:02:04

“因为这类问题有多个局部极小值”。这不是真的,真正的情况如下:

  • 也许你有一个当地的最低限度
  • 也许你有无穷多个本地拟态
  • 也许你有有限个局部极小值
  • 也许没有达到最低限度
  • 也许下面的问题是无限的

更大的情况是,确实有真正解决问题的方法(数值上和它们都很慢),但是有一个俚语叫方法,它不是必要的,它也调用函数的最小值作为“解决”。

  1. 事实上,对于任何有限的n和任意的无限集M^n~M,所以你的问题有一维的事实是没有意义的。从理论上看,从集合M中提取1000000个参数仍然是一个困难的问题。
  2. 如果您感兴趣的是如何近似地解决领域内已知精度epsilon的问题??然后将您的区域划分为1/espsilon区域,在中间点选择样本值(value函数),并选择最小值。
  3. 下面我将描述的方法是精确方法,以及其他方法:粒子估计法、sequent.convex.programming法、交替方向法、粒子群法、Neidler单纯形法、多起始梯度/次梯度下降法或任何像牛顿法或坐标下降法这样的下降算法,它们都是,对于非凸问题,它们都没有的指导意义,如果函数是非凸的,甚至不能应用其中的一些方法。

如果您对函数值的某些精确性真正感兴趣,那么您可以关注方法,它称为branch-and-bound,它真正找到了最小值,我不认为这些算法能够解决问题,并在很强的意义上找到最小值:

将分支和界划分域划分为凸集并改进上/下界的基本思想,在您的情况下是区间。

您应该有一个例程来找到最优(最小)的上限。价值:你可以这样做,例如,只需采样子域,取最小值,或使用局部优化方法,从随机点开始。

但你也应该有最优(最小)的下界。以某种原则来衡量价值,这是很难做到的:

  • 整数变量的凸松弛使其为实变量
  • 利用拉格朗日对偶函数
  • 在函数上使用Lipshitc常数等。

这是精巧的一步。

如果这两个值接近-我们将在其他情况下完成partion或细化分区。

获取关于子问题的下界和上界的信息,然后取最小。上界和最小值。儿童的下界。如果子返回更糟糕的下限,则可以由父级进行升级。

参考资料:

要获得更好的解释,请看: EE364B,第18课,教授。斯蒂芬·博伊德斯坦福大学。它可以在youtube和ITunes大学获得。如果你是新来的,我建议你去看看斯蒂芬·P·博伊德的EE263,EE364A,EE364B课程。你会喜欢的

票数 0
EN

Stack Overflow用户

发布于 2016-03-07 02:21:11

因为这是一个一维的问题,所以事情就更容易了。一个简单的最陡峭的下降过程可以使用如下。假设搜索的间隔为a<x<b

从最小化函数(例如f(x) )开始SD。恢复第一个最小Xm1。你应该用一个好的步骤,不要太大。通过添加一个正的小常数Xm1+ε来移动这一点。然后从这里开始,最大化f或最小化-f。你得到了f的最大值,你用ε来扭曲它,然后从那里开始,最小化,等等。

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

https://stackoverflow.com/questions/34740847

复制
相关文章

相似问题

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