#python #gurobi
#python #gurobi
Вопрос:
У меня есть большое количество переменных принятия решений x[i,j,k,l]
. Я использую gurobi
с python. Я хочу изменить нижнюю границу некоторых x
, которые i
в списке. Из-за количества переменных принятия решений, каков наилучший способ?
Я хочу использовать цикл for как можно меньше. в настоящее время я использую следующие строки, которые занимают слишком много времени. Могу ли я сделать это только с циклом on, то есть для i
in list?
for i in list:
for j in J:
for k in K:
for l in L:
model.getVarByName('x[{},{},{},{}]'.format(i,j,k,l)).LB==0
Ответ №1:
Это зависит от того, как вы создали эти переменные. Если у вас есть они доступны в виде многомерного multidict с этими индексами, вы можете получить к ним доступ сразу, не перебирая все измерения и индексы. Вам следует избегать получения переменных по имени.
list = ['a','b','c']
x = model.addVars(list, J, K, L)
[model.setAttr('LB', x['a',j,k,l], 0) for i in I for k in K for l in L]
Вы также можете переосмыслить, являются ли 4-мерные переменные наиболее эффективным способом моделирования вашей проблемы.
Ответ №2:
На самом деле, вы можете установить нижнюю границу группы переменных с помощью одного простого оператора
model.setAttr("LB", x, 0)