首页 > 解决方案 > 求解带约束的线性方程

问题描述

我对线性编程的主题很陌生,并希望得到任何指示。

我有一个稍微复杂的方程,但这里有一个更简单的问题版本:

x1 + x2 = 10 
#subject to the following constraints: 
0 <= x1 <= 5 and 
3x1 <= x2 <= 20 

基本上x2必须有一个大于 3 倍的值x1。所以在这种情况下,解决方案是,x1 = [0,1,2]并且相应地x2 = [10, 9, 8]

有很多材料可以最小化或最大化目标函数,但这不是其中之一。你怎么称呼解决这类问题,还有什么推荐的方法来解决这个问题,最好使用python中的一些库来找到一个或多个可行的解决方案?

标签: pythonlinear-programming

解决方案


您的问题可以表述为

min 0*x1+0*x2 ("zero coefficients")

受制于

x1+x2=10
3x1-x2<=0
x2<=20 (note that this constraint follows from x1,x2>=0 and their sum being 10)

这可以很容易地输入到诸如纸浆之类的线性编程包中。我更像是 R 用户而不是 python 用户,因此我无法提供详细信息。您也可以在没有任何编程的情况下在线解决它。

编辑:重读您的问题,我发现您想要的解决方案不是连续的(例如,您似乎不是在寻找 [2.5, 7.5] 作为解决方案),但仅限于整数值。该问题将被称为“混合整数问题”而不是“线性问题”。但是,如果您可以将 variables 声明为整数x1,则 Pulp 应该能够解决它。x2

另一点是,如果您在给定约束条件下追求所有整数解决方案。在 stackoverflow 上已经对此进行了一些讨论,但是我不确定纸浆是否可以开箱即用。


推荐阅读