解决最小值的不等式

时间:2008-10-22 19:48:56

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

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

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以及{{1},我想解决D的值,它会给出绝对最小值ABa[0 - n]组成。

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

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

5 个答案:

答案 0 :(得分:11)

这看起来像linear programming问题。 Simplex algorithm通常会产生良好的效果。它基本上走了由不等式划分的子空间的边界,寻找最优。

从视觉上考虑它:每个不等式表示一个半空间,一个n维空间中的平面,你必须在它的右侧。您的实用程序功能正是您要优化的功能。如果空间是封闭的,最佳位置将是封闭空间的一个顶点;如果它是开放的,那么最佳可能是无限的。

答案 1 :(得分:3)

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

在python库中搜索branch& bound,branch& cut等(我认为它们还没有在scipy中实现)。

其他有趣的链接:

答案 2 :(得分:2)

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

答案 3 :(得分:1)

您可能希望使用Matlab或Mathematica或查看Numerical Recipes in C中的代码,以获取有关如何实现最小化函数的想法。提供的链接是1992年版的书。亚马逊提供更新版本。

答案 4 :(得分:0)

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