我想使用Python中cvxpy強迫一個變量是一個整數(整數約束),但結果一直是一個浮動:強制一個變量是一個整數CVXPY
from cvxpy import *
Fi = Int()
Or = Int()
constr = [Fi <= 3000,
Or <= 3000,
Or >= 1000,
1.25*Or - Fi >= 0,
Fi >= 0,
Or >= 0]
obj= Maximize(50000*Fi + 25000*Or)
prob = Problem(obj, constr)
prob.solve()
print ("Status: ", prob.status)
print ("Fi: ", Fi.value)
print ("Or: ", Or.value)
print ("Obj: ", obj.value)
結果:
Status: optimal
Fi: 2999.9999999
Or: 2999.99999989
Obj: 224999999.992
我能做些什麼來強制它?
我曾嘗試過:
Fi = Variable()
Or = Variable()
constr = [Fi <= 3000,
Or <= 3000,
Or >= 1000,
1.25*Or - Fi >= 0,
Fi >= 0,
Or >= 0,
Fi == Int(),
Or == Int()]
網絡連接,或者是變量。不只是數字。
@nico我也嘗試過'Fi = Variable()'並添加約束條件'Fi == Int()',我不能重複。在那個問題中,他們沒有使用cvxpy – Aleharu
在你的約束條件下,1.25 *。你如何期望結果是Int? http://www.cvxpy.org/en/latest/tutorial/intro/index.html – ADL
@ADL Fi不能超過Or的125%。這並不意味着Fi必須浮動 – Aleharu