scipy linprog中的二元约束

时间:2015-12-15 13:42:49

标签: python numpy scipy linear-programming

我有一个线性不等式系统,我想用scipy.optomize.linprog解决它。这是我调用linprog函数的代码:

res = linprog(c, A_ub=A, b_ub=b, A_eq=A_eq, b_eq=b_eq, bounds=(0, 1), options={"disp": True})

它工作正常,它解决了我的系统,但我希望x [i]只能是0或1(没有小数)。有可能这样做吗?

[0.0, 2.1239049166742128e-16, 0.0, 0.0, 0.5217391304347825, 1.0, 
0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.47826086956521746, 0.0, 
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,0.0]

1 个答案:

答案 0 :(得分:1)

Linprog是一个LP求解器,假设所有变量都是连续的。您正在寻找的是混合整数编程求解器。有关从Python调用MIP求解器的一些建议,请参阅here