内点法相对于线性优化的单纯形法有哪些优缺点?


14

据我了解,由于线性程序的解法总是出现在其多面体可行集的顶点(如果存在解,并且假设最小化问题,则最佳目标函数值从下面限定),那么如何在线性程序中进行搜索内部可行区域会更好吗?它会收敛更快吗?在什么情况下使用单纯形法优于内点法会更有利?在代码中实现一个比另一个更容易吗?


您的陈述之一是不正确的。凸优化问题的解决方案并不总是出现在边界上。取,例如,,其中最优解发生在,这是在可行区域的内部。另外,在线性编程的上下文之外,单纯形法通常指的是Nelder-Mead单纯形法,它甚至可能无法收敛到大于1的最优解。对于凸编程,不建议使用此方法。请修改您的问题,以确保其准确性和正确性。X[-1个1个]X2X=0
Geoff Oxberry 2012年

用“线性优化”代替“凸优化”会更合适吗?
保罗

是的,那么你的说法是正确的。感谢您编辑问题。
Geoff Oxberry 2012年

单纯形法的问题在于它不能推广到非线性问题,即大多数实际问题。

Answers:


17

根据个人经验,我会说,单纯形方法比内部点方法更容易理解如何实现,这是基于在MATLAB中实现原始单纯形和基本内部点方法(作为线性编程类的一部分)的个人经验, 。原始单纯形的主要障碍是确保正确实施I期和II期,以及正确实施反循环规则。为线性编程实现内点方法的主要障碍往往是正确实现迭代方法以及相应地缩放势垒参数。

您可以在有关线性编程的教科书中更全面地讨论每种算法的优缺点,例如Bertsimas和Tsitsiklis的线性优化简介。(免责声明:我从这本教科书中学习了线性编程,并从Bertsimas的妻子那里在麻省理工学院学习了线性编程。)以下是一些基础知识:

单纯形的优点:

  • 鉴于决策变量,通常是在收敛Ø ñ 业务与Ø ñ 支点。ñØñØñ
  • 利用问题的几何形状:访问可行集的顶点并检查每个访问的顶点的最优性。(在原始单纯形中,可以将降低的成本用于此检查。)
  • 适用于小问题。

单纯形的缺点:

  • ñØ2ñ
  • 对于大问题来说不是那么好,因为枢转操作变得昂贵。切割平面算法或延迟列生成算法(例如Dantzig-Wolfe)有时可以弥补这一缺点。

内点法的优点:

  • Øñ3.5大号2日志大号日志日志大号大号
  • 对于大型稀疏问题更好,因为算法所需的线性代数更快。

内点法的缺点:

  • 因为您是对的,所以它并没有那么直观的令人满意,因为这些方法不会访问顶点。他们在内部区域中徘徊,成功时就收敛于解决方案。
  • 对于小问题,单纯形可能会更快。(您可以构造病理案例,例如Klee-Minty多维数据集。)

2
一个很好的总结。Klee-Minty实际上似乎旨在混淆单纯形LP方法...
JM 2012年

@JM是的,这正是它的重点-这是一个显式构造,它表明单纯形方法不是多项式的(尽管有些变体也使内部点方法哭了)。
克里斯蒂安·克拉森2014年

感谢您提供此信息。我想知道有多少变量会使问题变大?许多?几百个?几千?
KjMag

5d一种X

3

答案很简单。从算法的角度来看,它们(简单方法和内部点方法)都是一个成熟的领域。他们在实践中都表现很好。IPM(内点方法)的良好声誉是由于其在最坏情况下的多项式复杂性。具有组合复杂性的单纯形不是这种情况。然而,组合线性程序在实践中几乎从未发生过。对于非常大的问题,IP似乎要快一些,但不是必需的规则。我认为IP可以容易理解和实施,但是可以肯定的是,其他人也可以不同意,这很好。现在,在LP中,如果解决方案是唯一的,那么它肯定是在一个顶点上(IP和Simplex在这方面都做得很好)。该解决方案也可以位于多面体的表面或边缘上,在这种情况下,相邻的顶点也是一个(或多个顶点)解决方案(同样,IP和单纯形都做得很好)。因此,它们几乎相同。


我意识到我举的例子不是线性程序;如果查看修订历史记录,则该问题的较早版本要求比较单纯形方法和内点方法以解决凸优化问题。我举了一个反例来证明我所做的修改是合理的,并鼓励原始海报纠正他的问题,他做了。
杰夫·奥克斯贝里
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.