【问题标题】:Solving an inequality for minimum value求解最小值的不等式
【发布时间】:2008-10-22 19:48:55
【问题描述】:

我正在研究一个归结为一组方程和不等式的编程问题:

x[0]*a[0] + x[1]*a[1] + ... x[n]*a[n] >= D
x[0]*b[0] + x[1]*b[1] + ... x[n]*b[n] =  C

我想求解X 的值,这将给出C 的绝对最小值,给定输入D 和列表以及AB,由a[0 - n]b[0 - n ] 组成.

我目前正在用 Python 解决这个问题,但问题通常与语言无关。

澄清更新:系数x[0 - n] 仅限于非负整数集。

【问题讨论】:

  • 乍一看,这个问题似乎有多种解决方案。你能提供一些实际数据来看看吗?
  • 让 x[0] ... x[n] 大于或等于零?
  • 是的,他们有。感谢您的澄清问题。
  • 嗯,那我也会坚持线性规划...
  • 整数!然后是整数规划问题(难度大得多),branch&bound之类的都行。

标签: python language-agnostic equation linear-programming inequality


【解决方案1】:

这看起来像是linear programming 问题。 Simplex algorithm 通常会给出很好的结果。它基本上是在不等式划分的子空间的边界上行走,寻找最优值。

从视觉上想一想:每个不等式都表示一个半空间,一个 n 维空间中的平面,你必须在它的右侧。您的效用函数就是您要优化的功能。如果空间是封闭的,则最优值将位于封闭空间的顶点之一;如果它是开放的,那么最优值可能是无限的。

【讨论】:

    【解决方案2】:

    查看关于线性规划的wikipedia 条目。整数编程部分是您正在搜索的内容(x[i] 是整数的约束并不容易)。

    在 python 库中搜索 branch&bound、branch&cut 等(我认为它们尚未在 scipy 中实现)。

    其他有趣的链接:

    【讨论】:

      【解决方案3】:

      看起来这是一个linear programming 问题。

      【讨论】:

        【解决方案4】:

        您可能想要使用 Matlab 或 Mathematica 或查看来自 Numerical Recipes in C 的代码以了解如何实现最小化函数。提供的链接是本书 1992 年的版本。亚马逊上有更新的版本。

        【讨论】:

          【解决方案5】:

          这个company 有一个工具可以做这种事情。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2020-12-13
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-05-24
            • 2015-01-09
            相关资源
            最近更新 更多