В модели LP, которую я решаю с помощью PuLP в python, у меня есть два набора переменных решения, например
#Variables x
x = LpVariable.dicts("Decision_x",(range(3),range(3)),0,1,LpInteger)
#Variables y
y = LpVariable.dicts("Decision_y",(range(3),range(3)),0,1,LpInteger)
После решения модели меня интересуют только те переменные, где x [i] [j] принимает значение 1. Я знаю, что с
for v in prob.variables():
if v.varValue == 1:
print(v)
Я могу напечатать все переменные с их значением, равным единице. Следовательно, все переменные x и все y с их значением, равным 1, печатаются. Как мне получить доступ только к переменным x, чтобы переменные y не печатались? Я пробовал prob.variables(x)
или prob.variables()[x]
, но пока ничего не получалось.
Затем на следующем шаге я хотел бы извлечь индексы переменных x, для которых x равен 1. Например, если x[1][3] == 1
, то я хочу найти эти индексы 1 и 3. Является ли их какой-нибудь разумный способ в PuLP чего добиться?