2015-12-15 80 views
1

我有一個線性不等式系統,我想用scipy.optomize.linprog來解決它。它的代碼,我調用linprog功能:scipy中的二進制約束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 [我]只能是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] 
+0

你的意思是你想要所有的正值= 1? – EdChum

+0

我的意思是所有的值都必須是整數(無小數) –

+0

'res.astype(int)'也能工作嗎? – EdChum

回答

1

Linprog是一個LP解算器,並假定所有變量都是連續的。你在找什麼是一個混合整數編程解決方案。有關從Python調用MIP求解器的一些建議,請參閱here