Gurobi - addConstr: неподдерживаемые типы операндов для -: 'bool' и 'NoneType' - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть следующий фрагмент кода в Python для добавления нового ограничения:

for o in range(num_origins):
    for d in range(num_destinations):
        for i in range(num_launchpads):
            for j in range(num_launchpads):
                model.addConstr(ground_time_min[o][d] >= ground_time_min[o][i] + (Y[o][d][i][j] - 1) * M)

Только Y[o][d][i][j] является переменной. ground_time_min - это параметр, а M - большое число, также параметр.

Когда я запускаю это, я получаю следующую ошибку:

TypeError: unsupported operand type(s) for -: 'bool' and 'NoneType'

Я знаю:

  1. Типы не являются ни bool, ни None. Итак, это не проблема.
  2. ground_time_min с левой стороны вызывает проблему.

Мне удалось решить проблему, используя один из этих двух подходов:

  1. Смещена левая сторона вправо:
model.addConstr(0 >= ground_time_min[o][i] - ground_time_min[o][d] + (Y[o][d][i][j] - 1) * M)
Использовался другой синтаксис:
model.addConstr(ground_time_min[o][d], GRB.GREATER_EQUAL, ground_time_min[o][i] + (Y[o][d][i][j] - 1) * M)

В документации сказано:

Левая сторона для нового ограничения. Может быть константой, Var, LinExpr, QuadExpr или TempConstr.

Итак, я не уверен, что не так с ограничением, сформулированным изначально. Кто-нибудь знает, что здесь происходит?

Спасибо.

...