Решение задачи целочисленного программирования 0-1 с использованием docplex solver в python.
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)
Когда я запускаю код, он сообщает о следующей ошибке:
TypeError: 'Var' object is not iterable.
Затем я написал B = iter(B)
, он сообщает о следующей ошибке:
TypeError: 'list_iterator' object is not subscriptable.
Затем я удаляю индекс, поворачиваю B[i]
в B
, он сообщает о следующей ошибке:
TypeError: can't multiply sequence by non-int of type 'list_iterator'
тип B
равен list
, тип B[i]
равен docplex.mp.linear.Var
. Я пытался int(B[i])
изменить его тип, но мне не удалось.
Я не знаю, как исправить. Надеюсь на вашу помощь, спасибо!