在 python 中使用 docplex 求解器解决 0-1 整数规划问题。
T_1_d = int((180+8*15-lon-math.acos(math.tan(10547*(math.pi)/81000*math.cos(2*(math.pi)*(date+9)/365))*math.tan(lat*(math.pi)/180))*180/(math.pi))/15)
T_1_d1 = int((180+8*15-lon-math.acos(math.tan(10547*(math.pi)/81000*math.cos(2*(math.pi)*(date+10)/365))*math.tan(lat*(math.pi)/180))*180/(math.pi))/15)
model = Model()
var_list = [i for i in range(T_1_d, T_1_d1+24)]
B = model.binary_var_list(var_list, lb=0, name='B')
model.maximize(A*O*C_0*3600*sum(B[i])/1e9 - Q_0*A/(1000*E)*sum(B[i]*F[i]) - H*D_O*A*P_0/1e4)
运行代码报如下错误:</p>
TypeError: 'Var' object is not iterable.
然后我写了B = iter(B)
,报如下错误:</p>
TypeError: 'list_iterator' object is not subscriptable.
然后我把索引去掉,转到B[i]
,B
报如下错误:</p>
TypeError: can't multiply sequence by non-int of type 'list_iterator'
的类型B
是list
,的类型B[i]
是docplex.mp.linear.Var
。我试图int(B[i])
改变它的类型,但我失败了。
我不知道如何纠正。希望得到您的帮助,谢谢!