求解带约束的线性方程

时间:2019-04-09 19:35:59

标签: python linear-programming

我对线性编程这个主题还很陌生,希望能有一些指导。

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

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

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

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

1 个答案:

答案 0 :(得分:0)

您的问题可以表示为

gremlin> g.V().has('fileName','ext',within(".ace", ".arj", ".iso", ".rar", ".gz", ".acrj", ".lnk", ".z", ".tar", ".xz", ".pdf")).
......1>   project('FILEVALUES','FILENAME').
......2>     by(__.in('hasName').
......3>        project('FILE','INCIDENT').
......4>          by(valueMap(true)).
......5>          by(__.in('containsFile').valueMap())).
......6>     by()
==>[FILEVALUES:[FILE:[id:5,fileSize:[432534],id:[100],label:file],INCIDENT:[reportedON:[2/15/2019 8:01:19 AM],id:[11]]],FILENAME:v[8]]

要遵守

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

可以很容易地将其输入到线性编程程序包中,例如pulp。我比Python用户更多的是R用户,因此我无法提供详细信息。您也可以online解决该问题,而无需进行任何编程。

编辑:重新阅读您的问题,我发现您想要的解决方案不是连续的(例如,您似乎不是在寻找[2.5,7.5]作为解决方案),而是限于整数值。然后,该问题将称为“混合整数问题”,而不是“线性问题”。但是,如果可以将变量x1+x2=10 3x1-x2<=0 x2<=20 (note that this constraint follows from x1,x2>=0 and their sum being 10) x1声明为整数,那么Pulp应该能够解决它。

另一点是,如果您在给定约束的所有整数解之后。关于stackoverflow的问题已有some discussions,但是我不确定纸浆是否可以做到这一点。