В приведенном выше коде произошла ошибка в один символ.Вы написали:
prob += lpSum([x[i][j][k]] * container_cap[k] for k in product) <= lpSum([z[i][j]])
В этом примере вы пытаетесь умножить список одного элемента [x[i][j][k]]
на потенциально нецелое число container_cap[k]
.Вот почему вы выдаете ошибку.В python вы можете дублировать список n раз, умножив его на n.Но n должно быть целым числом.
Я думаю, что вы хотели написать:
prob += lpSum([x[i][j][k] * container_cap[k] for k in product]) <= lpSum([z[i][j]])
Здесь вы берете сумму списка элементов, по одному элементу для каждого элемента.k
в списке product
, который вы предположительно уже определили, и затем говорите, что список должен быть меньше, чем другое значение.
Кроме того, если я неправильно понял вашу модель, вторая lpSum
не обязательно.Вы в основном говорите, что количество контейнеров, запланированных от i
до j
, должно быть достаточным, чтобы вместить весь продукт, запланированный от i
до j
;так что я думаю, что вы хотите следующее:
prob += lpSum([x[i][j][k] * container_cap[k] for k in product]) <= z[i][j]