实现“内点法”解决LP(和QP)问题

时间:2011-05-10 15:22:35

标签: language-agnostic mathematical-optimization solver linear-programming

我想看一下IPM的几个实现。最好的语言是C / C ++,Java或任何脚本语言,如python,perl。其他人也很好。

我正在寻找一个可以帮助我的好资源,

  1. 优化技术的基础知识,
  2. 内点法的基础知识及其与其他技术的基本差异,
  3. IPM类型,
  4. 算法细节和
  5. 示例实施。
  6. 我感兴趣的是作为我项目的一部分,我将使用这些想法/逻辑来解决线性或二次方程组。

    如果您有关于上述资源的任何信息,请与我们联系。

3 个答案:

答案 0 :(得分:4)

另一个开源内点线性编程求解器是用C语言编写的GLPK: http://www.gnu.org/software/glpk/http://en.wikibooks.org/wiki/GLPK

Bob Vanderbei的线性编程书(http://www.princeton.edu/~rvdb/LPbook/)是一本很好的书,用于解释内点算法在二次规划中的应用。引用的网站也有软件链接,但它似乎不是“商业质量”软件。 Vanderbei还拥有LOQO,这是一种用于二次规划的更具工业实力的内部点代码(http://www.princeton.edu/~rvdb/ps/loqo5.pdf)。内部点qp的另一个最新想法是:http://www-personal.umich.edu/~murty/Grav-QP.pdf

答案 1 :(得分:3)

单纯形法和内点法都有它们的位置。一个不是更好或更快 一般而言,你会发现每种方法在不同方面表现更好 问题类别。

对于代码,开源Coin-OR项目Clp具有用C ++实现的Simplex,Dual Simplex和Interior Point方法。

但是,如果你只是想解决一个线性或二次方程组的系统 形式f(x)= 0,那么这根本不是你想要的。如果你想要的系统是 线性,那么你需要了解直接或迭代线性求解器。如果问题 是非线性的,你应该研究牛顿方法或准牛顿方法。

祝你好运。

答案 2 :(得分:0)

首先,不要比较单纯形法和内点法。他们有解决问题的不同方法。单纯形法用于最大化或最小化函数,内点法用于确定给定函数内所有可能的点,这些函数通过加或减来满足delta(很小的值)的集合函数。您可以在此处找到有关它们的详细信息 [1]:http://www-personal.umich.edu/~murty/Grav-QP.pdf