Как кодировать линейную комбинацию в Gurobi - PullRequest
0 голосов
/ 18 октября 2018

Я нашел следующий пример о том, как кодировать ограничение: «сумма для всех a_ {i, j} * x_ {i, j} с элементом j из j равна <= 5 для всех i в I».(извините, я не знаю, как правильно написать это в коде, вот первая попытка): </p>

\sum{a_{i,j}*x_{i,j}} <= 5 

в питоне Gurobi:

m.addConstr(x.prod(a,i,'*') <=5 for i in I)

Я был бы очень признателен, есликто-то может объяснить мне это выражение!

Вот что я понимаю: m обычно используется как переменная для хранения модели, в программе мы начинаем с m = Model() для создания пустой модели.Мы добавляем одно ограничение с addConstr(), и x должен быть введен как переменная.метод x.prod() создает линейную комбинацию своих параметров.Однако я не знаю, как интерпретировать эти три параметра a, i, '*' i является частью цикла for, он начинается с 1 и затем увеличивается на единицу до тех пор, пока не будет достигнут последний элемент I.'*' используется в качестве подстановочного знака и будет обращаться только к любому элементу.Но что эта комбинация a, i, '*' говорит мне?

1 Ответ

0 голосов
/ 20 октября 2018

a является параметром и имеет два индекса i, j.«*» означает для всех j.Используя '*', вам не нужно "для цикла" для j, как "для цикла" для i.Вы можете увидеть это в явном виде на слайте, который имеет два "для цикла".

...