据我所知,大多数现实世界的优化问题都会在搜索空间中进行局部优化,但无论如何都要知道是否确定?
如果我可以肯定地知道没有任何本地优化可以担心我可以安全地应用简单的爬山算法来解决问题而不是更复杂的搜索算法,例如GA。
很抱歉,如果这是一个基本的
答案 0 :(得分:3)
没有
大多数现实世界的优化问题都是NP难问题的具体实例。 “NP-hard”意味着在最坏的情况下(“NP”)可以快速验证其解决方案的每个问题都可以编码为特殊情况(“-hard”)。
我认为任何人都不知道任何NP-hard问题的爬山式启发式算法,其中每个步骤都可以在最坏情况下有效地实施,并且最终总是返回最佳解决方案。 (我可能会对此错误;这是一个比“我们不知道任何NP难问题的任何多项式时间算法”更强的陈述,我更确定。)
顺便说一句,如果您有兴趣为大型硬问题寻找全局最优解决方案,我不建议过分依赖爬山,遗传算法,模拟退火等等。如果您有兴趣为大型简单问题找到全局最优解决方案,我建议不要使用它们。研究和利用问题的结构几乎总是有用的,或者至少使用像混合整数编程或约束编程这样的框架,可以利用它能找到的东西。
答案 1 :(得分:3)
您可以查看一些内容。如果你能证明你有http://en.wikipedia.org/wiki/Convex_function那么"凸函数的任何局部最小值也是全局最小值。严格凸函数最多只能有一个全局最小值#34;
通常,您可以证明x处的局部最小值意味着f(x)处的局部最小值,其中f()可能例如对x的坐标进行置换/重命名x中的变量。例如,旅行商问题的解决方案是按顺序访问的点列表,并且对这种解决方案的任何循环轮换具有相同的分数。这是一个非常大的提示,至少,你试图最小化的函数不是严格凸的,也可能不是凸的。
如果你写了一个爬山求解器,你当然可以从多个随机开始运行它,看它是否一直收敛到同一个地方。