Использование addVars в Gurobi для создания переменных с тремя индексами - PullRequest
0 голосов
/ 13 апреля 2020

Я довольно новичок в моделировании с интерфейсом Gurobi / python. Я хочу создать несколько переменных z с двумя индексами i, j. Я пробовал несколько методов, но каждый раз получаю ошибки. Я надеюсь, что кто-нибудь свяжется со мной и обсудит со мной этот фрагмент кода, чтобы получить переменные, как я собираюсь.

'' 'из gurobipy import GRB, quicksum, Model m = Model (' DARP ')

R = [i для i в диапазоне (1,6)] # запросов

Crn = {1: [12,13,14], 2: [15,16,17] , 3: [18,19,20], 4: [21,22,23], 5: [24,25,26]}

для r в R: z = m.addVars (list ( Crn [r]), список (Crn [r]), vtype = GRB.BINARY)

для r в R: MM = быстрая сумма (z [i, j] для i в списке (Crn [r] ) для j в списке (Crn [r]), если j! = i) print (MM) '' '

1 Ответ

0 голосов
/ 14 апреля 2020

Похоже, что вы хотите сделать что-то вроде этого:

import gurobipy as grb

m = grb.Model()
R = list(range(1,6)) # Requests
Crn = {1: [12,13,14], 2: [15,16,17], 3: [18,19,20], 4: [21,22,23], 5:[24,25,26] }

for r in R:
    # Adding variables
    z = m.addVars(list(Crn[r]),list(Crn[r]),vtype=grb.GRB.BINARY)
    m.update()

    # Constructing linear expression
    MM = grb.quicksum([z [i,j] for i in list(Crn[r]) for j in list(Crn[r]) if j!=i])
    print (MM)

Обратите внимание, что экземпляр Model необходимо обновить после добавления переменных, чтобы использовать их.

...