Установление ограничения в модели Гуроби со скользящей нижней и верхней границей - PullRequest
0 голосов
/ 23 мая 2019

Моя модель gurobi имитирует работу батареи. Однако мне интересно, можно ли установить скользящую нижнюю и верхнюю границу для полунепрерывной переменной. Ниже приведен пример, который показывает (постоянную) верхнюю и нижнюю границу, которую я хотел бы принять другое значение за интервал. T - общее количество интервалов.

P_bat_discharge = m.addVars(T, vtype = gp.GRB.SEMICONT, name="P_bat_discharge", lb = x, ub = y)

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

Что-то вроде:

P_bat_discharge = m.addVars(T, vtype = gp.GRB.SEMICONT, name="P_bat_discharge", lb = x[t] for t in range (T), ub = y[t] for t in range (T))

1 Ответ

0 голосов
/ 24 мая 2019

Вы можете передать список значений для атрибутов lb и ub при создании переменных.Вот простой пример, который пытается получить то, чего вы хотите достичь:

import gurobipy as gp
T = 3
lbdata = [1,2,3]
ubdata = [4,5,6]

m = gp.Model()
m.addVars(3, vtype=gp.GRB.SEMICONT, lb=lbdata[0:T], ub=ubdata[0:T])
m.write('a.lp')

На моей машине это создает LP

Minimize
  0 C0 + 0 C1 + 0 C2
Subject To
Bounds
 1 <= C0 <= 4
 2 <= C1 <= 5
 3 <= C2 <= 6
Semi-continuous
 C0 C1 C2
End
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...