Ошибка «Отсутствует индекс ограничения» в ограничении Python Gurobi - PullRequest
0 голосов
/ 06 сентября 2018

Я использую gurobipy в jupyter для относительно простой задачи оптимизации, я получаю этот «Индекс отсутствующих ограничений» при добавлении одного из моих ограничений. shipment_volumes и rate_keys - это два обычных фрейма данных. Вот как я определил мои параметры и двоичные переменные:

    carriers = ['UPS', 'FedEx', 'USPS'] 
    clients = shipment_volumes['Client_Code'].unique().tolist()
    locations = shipment_volumes['Shipping Location 
    Type'].unique().tolist()
    services = ['1DEA', '1DAM', '1DPM', '2DAM', '2DPM', '3DAY', 'GRND']
    weights = rate_keys['Bill Weight'].unique().tolist()
    zones = rate_keys['Zone'].unique().tolist()
    addresses = ['N', 'Y']

это мои списки, которые я использую для циклического определения параметров и переменных решения.

  c = list(itertools.product(services, weights,zones,addresses,carriers))
  cost = dict.fromkeys(c, value)

  d = list(itertools.product(clients, locations, services, weights, zones, 
  addresses))
  shipment_frequency = dict.fromkeys(d, 0)

Вот моя переменная решения:

 assign = m.addVars(clients, locations, services, weights, zones, 
 addresses, carriers, name = "Assign", vtype=GRB.BINARY)

И, наконец, это ограничение, которое выдает ошибку:

 m.addConstrs(quicksum(cost[s, w, z, r, 'UPS']*shipment_frequency[i, j, s, w, z, r] * assign[i, j, s, w, z, r, 'UPS'] \
                  for i in clients for j in locations for s in services for w in weights for z in zones for r in addresses ) >= 230000000 , "C01")

AttributeError Traceback (последний вызов был последним) model.pxi в gurobipy.Model.addConstrs (../../src/python/gurobipy.c:89382)()

model.pxi в gurobipy.Model .__ genexpr_key (../../src/python/gurobipy.c:49846)()

AttributeError: объект 'TempConstr' не имеет атрибута 'gi_frame'

Во время обработки вышеуказанного исключения произошло другое исключение:

KeyError Traceback (последний вызов был последним) в () ----> 1 m.addConstrs (быстрая сумма (стоимость [s, w, z, r, «UPS»] * shipment_frequency [i, j, s, w, z, r] * назначить [i, j, s, w, z, r, 'UPS'] для i в клиентах для j в местоположениях для s в службах для w в весах для z в зонах для r в адресах)> = 230000000, "C01")

model.pxi в gurobipy.Model.addConstrs (../../src/python/gurobipy.c:89435)()

KeyError: 'Отсутствует индекс ограничения'

...